Как использовать перенаправление вывода, чтобы продемонстрировать, что делает TREE
Это вопрос, который я нашел в тесте:
Запустите дерево из вашего домашнего каталога.
Объясните и продемонстрируйте, что он делает.
Используйте перенаправление вывода, чтобы сделать это.
Я не понимаю часть перенаправления вывода. Не могли бы вы объяснить это мне, пожалуйста?
2 ответа
дерево: tree перечисляет содержимое каталогов в древовидном формате. Это действительно аккуратная и полезная программа, которую вы можете использовать в командной строке для просмотра структуры вашей файловой системы.
перенаправление вывода означает сохранение команды вывода в другом месте, кроме простой печати на терминале. если вы хотите хранить tree вывод команды в файл, затем используйте команду
tree > test
это перенаправит вывод в этот файл. эта команда создаст файл test и если это уже выходит, то оно заменит контент на tree вывод команды. если вы не хотите заменять и просто хотите добавить, используйте команду
tree >> test
это добавит вывод tree команда в файл test, Вы можете указать полный путь к файлу, в котором вы хотите сохранить вывод.
Возможно, в этом контексте перенаправление вывода = перенаправление стандартного вывода ( stdout ) в обычный файл.
tree >tree_output.txt
Однако перенаправление вывода в целом означает перенаправление одного из выходных потоков по умолчанию (стандартный вывод (stdout) и стандартная ошибка (stderr), как правило, оба направлены на терминал) ко всему, что можно считать файлом (обычный файл, stderr если stdout это поток, о котором идет речь, stdout если stderr это рассматриваемый поток, канал, именованный канал (FIFO), блочное устройство, символьное устройство...), и он не ограничен перенаправлением стандартного вывода (stdout) в обычный файл, как в примере.
Таким образом, существует множество возможных перенаправлений вывода;
Для краткости предположим, что рассматриваемый результат является стандартным (stdout), это наиболее распространенные возможные перенаправления:
echo foo >file:stdoutперенаправлен в обычный файл;echo foo >&2:stdoutперенаправлен наstderr;echo foo | cat:stdoutперенаправлен на трубу;mkfifo fifo && echo foo >fifo:stdoutперенаправлен на именованный канал (FIFO);echo foo >/dev/sdX:stdoutперенаправлен на блочное устройство (НЕ ДЕЛАЙТЕ ЭТОГО - он ничего не мог сделать, кроме как испортить таблицу разделов рассматриваемого блочного устройства);
Более эзотерические перенаправления:
echo foo >/dev/tty:stdoutперенаправляется на символьное устройство, которое является текущим псевдотерминалом;- Нажмите Ctrl + Alt + F1, войдите в систему, нажмите Ctrl + Alt + F7, нажмите Ctrl + Alt + T, запустите
echo foo>/dev/tty1и нажав Ctrl + Alt + F1;stdoutперенаправляется на символьное устройство, которое оказывается первым псевдотерминалом;
Таким образом, перенаправление вывода вообще означает перенаправление одного из выходных потоков по умолчанию (стандартный вывод (stdout) и стандартная ошибка (stderr), как правило, оба направлены на терминал) ко всему, что можно считать файлом;
Для того, чтобы бежать tree Используя перенаправление вывода (и фактически показывая что-то на терминале), существует несколько способов:
tree >tree_output.txt && cat tree_output.txt: работаетtreeперенаправлениеstdoutв обычный файл;tree >&2: работаетtreeперенаправлениеstdoutвstderr;tree | cat: работаетtreeперенаправлениеstdoutк трубе;mkfifo fifo && tree >fifo: работаетtreeперенаправлениеstdoutв именованную трубу;tree >/dev/tty: работаетtreeперенаправлениеstdoutна символьное устройство (текущий псевдотерминал);- Нажмите Ctrl + Alt + F1, войдите в систему, нажмите Ctrl + Alt + F7, нажмите Ctrl + Alt + T, запустите
echo foo>/dev/tty1и нажав Ctrl + Alt + F1tree >/dev/tty1: работаетtreeперенаправлениеstdoutна символьное устройство (первый псевдотерминал);