- •Работа с командной строкой
- •Командные оболочки (shells) Общая информация об оболочках
- •Командная оболочка bash
- •Базовые команды
- •Пакет coreutils Антон Бояршинов
- •Операции над файлами и каталогами
- •Фильтры
- •Поиск по атрибутам
- •Выражения
- •Вычисления
- •Поиск Антон Бояршинов
- •Действия
- •Параметры
- •Терминалы
- •Работа с файлами
Командная оболочка bash
Командная строка в bash составляется из имени команды, за которым могут следовать ключи (опции) — указания, модифицирующие поведение команды. Ключи начинаются с символа -или --, и зачастую состоят из одной буквы. Кроме ключей, после команды могут следовать аргументы (параметры) — названия объектов, над которыми должна быть выполнена команда (часто — имена файлов и каталогов).
Ввод команды завершается нажатием клавиши Enter, после чего команда передаётся оболочке на исполнение. В результате выполнения команды на терминале пользователя могут появиться сообщения о ходе выполнения команды или об ошибках, а появление очередного приглашения командной строки (оканчивающегося символом $) — знак того, что выполнение команды завершено и можно вводить следующую.
В bash имеется несколько приёмов, облегчающих ввод и редактирование командной строки. Например, используя клавиатуру, вы можете:
Ctrl-A
перейти на начало строки, это же можно сделать, нажав клавишу Home;
Ctrl-U
удалить текущую строку;
Ctrl-C
Прервать выполнение текущей команды.
Вы можете использовать символ ; для того, чтобы ввести несколько команд в одну строку. bash записывает историю всех выполненных команд, поэтому несложно повторить или отредактировать одну из предыдущих команд. Для этого достаточно выбрать нужную команду из истории: клавиша вверх выводит предыдущую команду, вниз — последующую. Для того, чтобы найти конкретную команду среди уже выполненных, не пролистывая всю историю, наберите Ctrl-R и введите какое-нибудь ключевое слово, употребленное в той команде, которую вы ищете.
Команды, присутствующие в истории, отображаются в списке пронумерованными. Для того, чтобы запустить конкретную команду, наберите:
!номер команды
Если ввести !!, запустится последняя из набранных команд.
Иногда в Linux имена программ и команд слишком длинны. К счастью, bash сам может завершать имена. Нажав клавишу Tab, вы можете завершить имя команды, программы или каталога. Например, предположим, что вы хотите использовать программу декомпрессии bunzip2. Для этого наберите:
bu
Затем нажмите Tab. Если ничего не происходит — значит, существует несколько возможных вариантов завершения команды. Нажав клавишу Tab ещё раз, вы получите список имён, начинающихся с bu.
Например, в системе есть программы buildhash, builtin, bunzip2:
$ bu
buildhash builtin bunzip2
$ bu
Наберите n > (bunzip — это единственное имя, третьей буквой которого является n), а затем нажмите Tab. Оболочка дополнит имя и остаётся лишь нажать Enter, чтобы запустить команду!
Заметим, что программу, вызываемую из командной строки, bash ищет в каталогах, определяемых в системной переменной PATH. По умолчанию в этот перечень каталогов не входит текущий каталог, обозначаемый ./ (точка слэш). Поэтому для запуска программы prog из текущего каталога надо дать команду ./prog.
Базовые команды
Первые задачи, которые приходится решать в любой системе: работа с данными (обычно хранящимися в файлах) и управление работающими в системе программами (процессами). Ниже перечислены команды, позволяющие выполнять наиболее важные операции по работе с файлами и процессами. Только первая из них — cd — является составляющей частью собственно командной оболочки, остальные распространяются отдельно, но всегда доступны в любой системе Linux. Все команды, приведённые ниже, могут быть запущены как в текстовой консоли, так и в графическом режиме (xterm, консоль KDE). Для получения более подробной информации по каждой из команд используйте команду man, например:
man ls
cd
Позволяет сменить текущий каталог (перемещаться по файловой системе). Она работает как с абсолютными, так и с относительными путями. Предположим, что вы находитесь в своём домашнем каталоге и хотите перейти в его подкаталог tmp/. Для этого, введите относительный путь:
cd tmp/
Чтобы перейти в каталог /usr/bin, наберите (абсолютный путь):
cd /usr/bin/
Некоторые варианты использования команды:
cd ..
позволяет вам сделать текущим родительский каталог (обратите внимание на пробел между cd и ..).
cd -
позволяет вам вернуться в предыдущий каталог. Команда cd без параметров возвращает оболочку в домашний каталог.
ls
ls (list) выдаёт список файлов в текущем каталоге. Две основные опции: -a — просмотр всех файлов, включая скрытые, -l — отображение более подробной информации.
rm
Эта команда используется для удаления файлов. Внимание: удалив файл, вы не сможете его восстановить![25]. Синтаксис: rm имя_файла.
У данной программы существует ряд параметров. Самые часто используемые: -i — запрос на удаление файла, -r — рекурсивное удаление (т. е. удаление, включая подкаталоги и скрытые файлы). Пример:
rm -i ~/html/*.html
Удаляет все файлы .html, в вашем каталоге html.
mkdir, rmdir
Команда mkdir позволяет вам создать каталог, тогда как rmdir удаляет каталог при условии, что он пуст. Синтаксис:
mkdir имя_каталога
rmdir имя_каталога
Команда rmdir часто заменяется командой rm -rf, которая позволяет вам удалять каталоги, даже если они не пусты[26].
less
less позволяет вам постранично просматривать текст. Синтаксис:
less имя_файла
Бывает полезно просмотреть файл перед тем, как его редактировать; основное же применение данной команды — конечное звено цепочки программ, выводящей существенное количество текста, которое не умещается на одном экране и в противном случае слишком быстро промелькнёт[27]. Для выхода из less нажмите q (quit).
grep
Данная команда позволяет найти строку символов в файле. Обратите внимание, что grep осуществляет поиск по регулярному выражению, то есть предоставляет возможность задавать шаблон для поиска сразу целого класса слов. На языке регулярных выражений можно составлять шаблоны, описывающие6 например, такие классы строк: «четыре цифры подряд, окружённые пробелами». Очевидно, такое выражение можно использовать для поиска в тексте всех годов, записанных цифрами. Возможности поиска по регулярному выражению очень широки, за более подробными сведениями вы можете обратиться к экранной документации по grep (man grep). Синтаксис:
grep шаблон_поискафайл
ps
Отображает список текущих процессов. Колонка команд указывает имя процесса, PID (идентификатор процесса) — номер процесса (используется для операций с процессом — например, отправки сигналов командой kill). Синтаксис:
ps аргументы
Аргумент u предоставляет вам больше информации, ax позволяет вам просмотреть те процессы, которые не принадлежат вам.
kill
Если программа перестала отвечать или зависла, используйте данную команду, чтобы её завершить. Синтаксис:
kill PID_номер
PID_номер здесь — идентификационный номер процесса, вы можете узнать номер процесса для каждой выполняемой программы при помощи команды ps. Обычно команда killотправляет процессу сигнал нормального завершения, однако иногда это не срабатывает и необходимо будет использовать kill -9 PID_number — в этом случае команда будет немедленно завершена системой без возможности сохранения данных (аварийное завершение). Список сигналов, которые команда kill может отправлять процессу можно получить, отдав команду kill -l.
Midnight Commander
Если вы многие годы работали в MS-DOS/Windows, то, наверное, ощущаете себя немного «не в своей тарелке». Для того, чтобы попасть в привычную среду, запустите Midnight Commanderкомандой mc. Midnight Commander — это свободный аналог Norton Commander и его популярного ныне потомка — Far. Если вы в какой-то момент сочтёте, что Midnight Commander что-то не умеет, то это, скорее всего, неверно. Ознакомьтесь с его описанием в /usr/share/doc/mc-номер_версии или дайте команду man mc.
