от нуля до 0.999 | базовые знания о линуксе. Часть 2

solomon

Рядовой
Сообщения
4
Реакции
1
А вот и вторая часть подъехала!)
В этой статье пойдет речь об оболочке bash. Эта программа позволяет выполнять команды в командном окне или текстовой консоли. Кроме того, оболочка является интерпретатором команд. В то же время bash располагает собственным языком программирования, применяемым для создания оболочковых программ (shell- сценариев).
Так что же такое оболочка? Оболочка в первую очередь предназначена для вызова команд и программ Linux. Таким образом, она является своего рода интерпретатором команд (сравнимым с команда.com из мира MS-DOS). Оболочка выполняется в любом командном окне, например konsole, gnome-terminal, xterm, и в любой текстовой консоли после входа в систему (логина).
В то же время оболочка является мощным языком программирования, с помощью которого можно автоматизировать рабочие процессы. Особые оболочковые команды позволяют использовать в рамках этой программы переменные, создавать запросы и циклы и т.д. Получаемые в результате программы, в зависимости от предпочтений автора, называются командными файлами, пакетными файлами, сценариями, процедурами оболочки и т.п. Независимо от названия, речь в данном случае идет о простых текстовых файлах, которые выполняются (интерпретируются) оболочкой.
Версия. В этой статье описана bash-версия 4.n, но большая часть сообщаемой информации применима и к версии 3.n. Многие обновления версии 4.0 по умолчанию неактивны, и их нужно специально активировать (например, с помощью команды shopt –s имя в /etc/bashrc ). Если вы не знаете, с какой версией оболочки работаете, выполните следующую команду:
Bash:
echo $0
echo $BASH_VERSION
Документация. В справке man оболочке bash посвящен большой раздел. Кроме того, есть объемный справочный материал, который выводится командой info bash. Разумеется, этот файл есть и в Интернете: http://www.gnu.org/software/bash/manual/bash.html.
Другие оболочки. Почти во всех дистрибутивах Linux bash считается стандартной оболочкой для работы с оболочками и окнами терминалов. Однако, воспользовавшись системой управления пакетами вашего дистрибутива, вы можете установить и многие другие оболочки. Профессионалы Linux особенно любят Z-shell zsh. Другие варианты — оболочки Korn (ksh или pdksh) и C (csh или tcsh). Чтобы опробовать любую из этих оболочек после установки, запустите командное окно и введите в него имя любой оболочки. Команда exit выведет вас обратно в предыдущую активную оболочку. Если это самая первая оболочка будет закрыто окно терминала (или если вы используете tty вы выйдете из системы)
Приглашения при вводе. В оболочке в начале каждой строки ввода в зависимости от дистрибутива отображается имя компьютера, имя пользователя и/или название текущего каталога. Последовательность символов обычно заканчивается на $, ~, > (у обычных пользователей) или на # (у администратора).
Основная конфигурация переменой окружения PS1, которая отвечает за внешний вид приглашения, обычно осуществляется в файле /etc/bash.bashrc, в RedHat и Fedora — в /etc/bashrc. Без применения конфигурации действует PS1="\s-\v\$". В этом случае bash отображает имя оболочки и номер версии. Чтобы индивидуально настроить PS1, измените файл ~/.profile. При вводе следующей строки в качестве приглашения просто отображается текущий каталог:
# Изменения в ~/.profile
PS1="\w\$"
Здесь \u является джокерным символом для имени пользователя, \h — для имени системы, \w — для всего актуального каталога, \W — для последней части актуального каталога и \$ (или #) — для завершения приглашения. Кроме того, с помощью \[\e[0;nnm\] можно задавать цвет. Подробное описание конфигурации приглашений, а также список ANSI-кодов различных цветов находится в следующем справочном документе: http://tldp.org/HOWTO/Bash-Prompt-HOWTO/.

Сокращения и синонимы
При вводе команд для оболочки вы можете сократить себе работу по набору с помощью команды alias. Она определяет сокращения. При обработке командной строки система проверяет, содержится ли в первом слове сокращение. Если это так, то сокращение заменяется полным текстом.
Сокращения для определенных сочетаний параметров или имен файлов неприменимы, так как bash не ищет сокращений во всех параметрах команды. Однако bash распознает особые случаи, когда в одной командной строке перечисляется несколько команд (например, при использовании программных каналов, подстановке команд, последовательного выполнения команд с помощью ; ), и просматривает все имеющиеся названия команд — нет ли в них сокращений
Bash:
 alias cdb='cd ~<user_name>/long/path'
так можно сократить длинную комманду до короткого cdb
Вызовы команды alias можно применять и в виде вложений. Обратите внимание на то, что сокращения alias имеют приоритет над одноименными командами. Это свойство можно использовать для того, чтобы воспрепятствовать нежелательному вызову команды:.
user$ alias more=less
Теперь при любой попытке выполнить команду more запускается мощная программа less . Если же по каким-то причинам вам снова понадобится команда more, потребуется указать путь к ней полностью (/bin/more) или поставить перед ней обратный слэш (\more). В таком случае он препятствует интерпретации псевдонима.
Сокращения alias можно вновь удалять с помощью unalias. В противном случае сокращения остаются действительны до того, как вы покинете оболочку (то есть не позднее, чем до выхода из системы). Если после этого вам все еще будут нужны какие-либо сокращения, задайте команды alias в файлах /etc/bashrc и ~/.bashrc в вашем домашнем каталоге.
Во многих дистрибутивах некоторые сокращения псевдонимов задаются по умолчанию. Например, если все время поступает запрос от rm относительно того, следует ли удалить файл, это обычно связано с заданным псевдонимом rm=rm -i. Список всех псевдонимов, действительных в настоящий момент, возвращает команда alias. В следующих строках показано, в каких разделах дистрибутивов Debian, Fedora, SUSE и Ubuntu располагаются определения псевдонимов.
При выполнении команд в bash существуют так называемые стандартные файлы. При этом термин «файл» имеет несколько иное значение, чем обычно, — речь идет не о настоящих файлах, а о дескрипторах файлов, которые обрабатываются на уровне операционной системы как обычные файлы.
Стандартный ввод — программа, исполняемая в настоящий момент (например, bash или любая запущенная из нее команда), считывает весь стандартный ввод. Источником стандартного ввода обычно является клавиатура.
Стандартный вывод — сюда переадресовывается весь программный вывод (соответствующий списку файлов, выводимому командой ls ). Стандартный вывод обычно отображается в окне терминала.
Стандартные ошибки — в действующем терминале обычно показываются и сообщения об ошибках.
Все это, казалось бы, само собой разумеется — откуда, как не с клавиатуры, должен поступать ввод и где, как не в окне терминала, должны отображаться результаты выполнения программ и сообщения об ошибках? Однако обратите внимание, что ввод и вывод можно переадресовывать.
Например, возможен случай, в котором содержание текущего каталога должно не отображаться на экране, а сохраняться в файле. Таким образом, стандартный вывод должен переадресовываться в настоящий файл. В bash это делается с помощью символа >:
Сейчас в файле content находится список всех TEX-файлов, расположенных в текущем каталоге. Чаще всего применяется именно такой способ переадресации вывода. Однако есть еще два варианта: 2> файл переадресовывает сообщения об ошибках в указанный файл; >& файл или &> файл переадресовывают в указанный файл и сообщения об ошибках, и программный вывод. Если использовать вместо > двойной символ >>, то весь ввод дописывается в конце уже имеющегося файла.
Переадресация ввода осуществляется с помощью < файл: команды, ожидающие ввода с клавиатуры, считывают ввод из указанного таким образом файла.
 

joker777

Ефрейтор
Сообщения
9
Реакции
0
Почитаем на досуге, много информации которой не знал
 

winlock

Ефрейтор
Сообщения
5
Реакции
0
При вводе команд для оболочки мы не только экономим работу, но и время. Очень полезная инфа. Но много воды в статье тоже есть к сожалению...