Информация в вопросе отрывочна. Однако пример вывода показывает больше символов в неверно закодированном дереве, чем можно было бы ожидать. Вероятно, что происходит, так это то, что дерево
работает в среде, где оно может отправлять UTF-8. Для используемых графических символов это 3 байта на специальный символ. С одной стороны (локальный или удаленный не имеет значения) OP использует что-то, что перекодирует их в UTF-8, увеличивая количество байтов (поскольку каждый из байтов в выводе ] tree
будет в диапазоне 128–255).
Например, если OP работает в xterm (с использованием luit ) и запутал ситуацию, (фактически) сообщив luit, что фактическая кодировка - en_GB
, он переведет каждое из этих 128–255 значений в 2–3 байта («обратно» в UTF-8).
Кстати, bash не имеет отношения к вопросу, потому что это tree (отдельная утилита), которая пишет текст.
Ваши команды pipe, как не конечный пункт назначения, буферизируют вывод. В конце концов он появится, но только когда накопится достаточно много вывода или команда ping завершится.
Вы можете использовать ping -c 5 google.com
, чтобы установить определенное количество пакетов, которые будут отправлены, после чего ping завершится. Ваш вывод вернется, и трубы будут работать, как ожидалось.
Редактирование: другой обходной путь использует stdbuf
, чтобы избежать буферизации труб и awk
, чтобы избежать внутренней cut
буферизации и позволяет пингу работать непрерывно:
ping www.google.com | stdbuf --output=0 awk '{print $1}' | tee /tmp/file