В данной статье речь пойдёт о терминале и командах Linux. Терминал, или командная строка – это стандартный способ взаимодействия с сервером Linux.
Примечание: Для выполнения примеров, приведённых в статье, нужен сервер Linux. Данное руководство выполнено на сервере Ubuntu 14.04, но подходит для любого другого современного дистрибутива Linux.
Эмулятор терминала
Эмулятор терминала – это программа, которая позволяет использовать терминал в графической среде. Большинство людей используют ОС с графическим пользовательским интерфейсом (GUI), потому эмулятор терминала необходим многим пользователям Linux-сервера.
Наиболее популярными эмуляторами являются:
- Mac OS X: iTerm 2
- Windows: PuTTY
- Linux: Terminal, KDE Konsole, XTerm
Каждый эмулятор терминала имеет свой индивидуальный набор функций.
Оболочка Linux
В системе Linux оболочкой называется интерфейс командной строки, который интерпретирует команды пользователя и файлы сценариев. Существует несколько поулярных оболочек (например, оболочка Борна (sh) и оболочка С (csh)). Каждая оболочка имеет свой собственный набор функций и по-своему интерпретирует команды, но все оболочки обеспечивают перенаправление ввода и вывода, установку переменных и тестирование.
Примечание: Данное руководство выполнено в оболочке bash, которая является оболочкой по умолчанию большинства дистрибутивов Linux.
Командная строка
Впервые входя на сервер, вы видите Message of the Day (MOTD), сообщение, которое включает в себя различную информацию, например, версию дистрибутива Linux, установленную на сервер. После этого вы получаете доступ к командной строке (или к оболочке командной строки), с помощью которой можно запускать команды.
Стандартная командная строка Ubuntu 14.04 выглядит так:
8host@webapp:~$
Она содержит следующие данные:
- 8host – имя текущего пользователя;
- webapp – имя хоста;
- ~ – текущий каталог (в bash символ тильды соответствует домашнему каталогу, путь к нему – /home/8host).
- $ – символ, который означает конец командной строки, после которого появится ввод пользователя с клавиатуры.
Ниже приведён пример командной строки пользователя root, который находится в каталоге /var/log.
root@webapp:/var/log#
Обратите внимание: данная строка заканчивается символом #, это стандартный символ командной строки пользователя root. В Linux root является суперпользователем, который имеет все привилегии и может выполнить любую задачу на сервере.
Выполнение команд
Команды можно выполнять с помощью командной строки, указав имя файла (бинарного файла или сценария). По умолчанию в системах Linux установлено много стандартных команд, которые позволяют перемещаться по файловой системе, устанавливать программное обеспечение и пакеты, настраивать систему и приложения и т.п.
Каждая запущенная команда является отдельным процессом. Если команда выполняется на переднем плане (по умолчанию все команды выполняются именно так), то пользователь не сможет работать с терминалом, пока команда не будет выполнена.
Важно отметить, что в системе Linux почти всегда учитывается регистр, включая имена файлов и каталогов, команды, аргументы и опции. Если что-то не работает, проверьте написание команды.
Рассмотрим несколько базовых примеров запуска команд.
Запуск команд без опций и аргументов
Чтобы запустить команду без аргументов и опций, просто введите саму команду и нажмите RETURN.
В таком случае команда выполнит своё стандартное действие. У каждой команды индивидуальное поведение по умолчанию. К примеру, команда cd без аргументов откроет домашний каталог текущего пользователя. Команда ls без аргументов выведет список файлов и каталогов, хранящихся в текущем каталоге.
Запуск команд с аргументами
Многие команды принимают аргументы, или параметры, которые могут влиять на их поведение. К примеру, в качестве аргумента команды cdчасто используется имя каталога, в который нужно перейти. Например, чтобы перейти в /usr/bin, нужно ввести:
cd /usr/bin
Сначала нужно ввести саму команду, а после неё указать аргументы. Перейдя в новый каталог, путь в командной строке изменится.
Команды с опциями
Большинство команд имеют список опций, или флагов, которые позволяют изменять поведение команды.
Опции указываются после команды через дефис. Они бывают верхнего и нижнего регистра. Некоторые опции начинаются с двух дефисов (–). После одного дефиса можно указать несколько опций подряд, а после двух дефисов обычно идёт одна опция, состоящая из нескольких символов (обычно это описательное слово).
Для примера рассмотрим некоторые опции команды ls:
- -l: включает подробный листинг, который предоставляет дополнительные детали (права доступа, права собственности, размер файлов и т.п.).
- -a: выводит полный список файлов, которые хранятся в каталоге (включая скрытые файлы).
Флаг -l команде ls передаётся так:
ls -l
Такая команда выведет много дополнительной информации о файлах.
Как уже говорилось, опции можно группировать. Например, вы можете передать команде ls флаги -l и –a одновременно. Для этого можно запустить:
ls -l -a
Но лучше скомбинировать их так:
ls -la
Теперь команда выведет подробные данные обо всех файлах, включая скрытые.
Команды с опциями и аргументами
Опции и аргументы почти всегда можно комбинировать, запуская команду.
К примеру, чтобы просмотреть полное содержимое каталога /home, можно использовать:
ls -la /home
Такая команда вернёт подробные данные о каждом файле заданного каталога.
Переменные окружения
Переменные окружения – это значения, которые влияют на выполнение команд и процессов. При первом запуске сервера система установит несколько переменных окружения в соответствии с конфигурационными файлами по умолчанию.
Просмотр переменных
Чтобы просмотреть все переменные окружения, установленные для определённой сессии терминала, используйте env:
env
Вывод этой команды обычно очень объёмен. Найдите в нём запись PATH:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Переменная окружения PATH – это разделённый двоеточиями список каталогов, в которых оболочка будет искать исполняемые программы или сценарии при выполнении команды. Например, команда env находится в каталоге /usr/bin, но при выполнении команды не нужно указывать путь к ней, поскольку он уже указан в переменной PATH.
Значения переменных
Чтобы извлечь значение переменной, укажите перед её именем $.
Например, чтобы вывести значение переменной PATH, можно использовать команду echo:
echo $PATH
Чтобы узнать значение переменной HOME (по умолчанию это домашний каталог текущего пользователя), попробуйте перейти в домашний каталог:
cd $HOME
Если запрашиваемая переменная не установлена, терминал вернёт пустую строку.
Установка значений переменных
Чтобы установить значение переменной окружения, введите имя переменной, поставьте символ =, а затем укажите нужное значение:
ПЕРЕМЕННАЯ=значение
Обратите внимание, что если вы устанавливаете существующую переменную, её исходное значение будет перезаписано. Если переменная не существует, она будет создана.
Bash предоставляет команду export, которая экспортирует переменные, после чего дочерние процессы используют их значения. Проще говоря, эта команда позволяет использовать сценарии, которые ссылаются на экспортированные переменные окружения в текущей сессии.
Также на существующие переменные можно ссылаться при установке переменной. К примеру, если вы установили приложение в /opt/app/bin, вы можете добавить этот каталог в конец переменной PATH с помощью такой команды:
export PATH=$PATH:/opt/app/bin
Теперь запросите значение переменной PATH:
echo $PATH
Имейте в виду: установленные таким образом переменные окружения будут действительны только для текущего сеанса. То есть если вы выйдете из системы или перейдёте в новую сессию, внесенные в окружение изменения не сохранятся.
Примечание: Больше о работе с переменными можно узнать в руководстве «Чтение и установка переменных среды и оболочки на сервере Linux».