Командные оболочки (shells)

А. Новодворский

Общая информация об оболочках

Зайдя в систему, вы увидите приглашение командной строки — строку, содержащую символ $ (далее этот символ будет обозначать командную строку)[2]. Задача командного интерпретатора состоит в передаче передавать ваши команды операционной системе и прикладным программам, а их ответы -- вам. По своим задачам ему соответствует command.com в DOS, но функционально оболочки UNIX несравненно богаче. При помощи командных интерпретаторов можно писать небольшие программы — сценарии (скрипты). В Linux доступны следующие командные оболочки:

  • Bash — самая распространённая оболочка под Linux. Она ведёт историю команд и предоставляет возможность их редактирования;

  • pdksh — клон korn shell, хорошо известной оболочки в системах UNIX;

  • tcsh — улучшенная версия >C shell;

  • zsh — новейшая из перечисленных здесь оболочек; реализует улучшенное дополнение и другие удобные функции.

Оболочкой по умолчанию является Bash (Bourne Again Shell). Чтобы проверить, какую оболочку вы используете, наберите команду:

echo $SHELL

У каждой оболочки свой синтаксис. Мы рекомендуем вам использовать Bash; дальнейшие примеры построены с использованием этой оболочки.

Командная оболочка Bash

В Bash имеется несколько приёмов для работы со строкой команд. Например, используя клавиатуру, вы можете:

Ctrl-A

перейти на начало строки;

Ctrl-U

удалить текущую строку;

Ctrl-C

остановить текущую задачу.

Вы можете использовать ; для того, чтобы ввести несколько команд одной строкой. Клавиши вверх и вниз, позволяют вам перемещаться по истории команд. Для того, чтобы найти конкретную команду в списке набранных, не пролистывая всю историю, наберите Ctrl-R.

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

! номер команды

Если ввести

!!

 — запустится последняя из набранных команд.

Иногда в UNIX имена программ и команд слишком длинны. К счастью, Bash сам может завершать имена. Нажав клавишу TAB, вы можете завершить имя команды, программы или каталога. Например, предположим, что вы хотите использовать программу декомпрессии bunzip2. Для этого наберите:

bu

Затем нажмите TAB. Если ничего не происходит — значит, существует несколько возможных вариантов завершения команды.

Нажав клавишу TAB ещё раз, вы получите список имён, начинающихся с bu.

Например, в системе есть buildhash, builtin, bunzip2:

$ bu buildhash builtin bunzip2

Наберите:

n

(bunzip - это единственное имя, третьей буквой которого является n), а затем нажмите клавишу табуляции. Оболочка дополнит имя и остаётся лишь нажать Enter, чтобы запустить команду!

Заметим, что программу, вызываемую из командной строки, bash ищет в каталогах, определяемых в системной переменной PATH. По умолчанию в этот перечень каталогов не входит текущий каталог, обозначаемый ./ (точка слэш). Поэтому для запуска программы prog из текущего каталога надо дать команду

./prog

Базовые команды

Все команды, приведённые ниже, могут быть запущены как в режиме консоли, так и в графическом режиме (xterm, консоль KDE). Для получения более подробной информации используйте команду man. Пример:

man ls

Команда su

Позволяет вам получить права администратора. Когда вы набираете su, оболочка запрашивает у вас пароль суперпользователя (root). Введите пароль и нажмите Enter: теперь вы получили привилегии суперпользователя. Чтобы вернуться к правам вашего пользовательского бюджета, наберите exit[3]. Эту команду следует всегда использовать в виде su -, объяснение причин можно найти в man su.

Команда cd

Позволяет сменить каталог. Она работает как с абсолютными, так и с относительными путями. Предположим, что вы находитесь в своём домашнем каталоге и хотите перейти в его подкаталог tmp/. Для этого, введите относительный путь:

cd tmp/

Чтобы перейти в каталог /usr/bin, наберите (абсолютный путь):

cd /usr/bin/

Некоторые варианты команды:

cd ..

позволяет вам сделать текущим родительский каталог (обратите внимание на пробел между cd и ..).

cd -

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

Команда ls

ls (list) выдаёт список файлов в текущем каталоге. Две основные опции: -a — просмотр всех файлов, включая скрытые, -l — отображение более подробной информации.

Команда rm

Эта команда используется для удаления файлов. Внимание: удалив файл, вы не сможете его восстановить![4]

Синтаксис:

rm имя_файла

У данной программы существует ряд параметров. Самые часто используемые: -i — запрос на удаление файла, -r — рекурсивное удаление (т.е. удаление, включая подкаталоги и скрытые файлы).

Пример:

rm -i ~/html/*.html

Удаляет все файлы html, в вашем каталоге html.

Команды mkdir и rmdir:

Команда mkdir позволяет вам создать каталог, тогда как rmdir удаляет каталог при условии, что он пуст.

Синтаксис:

mkdir имя_каталога

rmdir имя_каталога

Команда rmdir часто заменяется командой rm -rf, которая позволяет вам удалять каталоги, даже если они не пусты[5].

Команда less

less позволяет вам постранично просматривать текст.

Синтаксис:

less имя_файла

Бывает полезно просмотреть файл перед тем, как его редактировать; основное же применение данной команды — конечное звено цепочки программ, выводящей существенное количество текста для просмотра человеком[6]. Для выхода нажмите q (quit).

Команда grep

Данная команда имеет много опций и предоставляет возможности поиска символьной строки в файле.

Синтаксис:

grep шаблон_поиска файл

Команда ps

Отображает список текущих процессов. Колонка команд указывает имя процесса, PID (идентификатор процесса) — номер процесса (используется для операций с процессом — например, отправки сигналов командой kill).

Синтаксис:

ps аргументы

Аргумент u предоставляет вам больше информации, ax позволяет вам просмотреть те процессы, которые не принадлежат вам (такие как те, что были запущены во время процесса загрузки)[7].

Команда kill

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

Синтаксис:

kill PID_номер

Иногда, необходимо будет использовать kill -9 PID_number (когда обычная команда kill не даёт желательного эффекта). Номер PID выясняется при помощи команды ps.



[2] В случае, если вы при установке настроите графический вход в систему, добраться до командной строки можно при помощи любой программы эмуляции терминала, например xterm

[3] Обычный синоним — CtrlD

[4] Существует исключение для файловой системы ext2, программа recover

[5] С этой формой команды следует быть особенно осторожным, особенно при использовании шаблонов в качестве аргументов: например, .. подходит под шаблон .* .

[6] В частности, так работает команда man

[7] Если основным выбрано ядро kernel22-secure, то вы все равно увидите только свои процессы