Грузится

Наберите для поиска

Работа с файловыми дескрипторами

Как

Работа с файловыми дескрипторами

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

expression < file

Перенаправляет содержимое файла в команду. Из часто используемых примеров можно привести отправку почты mail -s «/etc/hosts» you@domain.com < /etc/hosts, скажу только, что параметр -s воспринимается как темы отправляемого письма (s -Subject) а содержимым письма будет /etc/hosts файл.

expression > file

Перенаправить содержимое стандартного выхода в файл file. В случаи если file не существует он будет создан. В случаи если файл уже существует, и если опция noclobber выключена в оболочке файл будет перезаписан с новым содержанием. В виде примера приведу следующую команду grep 192.168 /etc/hosts > /tmp/outfile, в которой содержимое файла /tmp/outfile будет полностью заменено на результат команды.

expression >| file

Перенаправить содержимое стандартного выхода в файл file. Это перенаправление очень похоже на предыдущее, кроме того что оно пренебрегает опцией оболочки noclobber и в любом случаи перезапишет файл.

expression >> file

Перенаправляет стандартный вывод из команды expression в file и добавляет его в файл, если файл не существовал он будет создан. К команде из прошлого примера (grep 192.168 /etc/hosts > /tmp/outfile) добавим следующую команду grep 172.16 /etc/hosts >> /tmp/outfile, которая добавит свой результат в тот же файл /tmp/outfile. После чего файл будет содержать результаты обеих команд.

expression 2> /dev/null > file

Перенаправляет стандартную ошибку (stderr) из команды expression в /dev/null в то время как стандартный вывод будет перенаправлен в файл file.

expression > /dev/null 2> file

Перенаправляет стандартный вывод в /dev/null e file. В то время как стандартный вывод ошибок будет перенаправлен в файл.

expression > file 2>&1

Перенаправляет стандартного вывода и стандартного вывода ошибки в файл file. На самом деле стандартный вывод одибки stderr (2) перенаправляется в стандартный вывод (1) а уже тот в свою очередь перенаправляется в файл file.

expression &> file

Перенаправляет стандартного вывода и ошибки команды expression в файл file. Это укороченная версия предыдущего выражения ( expression > file 2>&1). Данная версия доступна в bash shell.

expression 2> file

Перенаправляет стандартную ошибку (stderr output) из команды expression в файл file. Как пример вот эта команда find /home -type f -exec grep -l «some_string» {} \; 2> /dev/null. Эта команда видает все файлы найденные командой find содержащие строку «some_string», но переведет все “permission denied” ошибки в  /dev/null.

Это нудно, но это надо знать и быть готовым применять это.

Метки:
Предыдущая
Следующая

Добавить комментарий

%d такие блоггеры, как: