Внутреннее устройство Linux
Шрифт:
Вы можете добавить выводимые данные к файлу вместо его перезаписи с помощью такого синтаксиса перенаправления >>:
$ command >> file
Это удобный способ собрать все выходные данные в одном месте, когда выполняется последовательность связанных команд.
Чтобы отправить стандартный вывод какой-либо команды на стандартный вход другой команды, используйте символ вертикальной черты (|). Чтобы понять, как он работает, попробуйте набрать следующие команды:
$ head /proc/cpuinfo
$ head /proc/cpuinfo | tr a-z A-Z
Можно
2.14.1. Стандартная ошибка
Иногда при перенаправлении стандартного вывода вы можете обнаружить, что команда выводит в терминал что-то еще. Это называется стандартной ошибкой (stderr). Она является дополнительным выходным потоком для диагностики и отладки.
Например, такая команда вызовет ошибку:
$ ls /fffffffff > f
После ее выполнения файл f должен быть пустым, однако вы увидите в терминале следующее сообщение стандартной ошибки:
ls: cannot access /fffffffff: No such file or directory
Если желаете, можете перенаправить стандартную ошибку. Чтобы, например, отправить стандартный вывод в файл f, а стандартную ошибку в файл e, используйте синтаксис 2> следующим образом:
$ ls /fffffffff > f 2> e
Число 2 определяет идентификатор потока, который изменяет оболочка. Значение 1 соответствует стандартному выводу (по умолчанию), а значение 2 — стандартной ошибке.
Вы можете также направить стандартную ошибку туда же, куда осуществляется стандартный вывод, с помощью нотации >&.
Например, чтобы отправить стандартный вывод и стандартную ошибку в файл f, попробуйте такую команду:
$ ls /fffffffff > f 2>&1
2.14.2. Перенаправление стандартного ввода
Чтобы отправить файл на стандартный ввод команды, используйте оператор <:
$ head < /proc/cpuinfo
Вам может встретиться команда, которой потребуется указанный выше тип перенаправления, но поскольку большинство команд системы Unix принимает имена файлов в качестве аргументов, такое происходит нечасто. Эту команду можно было бы переписать в виде head /proc/cpuinfo.
2.15. Объяснение сообщений об ошибках
Когда у вас возникают проблемы при работе в системе, похожей на Unix (например, в Linux), вы должны читать сообщения об ошибках. В отличие от сообщений в других операционных системах, в системе Unix ошибки, как правило, точно указывают вам на то, что именно вышло из строя.
2.15.1. Структура
Большинство команд системы Unix выдает одинаковые основные сообщения об ошибках, однако окончательный вид может немного различаться для разных команд. Вот пример сообщения, которое в том или ином виде обязательно вам встретится:
$ ls /dsafsda
ls: cannot access /dsafsda: No such file or directory
Это сообщение состоит из трех частей.
• Название команды: ls. Некоторые команды опускают такую идентифицирующую информацию, и это может раздражать при написании сценариев оболочки, хотя, по сути, это не так уж и важно.
• Имя файла, /dsafsda, которое является более конкретной информацией. Указанный путь содержит ошибку.
• Сообщение об ошибке No such file or directory указывает на ошибку в имени файла.
Если собрать эти части воедино, получится нечто вроде «команда ls пыталась открыть файл /dsafsda, но не смогла, поскольку такого файла нет». Это может казаться очевидным, однако подобные сообщения сбивают с толку, если вы запустите сценарий оболочки, который содержит ошибку в другой команде.
При устранении ошибок всегда начинайте разбираться с первой ошибки. Некоторые команды сообщают о том, что они ничего не смогут сделать до выяснения причин других ошибок. Представьте, например, что вы запускаете выдуманную команду под названием scumd, которая выдает такое сообщение об ошибке:
scumd: cannot access /etc/scumd/config: No such file or directory
За ним следует огромный перечень других сообщений об ошибках, который выглядит катастрофически. Не отвлекайтесь на остальные ошибки. Скорее всего, вам всего лишь надо создать файл /etc/scumd/config.
примечание
Не смешивайте сообщения об ошибках с предупреждениями. Предупреждения часто выглядят как ошибки, но они содержат слово warning. Они говорят о наличии какой-либо неисправности, однако команда будет пытаться продолжить работу. Чтобы устранить проблему, указанную в предупреждении, вам потребуется отыскать ошибочный процесс и завершить его, прежде чем делать что-либо еще (о списке процессов и об их завершении вы узнаете из раздела 2.16).
2.15.2. Общие ошибки
Многие ошибки, которые вы встретите при выполнении команд системы Unix, являются результатом неправильных действий с файлами или процессами. Приведем «хит-парад» сообщений об ошибках.
No such file or directory
Вероятно, вы пытались получить доступ к несуществующему файлу. Поскольку ввод/вывод в системе Unix не делает различий между файлами и каталогами, это сообщение об ошибке появляется везде. Вы получите его, если попытаетесь выполнить чтение несуществующего файла, или решите перейти в отсутствующий каталог, или попробуете записать файл в несуществующий каталог и т. д.
С Д. Том 16
16. Сердце дракона
Фантастика:
боевая фантастика
рейтинг книги
Ротмистр Гордеев 2
2. Ротмистр Гордеев
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Хуррит
Фантастика:
героическая фантастика
попаданцы
альтернативная история
рейтинг книги
Наследник с Меткой Охотника
1. Десять Принцев Российской Империи
Фантастика:
попаданцы
альтернативная история
аниме
рейтинг книги
Двойник Короля
1. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Последняя Арена 3
3. Последняя Арена
Фантастика:
постапокалипсис
рпг
рейтинг книги
Третий. Том 2
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
рейтинг книги
Возлюби болезнь свою
Научно-образовательная:
психология
рейтинг книги
