Latest web development tutorials

входной оболочки перенаправление вывода /

В большинстве систем UNIX принимать команды из терминала ввода и вывода генерируется отправляется обратно к терминалу. Команда, как правило, считываются из локального ввода называется стандартный ввод, по умолчанию, это происходит с вашим терминалом. Кроме того, команда обычно записывает свой вывод на стандартный вывод, по умолчанию, это ваш терминал.

Перенаправление список команд выглядит следующим образом:

команда объяснение
команда> файл Перенаправление вывода в файл.
Команда <файл Перенаправить ввод в файл.
команда >> файл Вывод будет перенаправлен в файл добавляющим.
п> файл Файл дескриптора для русских файлов перенаправлены в файл.
п >> файл Файл дескриптора п в файл дополнительные пути для перенаправления файла.
п> & м Выходной файл т и п объединяются.
п <& м Входной файл т и п объединяются.
<< Tag Содержание тегов тег начальный тег и конечный тег между в качестве входных данных.

Обратите внимание, что дескриптор файла 0, как правило, стандартный ввод (STDIN), 1 стандартный вывод (STDOUT), 2 стандартный вывод ошибок (STDERR).


перенаправление вывода

Перенаправление как правило, между командой, чтобы вставить специальные символы для достижения. В частности, эти символы показано в следующем синтаксисе:

command1 > file1

Приведенная выше команда выполнит command1 и затем выводить контент, сохраненный в file1.

Файл1 Обратите внимание, что любое содержимое, которое уже существует, будет заменено новым содержанием. Если вы хотите добавить новое содержимое в конец файла, используйте оператор >>.

примеров

Выполните следующую команду, закончившие он будет перенаправить вывод команды в пользовательских файлах (пользователей):

$ who > users

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

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

$ cat users
_mbsetupuser console  Oct 31 17:35 
tianqixin    console  Oct 31 17:35 
tianqixin    ttys000  Dec  1 11:33 

Перенаправление вывода перезаписывает содержимое файла, см следующий пример:

$ echo "本教程:www.w3big.com" > users
$ cat users
本教程:www.w3big.com
$

Если вы не хотите, чтобы содержимое файла переписывается, вы можете использовать >> добавить в файл, например:

$ echo "本教程:www.w3big.com" >> users
$ cat users
本教程:www.w3big.com
本教程:www.w3big.com
$

Ввод перенаправления

И, как перенаправление вывода, команда Unix может принимать входные данные из файла, синтаксис:

command1 < file1

Таким образом, исходная необходимость получить ввод с клавиатуры будет передаваться в командный файл, чтобы прочитать содержимое.

Примечание: Выход Перенаправление больше, чем символ (>), перенаправление ввода меньше (<).

примеров

Тогда в приведенном выше примере, нам нужно подсчитать количество строк файла пользователей, выполните следующую команду:

$ wc -l users
       2 users

Можно также перенаправить входные файлы для пользователей:

$  wc -l < users
       2 

Примечание: Результаты двух вышеупомянутых примеров различны: первый пример, имя выходного файла будет, второй не будет, потому что он знает только для чтения из стандартного ввода.

command1 < infile > outfile

Заменить ввод и вывод, выполнить Command1, входной_файл чтение из файла, а затем записать вывод в выходной файл.

Перенаправление глубины объяснения

При нормальных обстоятельствах, каждый из которых работает команда Unix / Linux откроет три файла:

  • Стандартный входной файл (STDIN): STDIN дескриптор файла 0, Unix программа по умолчанию считывает данные из стандартного ввода.
  • Стандартный выходной файл (стандартный вывод): стандартный вывод в файл с дескриптором 1, программа Unix по умолчанию для вывода STDOUT данных.
  • Стандартная ошибка (STDERR): STDERR дескриптор файла 2, программа Unix записывает сообщения об ошибках в STDERR потоке.

По умолчанию, команда> файл перенаправить стандартный вывод в файл, команда <файл STDIN перенаправлен в файл.

Если вы хотите, чтобы перенаправить поток ошибок в файл, вы можете написать:

$ command 2 > file

Если вы хотите добавить в конец файла файла STDERR, вы можете написать:

$ command 2 >> file

2 представляет собой стандартный файл ошибок () к стандартному потоку ошибок.

Если вы хотите объединить после стандартный вывод и поток ошибок перенаправляется в файл, вы можете написать:

$ command > file 2>&1

或者

$ command >> file 2>&1

Если вы хотите, чтобы перенаправить стандартный ввод и стандартный вывод, вы можете написать:

$ command < file1 >file2

Команда Команда STDIN перенаправлены на file1, перенаправить стандартный вывод в файл file2.


Вот документ

Здесь Документ Shell находится в специальных методов перенаправления, используемых для перенаправления ввода в интерактивном сценарии Shell или программы.

Его основная форма выглядит следующим образом:

command << delimiter
    document
delimiter

Это роль контента (документа) передается на два разделителем между командой в качестве входных данных.

Примечание:

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

примеров

Число строк в командной строке вычислений Здесь документа, Унитаз -l команды:

$ wc -l << EOF
    欢迎来到
    本教程
    www.w3big.com
EOF
3          # 输出结果为 3 行
$

Мы можем также здесь документ, используемый в сценарии, например:

#!/bin/bash
# author:本教程
# url:www.w3big.com

cat << EOF
欢迎来到
本教程
www.w3big.com
EOF

Реализация выше сценария выхода:

欢迎来到
本教程
www.w3big.com

/ Dev / нуль-файл

Если вы хотите, чтобы выполнить команду, но не хотите, чтобы отобразить результат на экране, вы можете перенаправить вывод в / Dev / нуль:

$ command > /dev/null

/ Dev / нуль представляет собой специальный файл, его содержимое записывается быть отброшен, если вы попытаетесь прочитать из файла, то, что не умеет читать. Тем не менее, / DEV / пустой файл очень полезно перенаправить вывод команды на него, он будет действовать как эффект "запретить выход".

Если вы хотите, чтобы защитить STDOUT и STDERR, вы можете написать:

$ command > /dev/null 2>&1

Примечание: 0 стандартный ввод (STDIN), 1 стандартный вывод (STDOUT), 2 стандартный вывод ошибок (STDERR).