На сегодняшний день для операционной системы (ОС) Linux существует целый ряд систем, обеспечивающих полноценное и эффективное графическое окружение, упрощающее восприятие, использование, а иногда даже управление ОС. Однако, для администрирования и полного контроля системы самым незаменимым инструментом в Linux, как впрочем и других Unix-подобных систем, является командная оболочка. Стоит заметить, что в умелых руках и с должным уровнем опыта работа «в консоли» выполняется с большей скоростью и производительностью, чем в графической среде.
Поскольку, командная оболочка появилась раньше графических сред и была единственным в своё время чуть ли не единственным интерфейсом между пользователем и машиной, то она всячески дорабатывалась и совершенствовалась, чтобы свести к минимуму рутинную работу по набору и редактированию кода.
Какие бывают оболочки
Командных оболочек существует множество, но самой первой была Bourne shell – «оболочка Борна». Она была создана Стивеном Борном. Эта оболочка появилась ещё в 7-м издании UNIX и исполняемым файлом для неё является sh. Обычно он находится в каталоге /bin. Синтаксис Bourne shell напоминает язык Алгол 68, поскольку на основе этого языка оболочка и создавалась.
На сегодняшний день в Linux стандартной оболочкой является Bourne again shall – «возрождённая оболочка Борна» и исполняемым файлом является bash, который также находится в каталоге /bin и чаще всего в виде символической или жёсткой ссылки под именем sh.
Существую и другие командные оболочки, но они менее распространены. Так, например, оболочка C shell (sch) имеет Си-подобный синтаксис, заимствованный из языка Си. Эта оболочка имеет свободную версию tsch, которая используется по-умолчанию в системе FreeBSD. Кстати, именно в ней впервые появилось автодополнение кода.
Стоит упомянуть также и о Z shell (zsh) – это тоже свободная и современная оболочка. Отличается от остальных своей интерактивностью.
Основы работы в командной оболочке
Администрирование ОС, а уж тем более Linux не может обойтись без написания сценариев. Это просто необходимо для избавления от выполнения автоматических и рутинных действий в задачах администрирования. Но и написание самого сценария в оболочке требует знания некоторых приёмов для более быстрого и удобного редактирования кода.
Очень многие для редактирования команд в оболочке используют клавиши перемещения курсора. Это отталкивает от работы с консолью, поскольку на лишние телодвижения которых можно и нужно избегать тратится много времени. Для sh-совместимых командных оболочек, таких как sh и bash, существуют некоторые приёмы, которые следует использовать.
Например, больше всего времени тратится на набор одного и того же текста. Но клавиатурная комбинация <Ctrl + P> даёт возможность вернуться к ранее использованным командам и задействовать их снова, предварительно отредактировав.
Комбинация <Ctrl + E> перемещает курсор в конец строки, а комбинация <Ctrl + A> в её начало. Одни только эти базовые приёмы экономят много времени, а процесс написания сценариев, да и вообще администрирования становится более увлекательным, если можно так выразиться.
Нажатием сочетания клавиш <Ctrl + R> можно «отмотать» в прошлое историю использованных команд, при этом используя поиск. По каждому введённому символу ищется соответствие в истории команд.
Классическим приёмом для просмотра истории команд является использование клавиши <Стрелка вверх>.
Для придания наглядности выводимым результатам существует команда cut. Она обычно используется для извлечения частей текстовых данных, разделённых каким-либо разделителем, например, символом табуляции:
$ cut -d: -f7 < /etc/passwd | sort -u
Здесь ключ -d задаёт символ разделителя, а ключ -f – указывает поля , которые нужно включать в вывод.
Часто, опять же, для наглядности выводимых результатов, требуется отсортировать текстовые данные. Для этого служит команда sort:
$ sort -t: -k3,3 -n /etc/group1 root:х:0: bin:х:1:daemon daemon:x:2:
В приведённом выше примере вывод содержимого файла /etc/group1. Для форматирования вывода и сортировки данных здесь используются ключи -t – для установки разделителя полей, и -k – для задания сортировочного ключа. В данном случае сортируются записи с разделителем «двоеточие» по третьему полю, содержащему идентификатор группы. Наиболее часто с утилитой sort используются следующие ключи:
Ключ команды | Значение |
-b | Не учитывать в сортировке символы пробелов |
-f | Не учитывать буквенные регистры |
-k | Ключ сортировки (номера столбцов) |
-n | Поля сравниваются как целые числа |
-r | Обратный порядок сортировки |
-t | Установить разделитель полей (по умолчанию — пробельный символ) |
-u | Помещать в вывод только уникальные записи |
Основные команды для работы с файлами и каталогами
Никакое системное администрирование не обходится без работы с файловой системой, т. е. с файлами и каталогами.
Для создания файла часто используют команду cat. Вообще, эта утилита изначально предназначена для перенаправления потоков, но именно поэтому её возможности удобно использовать для создания файлов:
$ cat > my_newfile
В данном случае на вход команды направляется стандартный ввод, а результат команды, т. е. её вывод — в новый файл.
Утилиту cat можно ещё использовать и для копирования, однако, для этого лучше подходит утилита cp:
$ cp [options] source destination
Файлы, или каталоги source будут скопированы в файл или каталог destination. Причём, если destination существует, то он будет перезаписан. Использование ключа -i позволяет выдавать подтверждение в таких случаях. Также для этой команды доступны некоторые полезные опции:
Опция | Значение |
-p | Сохраняет права доступа, а также время изменения файла. При отсутствии этой опции для файла будут назначены полномочия, соответствующие запустившему команду пользователю. |
-R или -r | Сохранение исходного дерева каталогов, если source – это каталог, то все подкаталоги будут также скопированы. |
-d | Сохранение символических ссылок. Иначе будет скопирован сам файл. |
-f | Перезапись файлов без дополнительный подтверждений. |
Для перемещения/переименования файлов осуществляется командой mv:
$ mv oldname newname
У неё такой же синтаксис как и у cp и для этой команды также полезно использование ключа -i.
Для удаления каталогов и файлов следует воспользоваться командами rm и rmdir соответственно. Тут необходимо заметить, что командой rm можно удалять и каталог со всеми находящимися в нём подкаталогами и файлами, но при использовании ключа -r:
$ rm -rv folder
Дополнительный ключ -v используется здесь для вывода списка удалённый файлов и каталогов. Также для использования этой команды полезно использование опции -i.