Материал открыт для чтения

Войдите, чтобы сохранять прогресс и результаты.

Войти
Экспресс-погружение в DevOps

Навигация и управление файлами

чтение ~8 минУрок 7 из 19

Терминал быстрее мыши

crs express devops Image07

Открываешь терминал — курсор мигает. Нет кнопок «Назад», нет меню «Файл». Только командная строка.

Это поначалу пугает, но потом становится понятно: опытный администратор за 30 секунд делает то, на что в GUI уйдёт 5 минут.


Откуда ты работаешь — root vs обычный пользователь

Первое, что нужно понять: в Linux есть обычные пользователи и суперпользователь root.

Обычные пользователи живут в директории /home:

  • пользователь alice → домашняя директория /home/alice
  • пользователь bob → домашняя директория /home/bob

Каждый пользователь работает в своей «песочнице» — он не видит файлы других пользователей и не может менять системные настройки.

root — это суперпользователь. Его домашняя директория — /root (не /home/root!). Это специальное место, отдельное от всех остальных.

Когда ты входишь на сервер по SSH как root (что типично для DevOps), ты сразу оказываешься в /root.

Специальный символ ~ (тильда) всегда означает твою домашнюю директорию:
- Для root: ~ = /root
- Для alice: ~ = /home/alice

Это важно, потому что в задачах и примерах пути типа ~/myproject будут разными для разных пользователей.


Где я? — pwd

$ pwd
/root

pwd (print working directory) — показывает, в какой директории ты сейчас находишься. Потерялся — запусти pwd.


Что здесь? — ls

$ ls                  # содержимое текущей директории
$ ls -l               # длинный формат с правами и датами
$ ls -la              # + скрытые файлы
$ ls -lh              # размеры в читаемом формате (K, M, G)
$ ls /etc             # содержимое другой директории

Переход — cd

$ cd /etc             # абсолютный путь
$ cd Documents        # относительный путь
$ cd ..               # на уровень выше
$ cd ~                # домой
$ cd -                # в предыдущую директорию (очень удобно)

Создание директорий — mkdir

$ mkdir myproject                  # создать директорию
$ mkdir -p a/b/c/d                 # создать все промежуточные
$ mkdir project/{src,tests,docs}   # создать несколько сразу

Флаг -p важен: без него mkdir a/b/c упадёт с ошибкой, если a/b не существует.


Создание текстового файла — echo, printf, > и >>

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

Самый простой вариант:

$ echo "Hello DevOps" > /root/myproject/README.txt

Что здесь происходит:

  • echo "Hello DevOps" выводит строку в терминал;
  • > перенаправляет вывод в файл;
  • если файла нет, он будет создан;
  • если файл уже был, его содержимое будет перезаписано.

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

$ cat /root/myproject/README.txt
Hello DevOps

Для точной записи строк часто используют printf:

$ printf "Hello DevOps\n" > /root/myproject/README.txt

\n означает перевод строки. printf предсказуемее, когда важен точный формат, а echo удобен для простых учебных примеров.

Есть два основных перенаправления:

$ echo "first line" > notes.txt    # создать или перезаписать файл
$ echo "second line" >> notes.txt  # добавить строку в конец файла

Разница критична:

  • > перезаписывает файл с нуля;
  • >> дописывает в конец и сохраняет старое содержимое.

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


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

cp — копировать

$ cp file.txt backup.txt           # скопировать файл
$ cp -r mydir/ /backup/mydir/      # скопировать директорию

mv — переместить / переименовать

$ mv oldname.txt newname.txt       # переименовать
$ mv file.txt /tmp/                # переместить

В Linux нет отдельной команды «переименовать» — это просто mv с другим именем.

rm — удалить

$ rm file.txt                      # удалить файл
$ rm -r directory/                 # удалить директорию
$ rm -rf directory/                # без подтверждений
$ rm *.log                         # удалить все .log файлы

⚠️ В Linux нет корзины. rm удаляет файл навсегда, без возможности восстановления. Особенно осторожно с rm -rf — эта команда без вопросов удалит всё что угодно.


Горячие клавиши терминала

Горячие клавиши — это то, что отличает опытного администратора от новичка. Без них работа в терминале медленная и мучительная. С ними — быстрая и комфортная.

Потрать 15 минут на изучение этих сочетаний — сэкономишь часы в будущем.


Tab — автодополнение

Это самая важная клавиша в терминале. Нажимаешь Tab — и терминал сам дописывает команду или путь.

Как это работает:

$ cd /et<Tab>

Терминал автоматически дописывает до /etc/ — потому что только одна директория начинается с /et.

$ ls /etc/ngi<Tab>

Дописывает до /etc/nginx/.

$ cd /var/lo<Tab>

Если вариантов несколько — нажми Tab дважды, и терминал покажет список всех вариантов:

log/    lock/   local/

Правило: нажимай Tab как можно чаще. Это экономит время и предотвращает опечатки. Многие команды вводятся первыми 2–3 буквами + Tab.


История команд — ↑ и Ctrl+R

Терминал запоминает все команды, которые ты вводил. Это называется «история команд».

Клавиши ↑ и ↓ — листают историю вверх и вниз. Нажал ↑ один раз — получил последнюю команду, ещё раз — предпоследнюю.

Это незаменимо, когда нужно повторить только что выполненную команду или немного изменить её.

Ctrl+R — интерактивный поиск по истории. Так это выглядит:

  1. Нажимаешь Ctrl+R — в строке появляется (reverse-i-search):
(reverse-i-search)`':
  1. Начинаешь вводить часть команды, например docker run:
(reverse-i-search)`docker run': docker run -it ubuntu bash
  1. Терминал сразу показывает последнюю команду, содержащую docker run.

  2. Enter — выполнить найденную команду. ← или → — перейти к редактированию. Esc — отменить поиск.

Если первый результат не тот — нажимай Ctrl+R ещё раз, и история будет листаться дальше.


Управление выполняющейся командой

Сочетание Что делает Когда использовать
Ctrl+C Прервать выполнение Зависшая команда, случайный запуск
Ctrl+Z Приостановить (отправить в фон) Временно «заморозить» процесс
Ctrl+D Завершить ввод / выйти из сессии Аналог команды exit
Ctrl+L Очистить экран Когда экран замусорен выводом

Ctrl+C — используется очень часто. Запустил ping google.com и хочешь остановить? Ctrl+C.

Ctrl+L — намного удобнее, чем команда clear. Нажал — и экран чистый, но история команд не теряется.


Навигация по вводимой команде

Иногда набрал длинную команду и обнаружил ошибку в начале. Не нужно удалять всё — можно переместить курсор:

Сочетание Что делает
Ctrl+A Перейти в начало строки
Ctrl+E Перейти в конец строки
Ctrl+W Удалить одно слово перед курсором
Ctrl+U Удалить всё до начала строки
Ctrl+K Удалить всё от курсора до конца строки
Alt+F Переместиться на слово вперёд
Alt+B Переместиться на слово назад

Практический пример:

Ты набрал:

$ sudo systemctl restart nginx

И заметил, что хочешь изменить nginx на apache2. Вместо того чтобы стирать всё — нажми Alt+B два раза, чтобы переместиться на слово назад, и исправь нужное слово.

Или: нажми Ctrl+A чтобы перейти в начало, потом Alt+F несколько раз чтобы пропрыгнуть через слова.


Полезные мелочи

Ctrl+C ≠ копирование — в терминале Ctrl+C прерывает процесс, а не копирует. Для копирования текста используй мышь + правую кнопку, или Ctrl+Shift+C в большинстве терминальных эмуляторов.

!! — повторяет последнюю команду целиком. Часто используется для sudo !! — если забыл написать sudo:

$ apt install nginx
Permission denied
$ sudo !!
sudo apt install nginx

!$ — последний аргумент предыдущей команды. Например:

$ mkdir /root/myproject
$ cd !$

Команда cd !$ превратится в cd /root/myproject.

Материал изучен?

Войдите, чтобы сохранить прогресс и перейти к практической лаборатории.

Войти и продолжить