Перенаправление ввода-вывода используется в сценариях оболочки. Эта функция позволяет взять вывод команды и перенаправить его как вход для другой команды, или команда может взять вход из файла вместо от стандартного входного потока или от терминала. Целый процесс помогает соединить потоки данных различными способами.

Перенаправление ввода/вывода и каналы

Одной из важных функций оболочек является способность соединить команды. Например, можно взять вывод команды и перенаправить его как вход для другой команды. Или команда может взять вход из файла вместо клавиатуры. Целый процесс выполняется перенаправление ввода/вывода мысли и каналы.

Определенный синтаксис для перенаправления ввода-вывода зависит от , которую Вы используете.

stdin, stdout, stderr

Каждая команда или программа, выполненная оболочкой, имеют 3 потока данных, связанные с ним:

  1. стандартный вход (stdin, с дескриптором файла 0) – где команды получают свой вход от (по умолчанию, ввод с клавиатуры, обеспеченный терминалом).
  2. стандартный вывод (stdout, дескриптор файла 1) – куда команды отправляют свой вывод (по умолчанию, дисплей терминала).
  3. стандартная погрешность (stderr, дескриптор файла 2) – куда команды отправляют свои сообщения об ошибках и предупреждающие сообщения (по умолчанию, дисплей терминала).

По умолчанию, stdin клавиатура и где команда обычно берет свой вход, stdout куда команда отправляет свой вывод и stderr место, где ошибки печатаются.

Перенаправление Shell

Перенаправление ввода-вывода позволяет оболочке управлять этими дескрипторами файлов. Случай общего использования является перенаправлением стандартного вывода команды в другой файл. Сингл > оператор усекает файл для обнуления длины и затем перезаписывает файл с выводом команды:

# Redirecting the output of ls command to a file $ ls -lt > file_ls.txt 

Два больших - чем знаки (>>) добавьте в файл, не усекая его:

$ ./script >> log_file.txt 

Оба stdout и stderr может быть перенаправлен в тот же файл:

# Append the output in commands.log and send the error(2) # where it points the stdout(&1) $ ls -yz >> commands.log 2>&1 

Меньше подписываются (<) используется для перенаправления ввода:

$ cat < input_file.txt 

Некоторые команды, например, ls, не берите вход, таким образом, любой вход, перенаправленный к таким командам, проигнорирован (не считанный программой).

Команда может иметь оба входных и выходных перенаправления одновременно:

$ ./script < input_file > output.log 

Дальнейшее чтение

Связанные теги

Ссылки

10
ответов

Как просмотреть вывод рабочего процесса на другой сессии удара?

Я оставил сценарий, работающий на удаленной машине от того, когда я локально работал в нем. Я могу соединиться по SSH с машиной как тот же пользователь и видеть, что сценарий работает в PS $ PS aux | grep...
15.12.2012
10
ответов

Как к grep потоку стандартной погрешности (stderr)?

Я использую ffmpeg для получения meta информации аудиоклипа. Но я неспособен к grep это. $ ffmpeg-i 01-Daemon.mp3 |grep-i Продолжительность версия SVN-r15261 FFmpeg, Copyright (c) 2000-2008 Fabrice...
31.10.2010
9
ответов

Как добавить несколько строк в файл

Я пишу сценарий удара для поиска файла, если он не существует, затем создают его и добавляют это к нему: localhost ForwardAgent Хоста да Так "строка затем новая строка 'вкладка' затем текст" я думаю, что это...
14.04.2017
9
ответов

Как я могу отправить stdout в несколько команд?

Существуют некоторые команды, которые фильтруют или действуют на вход и затем проводят его, как произведено, я обычно думаю к stdout - но некоторые команды просто возьмут stdin и сделают то, что они делают с ним, и...
08.01.2012
9
ответов

Покажите только stderr на экране, но запишите и stdout и stderr в файл

Как я могу использовать волшебство Bash достигнуть этого? Я хочу только видеть вывод stderr на экране, но я хочу, чтобы и stdout и stderr были записаны в файл. Разъяснение: Я хочу и stdout и stderr к...
21.05.2011
7
ответов

Как сказать, является ли вывод командного сценария или сценария оболочки stdout или stderr

Давайте скажем, что я выполняю командный сценарий или сценарий оболочки, и он дает мне вывод. Не зная внутренности этого командного сценария или сценария оболочки, как каждый определяет, ли вывод, был от stderr или stdout?...
24.02.2015
7
ответов

Различие между 2> &1> output.log и 2> &1 | кладет для первого удара output.log

Я хотел знать различие между следующими двумя командами 2> &1>, output.log и 2> &1 | кладет для первого удара output.log, который я видел, что один из моего коллеги использовал вторую опцию перенаправить. Я знаю...
11.09.2011
6
ответов

Передача нескольких файлов через стандартный ввод (через ssh)

У меня есть программа на удаленном хосте, выполнение которой мне нужно автоматизировать. Команда выполнения этой программы на том же компьютере выглядит примерно так: / path / to / program -a file1.txt -b file2.txt В ...
03.06.2019
6
ответов

Awk - произведите вторую строку многих .dat файлов в один файл

У меня есть несколько файлов что-то как: (в действительности я имею 80), file1.dat 2 5 6 9 7 1 file2.dat 3 7 8 4 1 3, я хочу закончить с файлом, содержащим все вторые строки. т.е. output.dat 6 9...
06.01.2019
6
ответов

Когда Вы использовали бы дополнительный дескриптор файла?

Я знаю, что можно создать дескриптор файла и перенаправить вывод к нему. например, должностное лицо 3 <>/tmp/foo # открывает fd 3. отзовитесь эхом a> &3 #, пишут в него должностному лицу 3> &-# близкий fd 3. Но можно сделать то же...
14.10.2015
6
ответов

Используя цикл с условием продолжения к ssh к нескольким серверам

У меня есть файл servers.txt со списком серверов: server1.mydomain.com server2.mydomain.com server3.mydomain.com, когда я считал файл линию за линией с тем, в то время как и повторяют каждую строку, все работы как ожидалось....
05.01.2014
6
ответов

Почему я не могу перенаправить вывод пути от одной команды до “CD”?

Я пытаюсь заставить CD принимать имя каталога, перенаправленное к нему от другой команды. Ни один из этих методов работа: $HOME эха $ | $HOME эха $ CD | xargs CD Это действительно работает: $ CD $ (повторяют $HOME)...
05.10.2012
6
ответов

Перенаправление IO и главная команда

Я пытался быстро отредактировать .hgignore файл от оболочки удара Cygwin сегодня, и я добавил строку, которая была ошибкой. Я не уверен, было ли это лучшим способом сделать это, но я быстро думал об использовании...
30.06.2011
5
ответов

Перенаправление содержания файла к команде “эхо”

У меня есть файл под названием my_file.txt, содержание которого является просто строкой Привет. Как я мог перенаправить его содержание к эху команды? Я знаю, что у меня есть команды меньше, кошка, больше..., но я должен сделать это с...
08.11.2019
5
ответов

Команда для вывода каждой строки вперед, а затем назад

Я ищу "метакоманду" xyz такую, что: (echo "foo"; echo "bar") | xyz rev вернется: foo oof bar rab Я хотел бы избежать временных файлов, т.е. я ищу более аккуратное решение, чем: ...
14.09.2019
5
ответов

Есть ли инструмент для динамического перенаправления вывода в новый файл по запросу

В настоящее время я перенаправляю вывод средства мониторинга в файл, однако я бы хотел перенаправить этот вывод в новый файл по моему запросу (с использованием привязки клавиш), не останавливая сказанное ...
04.05.2016
5
ответов

Как динамически использовать перенаправление вывода?

Я пытаюсь добавить параметр отладки в свой сценарий. Обычно я хочу скрыть любой вывод, например предупреждения и т. Д., Поэтому я помещаю> / dev / null 2> & 1 за множеством команд. Теперь, когда я хочу отладить свой ...
09.06.2015
5
ответов

Как “объединить” строки, распечатанные несколькими программами безопасно?

Предположим, что я хочу выполнить несколько программ параллельно и объединить их выводы к одному каналу: sh-c, '(повторяют qqq; эхо qqq2; повторите qqq3), и (повторите www; эхо www2; повторите www3) и (эхо...
10.02.2014
5
ответов

Программа командной строки может предотвратить свой перенаправляемый вывод?

Я стал настолько используемым, чтобы сделать это: someprogram> output.file, я делаю это каждый раз, когда я хочу сохранить вывод, который программа генерирует в файл. Я также знаю о двух вариантах этого IO...
28.12.2012
5
ответов

удар: Используйте переменную для хранения stderr|stdout перенаправления

Там какой-либо путь состоит в том, чтобы перенаправить stdout и stderr через переменную как добавляющие опции команды в сценарии? Например, у меня есть сценарий: #!/bin/bash-x ТЕСТ = ">/dev/null 2> &1" ВЫБИРАЮТ = '-p-v' mkdir $OPT...
08.05.2012
5
ответов

Как добавить строку к файлу, который имеет только корневое разрешение записи и продолжать выполнение сценария

Я пытаюсь изучить сценарии удара. Я работаю над практической проблемой, и однажды я должен добавить строку к файлу, который требует корневого разрешения записать. Код похож на это: # некоторые...
05.05.2012
5
ответов

Как читать из двух входных файлов с помощью цикла с условием продолжения

Я хотел знать, существует ли какой-либо способ считать из двух входных файлов во вложенном цикле с условием продолжения одну строку за один раз. Например, позволяет, говорят, что у меня есть два файла FileA и FileB. FileA: [jaypal: ~/Temp] кошка...
12.12.2011
5
ответов

Как я могу выполнить процесс в окне терминала и затем скрыть то окно?

Я хочу запустить Python ~/program/proxy.py в терминале, когда я загружаюсь. И затем скройте это окно терминала (потому что это - просто программа прокси, и я не хочу видеть информацию об отладке). Таким образом, как я могу добраться...
01.08.2011
4
ответа

Изгиб конвейера обратно в исходное положение.

Можно подумать, что echo foo >a кошка а | rev >a оставил бы содержащее oof; но вместо этого он остается пустым. Почему? Как иначе можно было бы применить rev к a?
27.12.2019
4
ответа

Как перенаправить stdout в файл, а stdout + stderr - в другой?

Как добиться cmd >> file1 2> & 1 1 >> file2 То есть stdout и stderr должны перенаправлять на один файл (file1), и только stdout (file2) должен перенаправлять на другой (оба в append ...
15.05.2019
4
ответа

Перенаправить в файл, включая текущую строку подсказки

Как включить перенаправленную команду себе на перенаправление файла выходных файлов? Например, echo "Hello!"> Output.txt Я хочу, чтобы содержимое вывода файла такое: Echo "Hello!"> Output.txt Привет!
10.11.2018
4
ответа

Как я полностью заставляю cronjob замолчать к/dev/null/?

На моем Рабочем столе Ubuntu и на моем debian-сервере у меня есть сценарий, который должен выполняться каждую минуту (сценарий, который называет мелкий тик моего пространства browsergame онлайн). Проблема - это на...
22.07.2018
4
ответа

Как перенаправить stderr и stdout в различные файлы и также отобразиться в терминале?

Я хочу видеть вывод команды в терминале, как будто не было никакого перенаправления. Кроме того, stderr должен быть перенаправлен к err.log, и stdout должен быть перенаправлен к stdout.log. Это было бы хорошо...
10.01.2018
4
ответа

Понимание замены команды чтения файла Bash

Я пытаюсь понять, как точно Bash рассматривает следующую строку: $ (<"$FILE") Согласно странице справочника Bash, это эквивалентно: $ (кошка "$FILE") и я могу следовать за цепью рассуждений...
03.09.2017
4
ответа

/dev/tcp послушайте вместо nc, слушают

С netcat слушателем как: nc-l <порт> <~/.bashrc, я могу захватить свой .bashrc на новой машине (не имеет nc или LDAP) с: кошка </dev/tcp / <IP> / <порт>> ~/.bashrc Мой...
17.09.2016