← Все статьи
INFRASTRUCTURE

Базовые команды терминала

Практическое знакомство с терминалом Linux: пути, файлы, каталоги, конвейеры, перенаправление вывода и редактирование через vi.

Содержание статьи
  1. С чего начинается работа в терминале
  2. Как перемещаться по каталогам
  3. `pwd`: текущий каталог
  4. `ls`: содержимое каталога
  5. `cd`: смена каталога
  6. Абсолютные и относительные пути
  7. Создание каталогов и файлов
  8. `mkdir`
  9. `touch`
  10. Просмотр содержимого файлов
  11. `cat`
  12. `less`
  13. `head` и `tail`
  14. Информация о файлах и дисках
  15. `file`
  16. `stat`
  17. `df`
  18. `du`
  19. Копирование, перемещение и удаление
  20. `cp`
  21. `mv`
  22. `rm`
  23. Имена файлов, пробелы и кавычки
  24. Маски файлов
  25. Перенаправление вывода
  26. `>` и `>>`
  27. Передача вывода через `|`
  28. Ошибки и `2>&1`
  29. Условное выполнение команд
  30. Редактирование конфигурации на сервере
  31. Практическое упражнение
  32. Что делать, если команда не найдена
  33. Минимальный набор, который стоит запомнить
  34. Итог

После знакомства с философией Unix/Linux и структурой файловой системы пора перейти к повседневной работе в терминале.

Терминал — это не отдельная операционная система и не «чёрное окно для специалистов». Это интерфейс, через который мы запускаем программы, перемещаемся по файловой системе, читаем конфигурацию и управляем сервисами.

В этой статье разберём основные команды, работу с путями, файлами и каталогами, простые конвейеры, перенаправление вывода и безопасное редактирование файлов через vi.

С чего начинается работа в терминале

После подключения к серверу вы видите приглашение shell. В нём могут отображаться имя пользователя, имя машины и текущий каталог.

Первое правило — не спешить выполнять команду, если вы не понимаете, где находитесь и от какого пользователя работаете.

whoami
pwd

whoami показывает текущего пользователя, а pwd — полный путь к текущему каталогу.

Перед потенциально опасной операцией полезно выполнить обе команды. Это особенно важно при работе с sudo, системными каталогами и командами удаления.

Как перемещаться по каталогам

pwd: текущий каталог

pwd

Пример результата:

/home/deploy

Это абсолютный путь. Он начинается с / и однозначно указывает расположение каталога.

ls: содержимое каталога

ls

Показать подробную информацию:

ls -l

Показать скрытые файлы:

ls -la

Удобный вариант с размерами:

ls -lah

Скрытые файлы в Linux начинаются с точки. Например, .env, .ssh и .git не отображаются обычной командой ls.

cd: смена каталога

cd /var/log

Перейти в домашний каталог текущего пользователя:

cd

или:

cd ~

Перейти на уровень выше:

cd ..

Вернуться в предыдущий каталог:

cd -

Текущий каталог обозначается как ., родительский — как ...

Абсолютные и относительные пути

Абсолютный путь начинается с /:

cd /var/log

Такая команда работает независимо от того, где вы находились до этого.

Относительный путь считается от текущего каталога:

cd project
cd ./project

Если вы находитесь в /home/deploy, оба варианта ведут в /home/deploy/project.

Путь к соседнему каталогу можно записать так:

cd ../backup

Перед выполнением команды полезно проверить путь:

pwd
ls -la ../backup

Создание каталогов и файлов

mkdir

Создать один каталог:

mkdir project

Создать вложенную структуру каталогов:

mkdir -p project/config project/data project/logs

Ключ -p создаёт отсутствующие родительские каталоги и не выдаёт ошибку, если каталог уже существует.

Проверить результат:

find project -maxdepth 2 -type d

touch

Создать пустой файл:

touch project/config/app.env

Если файл уже существует, touch не очищает его содержимое. Команда обновляет время изменения файла.

Это важно отличать от перенаправления через >: оно может перезаписать существующий файл.

Просмотр содержимого файлов

cat

Для небольшого файла:

cat project/config/app.env

Показать строки с номерами:

cat -n project/config/app.env

Не стоит использовать cat для огромных логов: весь вывод может заполнить терминал.

less

Для больших файлов используйте:

less /var/log/syslog

Внутри less:

  • Space — следующая страница;
  • b — предыдущая страница;
  • стрелки — перемещение по строкам;
  • /слово — поиск;
  • n — следующее совпадение;
  • q — выход.

head и tail

Первые строки файла:

head -n 20 config.yml

Последние строки:

tail -n 50 /var/log/syslog

Следить за появлением новых строк в логе:

tail -f /var/log/syslog

Для остановки tail -f нажмите Ctrl+C. Это прерывает текущую команду, а не выключает сервер.

Информация о файлах и дисках

file

Определить тип файла:

file archive.tar.gz
file image.bin

Расширение не всегда достоверно показывает содержимое. file анализирует сам файл.

stat

Получить подробную информацию:

stat project/config/app.env

Можно увидеть размер, владельца, права доступа и время изменения.

df

Проверить свободное место файловых систем:

df -h

Ключ -h показывает размеры в удобном для чтения формате.

du

Узнать размер каталога:

du -sh project

Оценить размеры элементов текущего каталога:

du -sh ./*

Комбинация df и du помогает понять, заканчивается ли место на диске и какой каталог занимает его больше всего.

Копирование, перемещение и удаление

cp

Скопировать файл:

cp config.example.yml config.yml

Скопировать каталог со всем содержимым:

cp -r project project-backup

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

mv

Переименовать файл:

mv old-name.txt new-name.txt

Переместить файл:

mv config.yml project/config.yml

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

mv -i config.yml project/config.yml

rm

Удалить файл:

rm temporary.txt

Удаление каталога с содержимым:

rm -r temporary-directory

Перед удалением проверьте:

pwd
ls -la

Особенно опасна команда rm -rf: она удаляет рекурсивно и без подтверждения. Ошибка в пути может привести к потере данных. Не используйте её на сервере, пока не проверили путь и содержимое.

Linux обычно не перемещает удалённые файлы в корзину. Если данные важны, сначала создайте копию или используйте backup.

Имена файлов, пробелы и кавычки

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

cd "My Project"

Можно также экранировать пробел:

cd My\ Project

Одинарные кавычки передают текст буквально:

printf '%s\n' '$HOME'

Двойные кавычки позволяют shell подставлять переменные:

printf '%s\n' "$HOME"

По возможности используйте в именах файлов и каталогов латинские буквы, цифры, дефисы и подчёркивания. Это уменьшает количество проблем в скриптах, Docker Compose и CI/CD.

Маски файлов

Маски помогают обращаться сразу к нескольким именам.

* означает любое количество символов:

ls *.log

? означает один символ:

ls file?.txt

Квадратные скобки задают один символ из набора:

ls backup-[0-9].dump

Перед командами копирования и удаления полезно сначала проверить, какие файлы совпали с маской:

printf '%s\n' ./*.log

И только после проверки выполнять операцию.

Перенаправление вывода

> и >>

Записать вывод в новый файл или перезаписать существующий:

printf '%s\n' 'первая строка' > notes.txt

Добавить строку в конец:

printf '%s\n' 'вторая строка' >> notes.txt

Перед использованием > убедитесь, что файл не содержит важных данных.

Передача вывода через |

Команды можно соединять:

ls -la /var/log | less

Результат ls передаётся программе less для постраничного просмотра.

Пример подсчёта строк:

find /var/log -type f | wc -l

find формирует список файлов, а wc -l считает строки в этом списке.

Ошибки и 2>&1

Обычный вывод и сообщения об ошибках — разные потоки. Записать ошибки отдельно:

some-command 2> errors.log

Объединить оба потока:

some-command > output.log 2>&1

Эта форма часто используется при сохранении логов диагностической команды.

Условное выполнение команд

Запустить вторую команду только при успешном завершении первой:

mkdir -p backup && cp config.yml backup/config.yml

Запустить вторую команду только при ошибке первой:

systemctl is-active --quiet nginx || echo 'nginx не запущен'

Точка с запятой запускает команды последовательно независимо от результата предыдущей:

pwd; ls -la

Для автоматизации чаще безопаснее использовать &&, чтобы не продолжать цепочку после ошибки.

Редактирование конфигурации на сервере

В серверной работе конфигурационные файлы часто редактируют непосредственно на машине: от имени root или через sudo. Это нормальная практика, если доступ ограничен, изменения понятны, а после редактирования выполняется проверка конфигурации и состояния сервиса.

Например:

sudo vi /etc/example/config.conf

Перед изменением важного файла полезно сохранить резервную копию:

sudo cp /etc/example/config.conf /etc/example/config.conf.backup
sudo vi /etc/example/config.conf

После изменения:

  1. проверьте содержимое файла;
  2. выполните встроенную проверку синтаксиса, если она есть;
  3. перезапустите или перечитайте конфигурацию сервиса;
  4. проверьте его статус и логи.

Базовые и продвинутые приёмы работы с vi будут разобраны в отдельной статье серии: от режимов, сохранения и поиска до макросов, регистров, настройки и тюнинга редактора.

Практическое упражнение

Создадим небольшой проект и выполним основные операции:

mkdir -p ~/terminal-practice/{config,logs,backup}
cd ~/terminal-practice
printf '%s\n' 'MODE=development' > config/app.env
cat config/app.env
cp config/app.env backup/app.env
ls -lah config backup

Проверим структуру:

find . -maxdepth 3 -type f -print

Добавим строку в файл:

printf '%s\n' 'PORT=8080' >> config/app.env
cat -n config/app.env

Проверим размер:

du -sh .

После упражнения каталог можно удалить, предварительно убедившись в текущем пути:

pwd
rm -r ~/terminal-practice

Что делать, если команда не найдена

Если shell сообщает:

command not found

это может означать, что программа не установлена или её каталог отсутствует в PATH.

Проверить расположение команды:

command -v curl
command -v docker

Посмотреть значение PATH:

printf '%s\n' "$PATH"

Не устанавливайте случайный пакет из первой найденной инструкции. Сначала определите дистрибутив и используйте официальный репозиторий или документацию проекта.

Минимальный набор, который стоит запомнить

pwd
ls -lah
cd /path/to/directory
mkdir -p directory
cp source destination
mv old new
less file
head -n 20 file
tail -f file
df -h
du -sh directory
find . -type f

Этого набора достаточно для большинства простых операций с файлами и первичного осмотра сервера.

Итог

Работа в терминале строится вокруг нескольких понятных действий:

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

Команды Linux становятся предсказуемыми, если понимать их аргументы и заранее проверять контекст. Не нужно запоминать всё сразу: достаточно освоить базовый набор и постепенно добавлять новые инструменты по мере появления задач.

В следующей статье разберём права доступа: пользователей, группы, rwx, chmod, chown, sudo и причины ошибки Permission denied.

Материал подготовил Злой админ