среда, 3 июля 2013 г.

Странные символы в коммандной строке. Перенаправление потоков в/в процессов

> Перенаправляет стандартный поток вывода процесса в файл по указанному пути, при этом содержание файла перезаписывается
ls > files_list.txt


1> Тоже самое что и предыдущий символ

2> Перенаправляет стандартный поток ошибок процесса в файл по указанному пути, содержимое файла переписывается
node script.js 1>ok.log 2>error.log

&> Перенаправляет оба потока вывода в один файл.
node script.js &> logs_and_errs.txt 

command N > &M Делает копию из первого указанного потока во второй, при этом байты клонируются и идут в оба потока. Например, для того, чтобы сообщения об ошибках дублировались на стандартный вывод, надо дать команду 2>&1, в то время как 1>&2 дублирует stdout в stderr. Это особенно полезно когда мы перенаправляем в файл - мы одноверменно пишем в файл и видим, что туда пишется. Для подобного эфекта между приложениями используется утилита tea.

>>Тоже самое что и первый символ только в файл дописываются стоки, а не переписывается файл
ls >> files_list.txt

< Перенаправление получения стандартного ввода из указанного файла
sort < files_list.txt > sorted_files_list.txt


Выше указанные ключи коммандной строки должны ставится после всех указанных ключей вызова комманды.

| - создание pipe, перенаправление стандартного потока вывода первого процесса во второй, так мы можем связывать кучу вызовов утилит, перенаправляя результаты предыдущей в следующую, что позволяет выполнить какую-то сложную операцию состоящую из вызовов приложений.
ls -l | less


& - выполнить вызванную команду в фоне консоли (консоль не блокируется на время выполнения).
tar -czf file.tar.gz dirname &
Как только мы ввели команду, в консоли сразу выведется порядковый номер в [...], который укажет порядковый номер новосозданной джобы, и рядом айди ее процесса. Увидеть поточные джобы jobs. Чтобы вывести из фона конкретную fg num, fg %- предпослднюю, fg %+ последнюю джобу.

&& - выполнить последующую команду только в случае нормального завершения работы предыдущей команды, но нормальным считается факт возвращение 0 (exit(0)), если приложение не возвращает ничего или не ноль, то последующая команда выполняться не будет. Нужно быть внимательным с diff - у него возвращается 0 - если два файла не отличаются и 1 - если отличаются
echo "Print this" && echo " and this"


|| - выполнить следующую команду только в случае, если первая выполнилась не нормально (возвратила не 0)
diff one.txt other.txt || echo "you will see this if one.txt and other.txt are different"

false || echo "you will see this

true || echo "you will not see this


; - не взирая на то, что предыдущая команда возвратит, выполнить все перечисленные команды
false ; echo "See this" ; false ; echo "and this"

\ - означает склеить поточный текс со стекстом в следующей строке, выкинув превод строки
$ wget ftp://ftp.ncbi.nih.gov/genomes/Bacteria/\
>  Escherichia_coli_K_12_substr__W3110_uid161931/NC_007779.ptt

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

Комментариев нет:

Отправить комментарий