Настольная книга по Linux: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 118:
=== Скрипты ===
{{см. также|Практическое написание сценариев командной оболочки Bash}}
 
* ' — Строгие кавычки, передать неинтерпретируемое значение
* '''`''' — Обратные кавычки, выполнить содержимое. То же, что и $()
* '''»''' — Двойные кавычки, подстановка переменных и предотвращение разбиения на слова
* '''ping -с 1 domain.com ''';''' echo «host»''' — Пропинговать domain.com одним пакетом, затем просто вывести сообщение
* '''ping domain.com '''||''' echo «bad host»''' — Пропинговать domain.com, в случае неудачи вывести сообщение
* '''ping -с 1 domain.com '''&&''' echo «ok host»''' — Пропинговать domain.com, в случае успеха вывести сообщение
* '''&''' — AND (логическое «И»)
* '''|''' — Прямая черта, она же пайп (pipe)
* '''>''' — Перенаправить вывод (stdout) в файл
* '''>>''' — Дописать в конец файла
* '''2 > file''' — Вывод ошибок (stderr) в файл
* '''2>&1''' — Вывод ошибок (stderr) туда же куда и стандартный вывод (stdout)
* '''$!''' — PID последнего запущенного в фоновом режиме процесса
* '''$0''' — Наименование текущего сценария
* '''$1, $2, $((i))''' — Первый, второй и i-тый аргументы, переданные программе. i передаётся, например, как переменная из цикла
* '''$*''' — Все аргументы сценария/команды
* '''$@''' — Каждый из переданных программе аргументов
* '''$((<выражение>))''' — Выражение в скобках вычисляется
* '''$#''' — Число аргументов, передаваемых сценарию
* '''$$''' — Текущий PID выполняемого сценания
* '''$-''' — Текущие опции интерпретатора, аналогично применению set
* '''$?''' — Код завершения команды. 0 обычно свидетельствует о завершении без ошибок
* '''array=(); while read -r; do array+=(«$REPLY»); done < file.txt''' — Cоздать массив array. Элементами будут строки из файла file.txt
* '''array=(); while read -r; do array+=(«$REPLY»); done < <(<function>)''' — Cоздать массив array. Элементами будет вывод функции или команды <function>
* ''' for file in * ; do '''['''[''' -z $oldest || $file -ot $oldest ''']''']''' && oldest=$file; done; echo $oldest''' — Найти самый старый файл в директории
* '''declare -A array=([one]=hello [two]=world [three]='!'); count=${#array[@]}; for element in ${!array[@]}; do echo -e «$element\t\t» «${array[$element]}\t\t» $(($count-${#array[@]})); count=$((count+1)); done''' — Создать ассоциативный массив и вывести содержимое.
* '''func() {<команды>}''' — Объявление функции. '''func''' — Вызов
* '''while true; do firefox& wait $!; done''' — перезапускает процесс firefox сразу после его окончания
* '''{<command1>&&<command2>;}''' — объединение команд в единую структуру в пределах процесса
* '''(<command1>&&<command2>)''' — выполнение команд в подшелле
* '''for ((var=1; var<101; var++)); do echo «$var»; done''' — Цикл в стиле C
* '''repeat 10 (echo выводим строку; sleep 1)''' — Повторить 10 раз команды в скобках (в zsh)
* '''rand=$((RANDOM%100)); echo «$rand»''' — Вывести случайное число от 0 до 100
 
Не забываем про фигурные скобки:
<code>$ ls
file.tmp
$ i=file.tmp
$ mv $i ${i%tmp}test
$ ls
file.test</code>
 
То же самое:
<code>$ mv file.{tmp,test}</code>
 
Дальше должно быть понятно:
<code>${var%ending-to-remove}newending
${var/find/replace}
${var//find/replace-all}
${var#prefix-to-remove}</code>
 
=== Калькуляторы ===