Материал: 396_OS_uchebnoe_posobie_part1_2012

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ГЛАВА 4. КОМАНДНАЯ ОБОЛОЧКА BASH

«В UNIX оболочка - это своего рода мать всех программ».

Линус Торвальдс, из книги

«Just for fun».

При использовании текстового интерфейса пользователь взаимодействует с компьютером (а точнее с операционной системой) при помощи команд, которые вводятся им с клавиатуры. Введённые команды интерпретируются специальной программой, называемой командной оболочкой, которая проверяет их правильность и организовывает запуск соответствующих программ. После завершения выполнения одной команды оболочка ждёт следующую и так до тех пор, пока пользователь не выйдет из системы (т.е. не выполнит команду logout).

В современных UNIX-системах, к которым относится операционная система Linux, применяются различные оболочки, отличающиеся набором функций. Наиболее популярными являются:

Bourne shell (sh), названная в честь своего создателя Стивена Борна

(Steven Bourne) из AT&T Bell Labs;

Bourne Again Shell (bash), расширенная версия предыдущей оболочки;

C shell (csh), разработанная Биллом Джоем (Bill Joy) и реализующая специальный набор команд в стиле, соответствующем языку программирования Си;

Korn shell (ksh), созданная Дэвидом Корном (David Korn) на базе Bourne

shell, но также реализующая некоторые возможности оболочки C shell. Пользователи могут использовать любую из имеющихся в системе ко-

мандных оболочек и даже переключаться между ними15. Однако в один момент времени пользователь может взаимодействовать только с одной оболочкой. После завершения регистрации в системе16 запускается та командная оболочка, которая назначена администратором системы.

Оболочка – это одна из многих программ. Программные файлы для всех командных оболочек обычно находятся в каталоге /bin. Так, например, путь к программному файлу оболочки Bourne Again Shell будет выглядеть так /bin/bash. Пользователь временно может изменить тип используемой оболочки, запустив ту, которая ему нужна.

4.1. Понятие команды. Ввод и редактирование команд

Командой называется символьная строка, вводимая пользователем для управления операционной системой и завершаемая символом перевода каретки (клавиша Enter). Команды вводятся в командной строке, обычно содержащей

15Например, если пользователю потребуются какие-либо функции отсутствующие у текущей оболочки

иимеющиеся у другой оболочки.

16В случае, если для входа используется текстовый интерфейс.

21

приглашение, за которым установлен курсор. Форма приглашения может быть различной17, но по умолчанию она имеет следующий вид:

[student@wp1 student]$_

Приглашение [student@wp1 student]$, содержит информацию о текущем пользователе (student), имени рабочей станции (wp1) и текущем каталоге (student). Далее идёт символ $, после которого установлен курсор.

Каждая команда состоит минимум из одного поля – имени команды, представляющего собой (полное) имя файла (или внутренней команды), которую требуется выполнить. Полное имя файла, т.е. содержащее путь к нему, указывается редко. Зачастую командная оболочка ищет указанный без пути файл в известных ей каталогах. Подробнее об этом будет сказано ниже.

Кроме имени команда может ещё содержать разделяемые пробелами аргументы. Если аргумент начинается с символа минус (или тире), то он называется опцией. Если – с двух минусов, то – длинной опцией. Количество и значение аргумент зависят от конкретной команды.

Например, команда для вывода содержимого домашнего каталога18 может иметь вид:

ls /home/STUDENTS/student

Здесь ls – имя команды, а /home/STUDENTS/student – аргумент, конкретизирующий работу команды, т.е. указывающий имя каталога, содержимое которого надо вывести.

Если в процессе ввода команды была допущена ошибка, то её можно исправить, используя определённые клавиши управления курсором или специальные комбинации клавиш (таблица 1). Также можно воспользоваться историей команд, в которую помещается некоторое число ранее введённых пользователем команд.

Таблица 1. Клавиши редактирования командной строки в оболочке BASH

Клавиша

Назначение

СТРЕЛКА ВПРАВО

Перемещение вправо по командной строке на один сим-

(Ctrl+F)

вол (в пределах уже введённой строки)

СТРЕЛКА ВЛЕВО

Перемещение на один символ влево

(Ctrl+B)

 

ESC+F

Перемещение на одно слово вправо

ESC+B

Перемещение на одно слово влево

HOME (Ctrl+A)

Перемещение в начало строки

END (Ctrl+E)

Перемещение в конец строки

DEL

Удаление символа справа от курсора (текущего символа)

 

 

 

17Подробнее о формате командной строки будет рассказано ниже.

18Подробнее о команде ls будет рассказано ниже.

22

Таблица 1. Клавиши редактирования командной строки в оболочке BASH

Клавиша

Назначение

BACKSPASE

Удаление символа в позиции, предшествующей курсору

Ctrl+U

Удаление левой части строки, включая символ, который

находится слева от курсора

 

ENTER (CTRL+M)

Запуск на выполнение команды, определяемой набран-

ной цепочкой символов

Ctrl+L

Очистить экран и поместить текущую команду в верх-

ней строке экрана

 

 

Поменять местами два символа: символ, на который по-

Ctrl+T

казывает курсор, и символ слева от курсора, затем, кур-

 

сор переместить на один символ вправо

ESC+T

Поменять местами два слова: слово, на которое указы-

вает курсор, и слово слева от первого

 

 

Вырезать часть строки от текущей позиции курсора до

Ctrl+K

конца строки (вырезанная часть строки сохраняется в

 

буфере, её можно вставить в другое место строки)

 

Вырезать часть строки от текущей позиции курсора

ESC+D

до конца текущего слова (если курсор указывает на

пробел между словами, то вырезается всё слово спра-

 

 

ва от курсора)

Ctrl+W

Вырезать часть строки от текущей позиции курсора до

предыдущего пробела

 

Ctrl+Y

Вставить последний вырезанный текст в позицию

курсора

 

 

Символ, на который указывает курсор, заменить на тот

ESC+C

же символ, но заглавный, а курсор переместить на пер-

 

вый пробел справа от текущего слова

 

Сделать символы данного слова заглавными, начиная с

ESC+U

символа, на который указывает курсор, а курсор устано-

 

вить на пробел справа от слова

 

Превратить символы, начиная с символа, на который

ESC+L

указывает курсор, до конца данного слова в прописные

(маленькие) буквы, а курсор установить на пробел спра-

 

 

ва от слова

 

Продление текущего слова с использованием имён фай-

TAB

лов, расположенных в каталоге или в путях поиска. Ес-

ли таких файлов несколько, то повторное нажатие TAB

 

 

выдаст их список

СТРЕЛКА ВВЕРХ

Переход к предыдущей команде в списке (движение на-

(Ctrl+P)

зад по списку)

СТРЕЛКА ВНИЗ

Переход к следующей команде в списке (движение впе-

(Ctrl+N)

рёд по списку)

23

Таблица 1. Клавиши редактирования командной строки в оболочке BASH

Клавиша

Назначение

PGUP

Переход (вызов в командную строку) к самой первой

команды, сохранённой в истории команд

 

Ctrl+R

Поиск в истории команд, начинающихся с указанных

после символов

 

Если команда не помещается в командную строку, то её можно продолжить на следующей строке, для чего текущую строку надо завершить символом «\» (обратный слеш) и нажать Enter. Командная оболочка после нажатия Enter определит, что последним символом в команде был символ «обратный слеш», и будет ожидать продолжения команды на новой строке. Точно так же можно завершить вторую, третью и последующие строки.

4.2. Электронный справочник

Для удобства пользователей в операционной системе Linux имеется электронный справочник man, содержащий информацию обо всех командах19. Чтобы получить справку по какой-либо команде, необходимо вызвать электронный справочник, указав ему в качестве параметра имя команды. Например, если необходимо получить справку по команде echo, то вызвать справочник можно так:

[student@wp1 student]$man echo

После этого на экране появится текст справки, который можно пролистывать с использованием клавиш «стрелка вниз», «стрелка вверх», PgUp, PgDown. Чтобы выйти из справочника нужно нажать клавишу «q».

Электронный справочник man имеет несколько разделов, каждый из которых содержит информацию о командах или функциях, имеющих соответствующее назначение.

Часто в разных разделах может располагаться информация о командах или функциях, имеющих одинаковые имена. Например, read – это команда получения информации от пользователя (раздел 1) и функция чтения информации из файла (раздел 2). Чтобы указать, в каком разделе необходимо искать требуемую команду, следует в команде запуска электронного справочника явно указать номер раздела. Например:

[student@wp1 student]$man 3 echo

19 Большинство справочной информации приводится на английском языке.

24

4.3. Команды работы с файлами и каталогами

4.3.1. Определение текущего каталога

Для определения имени текущего каталога можно использовать команду pwd. В любой момент только один каталог является текущим, и команды оболочки по умолчанию применяются к файлам или подкаталогам этого каталога. После регистрации в системе текущим будет домашний каталог пользователя. Перед выполнением каких-либо команд необходимо убедиться, что вы находитесь в нужном каталоге. Например:

[student@wp1 student]$pwd<Enter> /home/student

[student@wp1 student]$_

4.3.2.Изменение текущего каталога

Спомощью команды cd Вы можете сделать текущим другой каталог, указанный в качестве параметра командной строки. Например:

[student@wp1 student]$pwd<Enter> /home/student

[student@wp1 student]$cd /home/anotherstudent<Enter> [student@wp1 anotherstudent]$pwd<Enter> /home/anotherstudent

[student@wp1 anotherstudent]$_

Если выполнить команду cd без параметров, то текущим станет домашний каталог пользователя.

В качестве параметра команды cd может быть задан либо абсолютный путь (как в предыдущем примере), либо относительный. Например:

[student@wp1 student]$pwd<Enter> /home/student

[student@wp1 student]$cd ../anotherstudent<Enter> [student@wp1 anotherstudent]$pwd<Enter> /home/anotherstudent

[student@wp1 anotherstudent]$_

4.3.3. Вывод информации о содержимом каталога

Для отображения содержимого каталога (имён расположенных в нём файлов и каталогов) используется команда ls. Если не будет указано ни одного параметра, то будет выведено содержимое текущего каталога. Чтобы вывести содержимое другого каталога, необходимо указать соответствующий путь в качестве параметра. Например:

25

Источник: https://studfile.net/preview/16708918/