Подстановка команд в Bash для tty

Команда:

echo "a" | tee `tty`

Выход:

a

Команда:

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

Выход:

a
a

Файл, связанный с текущим терминалом, /dev/pts/0, Разве обе команды не должны выдавать один и тот же результат? Что мне здесь не хватает?

1 ответ

Решение

tee дублирует stdin на все файловые дескрипторы, указанные в командной строке, и на stdout, поэтому, если один из файлов это текущий терминал (вы также можете использовать -) тогда ввод будет записан дважды на стандартный вывод.

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

Другие вопросы по тегам