Терминал быстрее мыши
Открываешь терминал — курсор мигает. Нет кнопок «Назад», нет меню «Файл». Только командная строка.
Это поначалу пугает, но потом становится понятно: опытный администратор за 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 — интерактивный поиск по истории. Так это выглядит:
- Нажимаешь
Ctrl+R— в строке появляется(reverse-i-search):
(reverse-i-search)`':
- Начинаешь вводить часть команды, например
docker run:
(reverse-i-search)`docker run': docker run -it ubuntu bash
-
Терминал сразу показывает последнюю команду, содержащую
docker run. -
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.
