Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

shell [2019/05/31 11:49]
shell [2020/11/18 19:10] (текущий)
Строка 1: Строка 1:
 +====== shell ======
 +Когда операционная система выдает приглашение $ и вы вводите команды для выполнения, вы имеете дело не с ядром самой системы, а с неким посредником, называемым интерпретатором команд или **shell**.
  
 +Существуют две основные разновидности интерпретаторов shell: Bourne shell и С shell. В *nix- подобных системах наиболее распространены такие языки командных интерпретаторов как [[bash]], [[sh]] и ksh, но также применяются альтернативные оболочки zsh, [[csh]] и [[tcsh]], отличающиеся синтаксисом управляющих конструкций и поведением переменных.
 +
 +Стандартом POSIX (ISO/IEC 9945) (Том 3. Оболочка и утилиты) определён язык оболочки, включающий конструкции последовательного (перевод строки, точка с запятой), условного (if, case, ||, &&) и циклического (for, for in, while, until) исполнения команд, а также оператор присваивания. Стандартом также определён режим редактирования вводимых команд, являющийся подмножеством команд стандартного текстового редактора vi.
 +
 +  * [[bash]]. Усовершенствованная и модернизированная вариация командной оболочки Bourne shell ([[sh]]).
 +  * [[sh]] (Bourne shell). Данная оболочка является де-факто стандартом и доступна почти в любом дистрибутиве *nix. В Debian ссылается на [[dash]].
 +  * [[dash]] (Debian Almquist Shell).
 +  * [[csh]]. В FreeBSD ссылается на [[tcsh]]
 +  * [[tcsh]]
 +  * [[lshell]] 
 +  * ksh
 +  * zsh
 +
 +===== source =====
 +Команда **source** перечитывает файлы настроек.
 +Чтобы сделать псевдоним постоянным, вы должны добавить указанную строку в файл .profile, .bashrc (bash) или .cshrc (csh). Эти файлы считываются только во время входа в систему, так что либо выйдите из системы и войдите обратно, либо введите команду source, чтобы файлы были прочитаны снова. В bash эта команда обозначается точкой.
 +<file>
 +bash
 +$ . ~/.profile
 +csh
 +$ source ~/.cshrc
 +</file>
 +===== stdin stdout stderr =====
 +Существуют 3 файловых дескриптора: **stdin** - стандартный ввод, **stdout** - стандартный вывод (1) и **stderr** - стандартный поток ошибок (2).
 +
 +Понимаем, что оболочка([[bash]], [[tcsh]] ), при разборе параметров командной строки, читает параметры строго слева направо.<code>
 +$ rm /tmp/777.txt 2>&1 # стандартный поток ошибок будет перенаправлен в стандартный вывод
 +$ rm /tmp/777.txt >file.txt 2>&1 # stdout перенаправляется в файл, дополнительно 2>&1 мы также stderr перенаправляем в файл
 +
 +# перенаправить стандартный вывод и вывод об ошибках в файл /var/log/messages
 +*/5 * * * * root /etc/cron.d/check.sh >> /var/log/cron 2>&1
 +# отправить стандартный вывод и вывод об ошибках на YouName@example.com
 +*/22 * * * * root /etc/cron.d/check.sh 2>&1 | mail -s "Alarm" YouName@example.com
 +</code>
 +====== Ссылки ======
 +  * [[http://house.hcn-strela.ru/BSDCert/BSDA-course/ch07s02.html|Определение просмотр и изменение переменных окружения]] bash, csh.
 +  * [[http://redhat-club.org/2011/%D1%81%D0%B5%D0%BA%D1%80%D0%B5%D1%82%D1%8B-bash|Секреты BASH]] - краткий справочник
 +  * [[http://www.opennet.ru/docs/RUS/bash_scripting_guide/|Mendel Cooper. Advanced Bash-Scripting Guide. Искусство программирования на языке сценариев командной оболочки]]
 +  * [[http://rus-linux.net/nlib.php?name=/MyLDP/BOOKS/Bash-Guide-1.12-ru/bash-guide-index.html|Machtelt Garrels. Руководство по Bash для начинающих.]]
 +  * [[wpru>Bash]]
 +  * [[http://vds-admin.ru/shell-scripting/sluzhebnye-simvoly|Служебные символы используемые в shell скриптах]]

Рейтинг курсов Английский язык по Скайп