Подстановка команд в 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.