Потоки

Ввод и вывод

Записать результат команды в файл:

command > file

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

Перетирание можно запретить, для этого в оболочке bash перед выполнением команды наберите:

set –C

Добавить к файлу строки:

command >> filename

Стандартный выход одной команды на стандартный вход другой команды направляется с помощью символа вертикальной черты:

head /proc/cpuinfo | tr a-z A-Z

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

ls /aaaaa > a 2> e 
# второй поток соответствует стандартному потоку ошибок

Либо записать в тот же файл, что и основной поток:

ls /fffffffff > f 2>&1

Чтобы отправить файл на стандартный ввод, можно использовать символ <:

head < /proc/cpuinfo

Ошибки и предупреждения

Обычно ошибки состоят из 3 частей:

  1. команда
  2. уточнение
  3. описание ошибки

Ошибка вызывает остановку команды.

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

Частые ошибки:

ОшибкаКомментарий
No such file or directory
File exists
Not a directory, Is a directory
No space left on device
Permission deniedЧтение и запись без разрешенного доступа. Либо у файла не установлен бит выполнения.
Operation not permittedОбычно это попытка завершения процесса которым вы не владеете.
Segmentation fault, Bus errorSegmentation fault - скорее всего ошибка разработчика, программа попыталась обратиться к закрытой для неё области и ОС завершила по этому программу.
Bus error - доступ к памяти недолжным образом. Эти ошибки обычно возникают из-за передачи на ввод программы неверных данных.
Источник – книга «How Linux Works», Brian Ward
Редактировать на GitHub