Я ищу программу для копирования stdin в stdout, показывая управляющие символы (например, cat -v
) и не ожидая EOF (входные данные от tail -f
). У меня есть GNU | Linux; установленный cat
игнорирует флаг -u
.
3
2 ответа
3
BSD cat
опция -u
отключена буферизация вывода. От man cat
:
-u Disable output buffering.
3
GNU cat
игнорирует -u
потому что его вывод всегда небуферизован. Итак, когда вы запрашиваете небуферизованный вывод с помощью -u
, вы получаете его (но вы также получаете его, даже если вы его не просите).
У tail
GNU такое же, всегда небуферизованное поведение.
Чтобы доказать это, в одной оболочке я сделал:
while :; do echo -ne "hello\t"; sleep 1;done > testtail
который добавляет слово «привет», за которым следует вкладка, каждую секунду (без перевода строки)
В другой оболочке я сделал (cat -T
похож на cat -v
- он показывает вкладки как ^ I):
tail -f testtail | cat -T
что дает мне:
hello^Ihello^Ihello^Ihello^I ...
обновляется каждую секунду.