Я ищу программу для копирования 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 ...
обновляется каждую секунду.
