2015-08-30 2 views
1

Команда:Подстановка команд в Bash для TTY

echo "a" | tee `tty` 

Выход:

a 

Команда:

echo "a" | tee /dev/pts/0 

Выход:

a 
a 

Файл, подключенный к текущему терминалу: /dev/pts/0. Не должны ли обе команды производить одинаковый вывод? Что мне здесь не хватает?

ответ

2

tee дубликаты STDIN для всех файловых дескрипторов данных в командной строке и на стандартный вывод, так что если один из файлов, то текущий терминал (вы также можете использовать -), то вход будет записан дважды на стандартном выводе.

В первом случае stdin не подключен к tty (но к выходу команды echo), поэтому tty дает not a tty. Таким образом, команда становится echo "a" | tee not a tty, и у вас будет три файла (называемых «не» «a» и «tty»), каждый из которых содержит «a», а также «a», записанный в stdout.

Смежные вопросы