我正在尋找一個程序,可以將標準輸入複製到標準輸出,同時顯示控製字元(如cat -v
)並且無需等待 EOF (輸入來自 a tail -f
)。我有 GNU|Linux;安裝cat
的會忽略該-u
標誌。
答案1
GNUcat
忽略,-u
因為它的輸出是始終無緩衝。因此,當您使用 請求無緩衝輸出時-u
,您會得到它(但即使您不要求它,您也會得到它)。
GNUtail
具有相同的、始終無緩衝的行為。
為了證明這一點,我在一個 shell 中做了:
while :; do echo -ne "hello\t"; sleep 1;done > testtail
每秒添加“hello”一詞,後面跟著一個製表符(沒有換行符)
在另一個 shell 中我做了(cat -T
類似於cat -v
-- 它將選項卡顯示為 ^I):
tail -f testtail | cat -T
這給了我:
hello^Ihello^Ihello^Ihello^I ...
每秒更新。
答案2
BSDcat
的-u
選項會停用輸出緩衝。從man cat
:
-u Disable output buffering.