<Предыдущая | Содержание: | Следующая>
Однако, поскольку Linux - гибкая система, применять эти настройки по умолчанию необязательно. Стандартным выводом, например, на тщательно контролируемом сервере в большой среде может быть принтер.
5.1.2. Операторы перенаправления
5.1.2.1. Перенаправление вывода с помощью> и |
Иногда вам может понадобиться поместить вывод команды в файл, или вы можете захотеть выполнить другую команду на выходе одной команды. Это называется перенаправлением вывода. Перенаправление выполняется с помощью символа «>» (больше чем) или символа «|» (канал) оператор, который отправляет стандартный вывод одной команды другой команде в качестве стандартного ввода.
Как мы видели ранее, кошка Команда объединяет файлы и помещает их все вместе в стандартный вывод. При перенаправлении этого вывода в файл это имя файла будет создано - или перезаписано, если оно уже существует, поэтому будьте осторожны.
Нэнси: ~> кошка test1
несколько слов
Нэнси: ~> кошка test2
некоторые другие слова
Нэнси: ~> кошка test1 test2> test3
Нэнси: ~> кошка test3
несколько слов
Нэнси: ~> кошка test1
несколько слов
Нэнси: ~> кошка test2
некоторые другие слова
Нэнси: ~> кошка test1 test2> test3
Нэнси: ~> кошка test3
несколько слов
некоторых другими слова
Не перезаписывайте!
Будьте осторожны, чтобы не перезаписать существующие (важные) файлы при перенаправлении вывода. Многие оболочки, включая Bash, имеют встроенную функцию для защиты от этого риска: никчемный. См. Информационные страницы для получения дополнительной информации. В Bash вам нужно добавить набор -o никчемный команда вашему .bashrc файл конфигурации, чтобы предотвратить случайную перезапись файлов.
Перенаправление "ничего" в существующий файл равносильно его очистке:
Нэнси: ~> ls -l список -rw-rw-r - 1 нэнси | гомосексуалист | 117 2 апр 18:09 список |
Нэнси: ~> > список | ||
Нэнси: ~> ls -l список -rw-rw-r - 1 нэнси | гомосексуалист | 0 4 апр 12:01 список |
Этот процесс называется усечение.
Такое же перенаправление к несуществующему файлу создаст новый пустой файл с заданным именем:
Нэнси: ~> ls -l новый список
ls: newlist: нет такого файла или каталога
Нэнси: ~> > новый список
Нэнси: ~> ls -l новый список
ls: newlist: нет такого файла или каталога
Нэнси: ~> > новый список
Нэнси: ~> ls -l новый список
-rw-rw-r - 1 Нэнси Нэнси
0 апр 4 12:05 новый список
Нэнси: ~> ls -l новый список
-rw-rw-r - 1 Нэнси Нэнси
В главе 7 дается еще несколько примеров использования такого рода перенаправления. Некоторые примеры использования конвейерной передачи команд:
Чтобы найти слово в тексте, отобразите все строки, соответствующие «шаблону1», и исключите из отображения строки, также соответствующие «шаблону2»:
GREP pattern1 файл | Grep -v pattern2
Чтобы отобразить вывод каталога со списком по одной странице за раз:
ls -The | меньше
Чтобы найти файл в каталоге:
ls -l | Grep часть_имя_файла
5.1.2.2. Перенаправление ввода
В другом случае вы можете захотеть, чтобы файл был входом для команды, которая обычно не принимает файл в качестве опции. Это перенаправление ввода выполняется с помощью оператора «<» (меньше символа).
Ниже приведен пример отправки файла кому-либо с использованием перенаправления ввода.
Энди: ~> почта [электронная почта защищена] < делать
Если пользователь микрофон существует в системе, вам не нужно вводить полный адрес. Если вы хотите связаться с кем-нибудь в Интернете, введите полный адрес в качестве аргумента почта.
Читает немного сложнее, чем кот новичка файл | Почта кто-то, но это, конечно, гораздо более элегантный способ использования доступных инструментов.
5.1.2.3. Объединение перенаправлений
В следующем примере сочетается перенаправление ввода и вывода. Файл текст.txt сначала проверяется на орфографические ошибки, а вывод перенаправляется в файл журнала ошибок:
заклинание текст.txt > error.log
Следующая команда перечисляет все команды, которые вы можете использовать для проверки другого файла при использовании Меньше:
Майк: ~> меньше --help | grep -i проверять
: e [файл] Изучить новый файл.
: n * Изучите (N-й) следующий файл из командной строки.
: p * Изучите (N-й) предыдущий файл из командной строки.
: x * Изучите первый (или N-й) файл в командной строке.
Майк: ~> меньше --help | grep -i проверять
: e [файл] Изучить новый файл.
: n * Изучите (N-й) следующий файл из командной строки.
: p * Изучите (N-й) предыдущий файл из командной строки.
: x * Изучите первый (или N-й) файл в командной строке.
Команда -i Параметр используется для поиска без учета регистра - помните, что системы UNIX очень чувствительны к регистру. Если вы хотите сохранить вывод этой команды для дальнейшего использования, перенаправьте вывод в файл:
Майк: ~> меньше --help | grep -i исследуйте> исследуйте-файлы-в-меньше
Майк: ~> кошка исследует файлы в меньшем количестве
: e [файл] Изучить новый файл.
: n * Изучите (N-й) следующий файл из командной строки.
: p * Изучите (N-й) предыдущий файл из командной строки.
: x * Изучите первый (или N-й) файл в командной строке.
Майк: ~> меньше --help | grep -i исследуйте> исследуйте-файлы-в-меньше
Майк: ~> кошка исследует файлы в меньшем количестве
: e [файл] Изучить новый файл.
: n * Изучите (N-й) следующий файл из командной строки.
: p * Изучите (N-й) предыдущий файл из командной строки.
: x * Изучите первый (или N-й) файл в командной строке.
Вывод одной команды может быть передан по конвейеру в другую команду практически столько раз, сколько вы хотите, при условии, что эти команды обычно читают ввод из стандартного ввода и записывают вывод в стандартный вывод.
Иногда это не так, но тогда могут быть специальные параметры, которые предписывают этим командам вести себя в соответствии со стандартными определениями; поэтому прочтите документацию (страницы man и Info) по командам, которые вы используете, если вы столкнетесь с ошибками.
Опять же, убедитесь, что вы не используете имена существующих файлов, которые вам все еще нужны. Перенаправление вывода в существующие файлы заменит содержимое этих файлов.
5.1.2.4. Оператор >>
Вместо перезаписи данных файла вы также можете добавить текст к существующему файлу, используя два следующих друг за другом знака «больше»:
Пример:
Майк: ~> список желаний кошек
больше денег меньше работы
Майк: ~> дата >> список желаний
Майк: ~> список желаний кошек
больше денег меньше работы
Майк: ~> дата >> список желаний
Майк: ~> список желаний кошек
больше денег меньше работы
Чт, 28 февраля, 20:23:07 CET 2002
Майк: ~> список желаний кошек