
Чтобы начать работать в терминале Linux, не нужно быть гуру администрирования — достаточно знать список базовых команд для навигации, поиска и работы с файлами. В этой статье мы разберём основные команды Linux и рассмотрим их функции, чтобы помочь вам освоиться в командной строке и более эффективно использовать возможности этой ОС.
- Навигация
- Поиск
- Работа с папками
- Работа с файлами
- Запуск исполняемых файлов в терминале
- Переименование, перемещение и копирование
После подключения к серверу Linux вы оказываетесь в домашней директории пользователя. Чтобы узнать точный путь к вашему текущему местонахождению, воспользуйтесь командой:
pwd
Она выведет текущую рабочую директорию (print working directory).
Если вам нужно перейти в другую директорию, для этого используется команда cd (change directory) с указанием пути к нужной вам директори:
cd /home
Говоря о навигации, нельзя не упомянуть сокращения для обозначения некоторых директорий Linux:
| / | корневой каталог сервера |
| . | текущая директория, в которой вы сейчас находитесь. Например, чтобы найти документ с именем find . -name hello.txt |
| .. | директория, расположенная на уровень выше текущей. Если вы находитесь в cd .. |
| ~ | домашняя директория текущего пользователя. Например, запустить скрипт sh ~/some-script.sh |
| - | предыдущая посещённая директория. Представим, что вы перешли в cd - |
Для навигации с помощью команды cd есть два формата указания пути к нужной директории: абсолютный и относительный.
Абсолютный путь — это полный путь от корневого каталога сервера «/». Например, вот такой:
/var/www/data/username/data/www/example.com/
Также к абсолютным относятся пути, в которых используется ~ — указание на домашний каталог текущего пользователя. Например, при доступе к файлу ~/.bash_profile он всегда будет открываться из одного и того же места: вместо ~ будет использоваться значение переменной окружения $HOME, которое не меняется.
Относительный путь — это неполный путь. Он указывается относительно какого-то объекта: например, текущей рабочей директории. То есть в начале отсутствует символ корневого каталога «/».
./docs/files/file.txt file.txt
Представим, что мы сейчас работаем с файлами в /var/www/data/username. Нам нужно отредактировать содержимое в директории на уровень выше — /var/www/data. Чтобы управлять данными в этой директории, нам не обязательно постоянно указывать полный путь к ним — можно работать с относительным, начиная его с «../».
Также относительные пути используются, когда нужно выполнить операцию над файлом или папкой в директории, в которой мы сейчас работаем. Для выполнения команды достаточно указать имя, и система поймёт, что мы имеем в виду объект из текущего каталога.
Чтобы отобразить список содержимого каталога, можно использовать команду ls (list). Она покажет названия объектов в текущем каталоге:
ls
Если дополнить её ключом -al, команда покажет типы данных, разрешения и скрытые объекты. Например, в этом случае она выведет в терминал подробный список содержимого /etc:
ls -al /etc
Чтобы немного упростить себе жизнь, можно использовать консольные файловые менеджеры для Linux, например mc.
Ubuntu и Debian:
apt -y install mc
CentOS:
yum -y install mc
Его особенность — примитивный графический интерфейс. Он позволяет быстро ориентироваться в структуре каталогов, перемещаться между ними, создавать новые директории. Интерфейс разбит на два окна, между которыми вы можете перемещать объекты. Помимо прочего, в нём можно работать и с помощью мыши — перемещаться с помощью двойного клика, использовать кнопки в нижней части панели.

Поиск
С помощью команды find можно найти на сервере директорию или файл по набору условий. Структура команды проста:
find [где искать] [как искать] [что искать]
Например, мы знаем название скрипта hello.txt, но не знаем, где именно на сервере он лежит. Найти его поможет команда:
find / -name "hello.txt"
/указывает, что искать надо, начиная с корневой директории сервера. Если вам известно, где может лежать искомое, можно задать путь точнее."hello.txt"— имя файла, который нам нужно найти. Если известна только часть имени, можно указать сокращённый вариант:"hello*","*.txt"
Кроме -name, команда find имеет множество опций, которые позволяют уточнить условия поиска. Вот список наиболее полезных параметров:
-type | Позволяет указать тип искомых данных: -type f — файлы, -type d — директории |
-perm | Позволяет вывести файлы с определённым уровнем доступа. Например, -perm 777 |
-empty | Отображает только пустые файлы или папки |
-user | Позволяет искать данные среди файлов, принадлежащих конкретному пользователю: -user root |
-group | Позволяет искать данные среди файлов, принадлежащих определённой группе пользователей: -group www-data |
-mtime | Позволяет задать условие относительно времени изменения:
|
-atime | Позволяет задать условие относительно времени последнего доступа, аналогично mtime |
-size | Позволяет уточнить размер (или диапазон размера) |
-exec COMMAND {} | Позволяет применить к найденным файлам команду COMMAND |
Больше информации о возможностях команды find можно узнать в документации. Здесь на помощь пользователям приходит команда man — используя её, вы сможете получить полную справочную информацию о любой команде Linux:
man find
Из встроенных инструментов поиска можно также отметить утилиту whereis. Она предназначена для поиска бинарных и системных файлов и директорий служб. Следующий пример выведет список всех объектов, имеющих прямое отношение к php:
whereis php
Работа с папками
Чтобы создать новую папку в Linux используется команда mkdir с указанием пути. Например, команда ниже создаст директорию /new в /home/user:
mkdir /home/user/new
Если нужно создать сразу несколько вложенных папок, можно использовать параметр -p. В таком случае все несуществующие директории, указанные в пути, будут созданы автоматически. Представим, что нам нужно создать вложенные папки docs/photos/2020-08-17 в текущей директории — тогда команда будет выглядеть так:
mkdir -p docs/photos/2020-08-17
Если нужно создать несколько папок за раз, можно просто перечислить их через пробел:
mkdir docs pictures games
Удалить директорию можно с помощью команды rmdir с указанием пути. При этом она будет удалена только в случае, если она пуст (можно использовать параметр --ignore-fail-on-non-empty, чтобы удалить ее в любом случае). Для удаления нескольких вложенных папок можно аналогично использовать параметр -p. Например, команда ниже удалит /photos и все папки внутри нее:
rmdir -p docs/photos
Для удаления есть более эффективный инструмент — команда rm, о ней расскажем чуть позже.
Работа с файлами
Создание
Самый простой способ создать файл в Linux — команда touch. Для этого ей достаточно только передать полный путь. Например, создадим в директории docs папку copies, а внутри неё — copies-list.txt:
touch docs/copies/copies-list.txt
Несуществующая папка copies создастся автоматически.
Если нужно создать сразу несколько файлов, можно просто перечислить их через пробел:
touch file1.txt file2.txt file3.txt file4.txt file5.txt
Ещё один способ — вызвать какой-нибудь консольный текстовый редактор с указанием полного пути к файлу. Тогда редактор автоматически создаст его и откроет для редактирования. Однако все папки придётся создать заранее, а файл придётся сохранить (даже пустой), иначе он не будет создан.
Команда ниже создаст new-file.txt с помощью редактора vi:
vi new-file.txt
Для сохранения и выхода в vi нужно нажать клавишу Esc, ввести сочетание :wq и нажать Enter. Для выхода без сохранения нужно также нажать Esc, ввести сочетание :q! и нажать Enter.
Чтобы создать пустой файл в Linux можно с помощью команды cat или команды echo:
cat > new-file.txt echo > new-file.txt
Редактирование
Для редактирования используются консольные текстовые редакторы. Самые известные — vi и nano. В некоторых дистрибутивах vi заменён на vim (vi improved, улучшенный vi) или vim.tiny
Редактор vi будет доступен вам по умолчанию на большинстве Linux-систем.

А теперь к делу. Vi (более известен как Vim) — старый, очень гибкий и при этом не очень простой в плане управления редактор. Собственно, так он и попал в популярные программистские и админские шуточки, а вопрос «как выйти из Vim?» стал практически культовым среди пользователей Linux-систем.
Запуск редактора без аргументов откроет его в режиме справки:
vi

Чтобы закрыть Vim (без сохранения), введите сочетание :q!
Если указать редактору путь к файлу, он откроет его для редактирования. Если его не существовало, то он будет создан:
vi new-file.txt
При первом входе Vim открывает файл в режиме просмотра. Он не позволяет редактировать его содержимое, но можно вводить командные последовательности, перемещаться по тексту, выполнять поиск и пр.
Чтобы начать ввод, нужно перейти в режим редактирования с помощью клавиши I. Чтобы вернуться в режим просмотра, нажмите Esc.
Перемещение по тексту выполняется с клавиатуры:
- перемещение в начало текста: Esc + дважды G
- перемещение в конец текста: Shift + G
- перемещение по строке горизонтально: стрелки ← →
- перемещение по строкам вертикально: стрелки ↑ ↓
- отображение номеров строк: Esc, введите
:set number, нажмите Enter - перемещение по номерам строк: Esc, введите
:номер строки, нажмите Enter
Для выхода с сохранением файла нажмите Esc и введите :wq!
Текстовый редактор vim — краткое руководство
Более современной и удобной альтернативой Vim считается редактор nano. Современные дистрибутивы Linux включают его по умолчанию, но на ранних версиях устанавливать придётся вручную:
Ubuntu и Debian:
apt -y install nano
CentOS:
yum -y install nano
Вызов nano без аргументов откроет пустой редактор. Можно начать ввод (при сохранении вам будет предложено указать имя и сохранить файл) или вызвать режим помощи со списком доступных команд с помощью сочетания Ctrl+G.

Для сохранения нажмите Ctrl+O — редактор предложит ввести имя файла: введите имя и нажмите Enter. Если файл существовал и имя изменять не требуется, просто нажмите Enter.
Для выхода из редактора нажмите Ctrl+X.
Чтение
Бывает, что нам нужно получить какую-то информацию из файла без необходимости редактировать его. В таком случае необязательно использовать текстовый редактор — в Linux есть и более простые инструменты.
Например, команда cat позволяет вывести в терминал всё содержимое файла, который указан в качестве аргумента:
cat example.txt

Однако, если мы заведомо знаем, что в файле большой объём информации, нет смысла выводить его целиком. Например, команды head и tail могут вывести часть содержимого с начала или конца соответственно. Если добавить к ним ключ -n, можно уточнить, сколько строк текста нужно вывести:
head -n 3 example.txt

tail -n 3 example.txt

Помимо прочего, команда tail очень удобна для чтения логов с ключом -f. В таком режиме она открывает файл в режиме ожидания и выводит все добавляемые данные. Это может пригодиться для тестирования или дебаггинга.
Иногда нам всё-таки нужно полностью просмотреть файл. При этом читать его вывод в терминале неудобно. На такие случаи есть команда less — она открывает файл (или переданный в неё вывод другой команды) в режиме чтения:
less example.com
В режиме чтения команда less можно перемещаться, искать текст и многое другое. Все командные последовательности и горячие клавиши можно вывести с помощью параметра --help:
less --help
Для выхода из режима чтения введите q и нажмите Enter.
Удаление
Для удаления файла в Linux используется команда rm. Она крайне опасна — неправильное применение грозит удалением всего содержимого сервера. Поэтому, как говорится, семь раз отмерь, один раз отрежь: категорически важно перепроверять путь, который вы указываете для удаления.
Самая простая версия команды rm удалит файл с предварительным подтверждением — для этого потребуется ввести y и нажать Enter:
rm new-file.txt
Для полного же уничтожения всего и вся к команде добавляются параметры -rf. Первый отвечает за рекурсивное удаление данных (т.е. удаление вложенных файлов и папок), второй позволяет отключить подтверждение при удалении. Например, следующая команда удалит папку photos, размещённую в docs, и всё её содержимое:
rm -rf docs/photos
Эта команда приобрела некоторую популярность из-за того, что её используют ради шутки над неопытными администраторами и пользователями, которые только начинают своё знакомство с системой Linux. Им под тем или иным предлогом предлагают выполнить из терминала команду rm -rf [/] (без квадратных скобок). Она удаляет всё содержимое сервера от корня. Результат — все данные безвозвратно теряются, а сервер перестаёт работать.
Скачивание и загрузка
Для передачи файлов на сервер и скачивании их с с сервера есть много способов. Самый простой — использование программ wget, curl или утилиты scp.
wgetпозволяет скачивать данные на сервер. Она поддерживает HTTP, HTTPS и FTP протоколы.wget [как скачать] [откуда скачать]
Скачать файл по ссылке в вашу текущую рабочую директорию можно с помощью команды:
wget https://ru.wordpress.org/latest-ru_RU.tar.gz
С помощью параметра
-Pможно указать путь, куда нужно сохранить скачиваемое:wget -P /var/www/example.com https://ru.wordpress.org/latest-ru_RU.tar.gz
Полный список параметров
wgetможно посмотреть с помощью командыman:man wget
curlиспользуется как для скачивания файлов на ваш сервер, так и для передачи данных с него на другие серверы / хранилища. Она универсальнее, чемwget, благодаря огромному количеству поддерживаемых протоколов: FTP, HTTP, HTTPS, IMAP, POP3, SCP, SFTP, SMB, SMTP, Telnet и др.curl [как скачать] [откуда скачать / куда загрузить]
В современных дистрибутивах
curlустановлена по умолчанию. При необходимости можно установить ее вручную, используя команды ниже:- Ubuntu и Debian:
apt -y install curl - CentOS:
yum -y install curl
Для работы с
curlнужно знать название и расположение файлов, которые необходимо скачать/загрузить. Например, так будет выглядеть команда на скачивание по ссылке:curl -O https://ru.wordpress.org/latest-ru_RU.tar.gzВ примере мы скачиваем архив
latest-ru_RU.tar.gzпо ссылке и сохраняем его в текущую рабочую директорию с таким же именем — за это отвечает ключ-O. Если использовать опцию-o, можно задать своё имя (wp.tar.gz) для сохраняемого файла:curl -o wp.tar.gz https://ru.wordpress.org/latest-ru_RU.tar.gzЕсли нам нужно загрузить файл c нашего сервера на другой, используется следующая конструкция:
curl -T filename.txt https://example.com/downloads/filename.txt
Здесь
filename.txtиз текущей рабочей директории загружается на сайтexample.comв директориюdownloadsи сохраняется с именемfilename.txt. Пример подразумевает, что у нас есть права на запись в указанный каталог.Остальные возможности
curlможно узнать в справочной информации с помощью команды:man curl
- Ubuntu и Debian:
Утилита
scpпозволяет копировать файлы между двумя серверами, используя протокол SSH.scp [откуда копируем] [куда копируем]
Например, для передачи
filename.txtс нашего сервера на удалённый сервер1.2.3.4в директориюnew-documentsпользователяusernameможно использовать в терминале следующую команду:scp ~/documents/filename.txt username@1.2.3.4:/home/username/new-documents
В процессе система запросит у нас пароль пользователя
usernameдля подключения к удалённому серверу. После авторизации файл будет скопирован на целевой сервер в указанную директорию.Чтобы скачать файл с удалённого сервера, достаточно немного видоизменить нашу команду:
scp username@1.2.3.4:/home/username/documents/filename.txt ~/new-documents/
Здесь мы в качестве источника для получения копии указали удалённый сервер, а в качестве цели для загрузки копии — папку на текущем сервере.
С помощью
scpаналогичным образом можно копировать данные между двумя удалёнными серверами:scp username1@1.2.3.4:/home/username1/documents/filename.txt username2@2.3.4.5:/home/username2/new-documents
Запуск исполняемых bash-скриптов
Чтобы запустить скрипт script.sh на сервере Linux, нужно выполнить два шага:
Настроить права на запуск файла для пользователей с помощью команды
chmod:chmod +x ./script.sh
Запустить скрипт. Если вы находитесь в той же директории, где лежит скрипт, достаточно вызвать его по имени:
./script.sh
В некоторых случаях нужно использовать команду
shлибо указывать путь к исполняемому файлу командной оболочки:sh ./script.sh
либо
/bin/bash ./script.sh
Если вы находитесь в другой директории, для запуска нужно указать полный путь к скрипту.
Чтобы иметь возможность запускать скрипт из любого места на сервере одной простой командой в терминале, можно создать для него алиас — короткую команду (псевдоним), которая будет ассоциироваться системой с полным вызовом скрипта.
Весь список существующих алиасов системы можно вывести с помощью команды alias:

Создать свой постоянный алиас можно с помощью файла .bashrc, размещённого в домашнем каталоге вашего пользователя. Нужно открыть его для редактирования:
vi ~/.bashrc
В соответствующем разделе нужно добавить ваш алиас в следующем формате:
alias [короткая команда]='[исходная команда]'
Например, если нам потребуется создать псевдоним для скрипта выше, настройки будут выглядеть так:
alias myScript='sh /путь/к/скрипту/script.sh'
Чтобы после добавления алиас сразу стал доступен, предварительно нужно обновить командную оболочку с помощью команды:
source ~/.bashrc
После этого вы сможете вызывать ваш скрипт с помощью короткой команды.
Скрипт можно добавить в расписание планировщика cron, чтобы он запускался регулярно.
Как настроить cron по ssh
Переименование, перемещение и копирование файлов и папок
Скопировать файл в терминале Linux можно с помощью команды:
cp [что копируем] [куда копируем]
К примеру, вы можете сделать копию конфигурационного файла, который вы хотите изменить. Здесь мы создаём копию nginx.conf:
cp nginx.conf nginx.conf.copy
Директории копируются аналогично. При необходимости скопировать каталог со всем содержимым (рекурсивно) нужно добавить к команде ключ -r:
cp -r /docs /files
Здесь мы создаём копию docs со всем её содержимым с именем files.
Переместить файл также просто, для этого используем в терминале команду mv:
mv [что переместить/переименовать] [куда переместить/как назвать]
Например, следующая команда переместит файл file.txt в директорию new:
mv file.txt docs/new
Переименовать файл тоже не составит труда. В Linux переименование аналогично перемещению в ту же самую папку, но с новым именем. Например, команда ниже переименует file.txt (в директории /docs/new/) в todolist.txt:
mv /docs/new/file.txt /docs/new/todolist.txt
В этом примере file.txt переименовывается в todolist.txt
Аналогично можно перемещать и переименовывать директории.
Теперь, когда вы знаете базовые команды для работы с терминалом Linux, самое время познакомиться с файловой системой.