Операционные системы Unix традиционно используют такие понятия, как стандартный ввод, вывод и вывод ошибки. Чаще всего ввод — это клавиатура, а вывод это на кран. Но конечно же мы можем выводить исполнение какой-то команды в файл и передавать другой команде, потому что работая в Linux, создается такая последовательность из команд, т.е результат предыдущей мы отправляем следующей и т.д
Целью данной статьи является рассмотреть:
- Перенаправление стандартных ввода, вывода и ошибок;
- Передача вывода одной команды в качестве аргументов другой;
- Получение выходных данных в файл и на стандартный вывод;
Основные понятия:
- Stdin (0) – ввод
- Stdout(1) – вывод
- Stderr (2) – вывод ошибки
- > - передать в
- >> - дописать в
- < - взять из
- | - отправить следующей команде
- Tee - отправить в файл и на стандартный вывод
- Xargs – построчно передать на ввод команде
Для начала воспользуемся командой wc которая посчитает, количество слов, символов и строк в файле wc test.txt.
Мы можем указать данной команде другой input. Мы можем ей сказать взять информацию из файла, т.е. записать вот таким образом wc < test.txt т.е. данной команде передать информацию из этого файла. И данная команда отработав посчитает в принципе то же самое. В таком варианте команда не знает с каким файлом она работает ей просто поступает вывод из файла. Файл выводит свой результат этой команде. Такая стрелочка редко используется, чаще используется стрелка в другую сторону. Например, мы можем список файлов вывести командой ls. А можем сказать, чтобы данная команда отправила результат не на наш стандартный вывод т.к. результат всех наших команд по умолчанию выводится в консоль, а например в файл ls > list.txt. По сути означает выполнить команду, а результат передать в файл. Фал можно посмотреть командой cat list.txt.
И мы можем убедится, что в данном файле находится перечень, всего что находилось в данной папке. Если мы выполним еще раз команду ls > list.txt, то данный файл каждый раз будет перезаписываться. Если же мы хотим, чтобы наш файл не перезаписывался, а дописывался, используем другую стрелочку ls >> list.txt.
И теперь вы можете видеть, что файл стал больше. Т.е. у нас записалось, то что было, а затем еще раз добавилось. Если опять выполнить команду со стрелочками >> , то опять допишется информация в файл. Вот таким образом работают “стрелочки”.