Командная строка Linux
Командная строка Linux и оболочка bash с нуля: файлы и папки, поиск, права доступа, конвейеры, процессы, переменные, скрипты, архивы и сеть.
Командная строка — способ управлять компьютером текстом: вы набираете команду, система выполняет её и печатает ответ. В Linux команды читает оболочка — чаще всего это bash. Она есть в Ubuntu, Debian, Linux Mint и почти во всех других системах Linux, поэтому команды из этого курса работают везде, а где системы различаются, это сказано отдельно.
Где это нужно
- Серверы. У большинства серверов нет рабочего стола: сайты, базы данных и почта настраиваются только командами, обычно через SSH с другого компьютера.
- Обычный компьютер с Linux. Многие вещи быстрее сделать одной командой, чем искать нужное окно. Инструкции в интернете тоже почти всегда даются командами.
- Программирование. Git, Docker, сборка программ и запуск тестов — всё это команды в терминале.
- Автоматизация. Несколько команд, записанных в файл, становятся скриптом: он сам делает резервные копии, чистит старые файлы или проверяет, работает ли сайт.
Что нужно для начала
- Любой Linux: установленный на компьютер, в виртуальной машине или на арендованном сервере.
- В Windows 10 и 11 Linux можно поставить прямо внутри Windows — это подсистема WSL. Команды курса работают в ней так же.
- В macOS терминал тоже есть, но оболочка там по умолчанию zsh, а у части команд другие ключи. Основы те же.
Ставить ничего не нужно: bash и все основные команды уже есть в системе. Достаточно открыть терминал.
Как пройти курс
Уроки идут по порядку: от первых команд до своих скриптов, архивов и работы с сервером. Повторяйте каждый пример в своём терминале — руки запоминают команды быстрее, чем глаза. Для опытов заведите отдельную папку, например ~/practice, и не работайте под root без нужды: ошибка обычного пользователя испортит только его файлы.
После каждого урока — несколько вопросов для проверки, в конце — итоговый тест. В справочнике — короткие ответы на частые вопросы: как найти файл, как распаковать архив, что делать с ошибкой Permission denied.
Про установку программ, пользователей и службы в конкретной системе — в отдельных темах, например Ubuntu.
Курс с нуля
- 1.Терминал и оболочка: первые командыЧто такое терминал и оболочка bash, как читать приглашение и из чего состоит команда. Первые команды pwd, ls и cd, справка man и --help, история и клавиша Tab.
- 2.Файлы и папки: пути, создание, копирование и удалениеКак устроено дерево папок Linux, чем абсолютный путь отличается от относительного и как создавать, копировать, переносить и удалять файлы командами mkdir, cp, mv и rm.
- 3.Просмотр файлов и поиск: cat, less, tail, grep, findКак смотреть файлы в терминале командами cat, less, head и tail, следить за журналом через tail -f, искать строки в файлах командой grep и сами файлы — командой find.
- 4.Права доступа: chmod, chown и rwxКак читать права файлов в выводе ls -l, что значат r, w и x для файла и для папки, как менять их командой chmod буквами и числами (755, 644) и владельца — командой chown.
- 5.Перенаправление вывода и конвейерыКуда команды пишут результат и ошибки, как сохранить вывод в файл через >, >> и 2>, как соединять команды конвейером | и считать и сортировать строки командами wc, sort и uniq.
- 6.Процессы: ps, top, kill и фоновые задачиЧто такое процесс и PID, как посмотреть запущенные программы командами ps, top и htop, завершить зависшую командой kill и запустить долгую команду в фоне через &, jobs и nohup.
- 7.Переменные окружения, PATH, .bashrc и aliasКак устроены переменные оболочки и окружения, что хранит PATH и почему команда бывает «не найдена», как настроить bash под себя в файле .bashrc и сократить длинные команды через alias.
- 8.Скрипты bash: первый скрипт, переменные и аргументыКак написать и запустить скрипт bash: строка #!/bin/bash, права на выполнение, переменные и кавычки, подстановка команд, арифметика, аргументы $1 и $@, ввод через read и код возврата.
- 9.Условия и циклы в скриптах bashКак в скрипте bash проверять условия через if, test и двойные скобки, сравнивать числа и строки, проверять файлы, повторять действия циклами for и while и выбирать вариант через case.
- 10.Архивы и сеть: tar, zip, curl, ssh и scpКак упаковать и распаковать папку командами tar, gzip и zip, проверить связь через ping, скачать файл через curl и wget, подключиться к серверу по ssh и перенести файлы через scp.
Справочник
- Как выйти из vim и nanoКак выйти из редактора vim (vi) с сохранением и без, как выйти из nano, что делать, если vim не реагирует на команды, и как выбрать редактор по умолчанию.
- Как добавить папку в PATHКак добавить папку в переменную PATH в Linux — для текущего терминала и навсегда через ~/.bashrc, для всех пользователей, как проверить результат и вернуть PATH, если он сломан.
- Как запустить команду в фонеКак запустить команду в фоне в Linux через &, вернуть её на передний план, перевести уже запущенную в фон и сделать так, чтобы она продолжала работать после закрытия терминала или выхода из SSH.
- Как найти текст в файлах: grep -rКак найти строку во всех файлах папки командой grep -r: с номерами строк, без учёта регистра, только в нужных файлах, только имена файлов и как пропустить лишние папки.
- Как найти файл по имени в LinuxКак найти файл по имени или части имени командой find — в домашней папке и по всему диску, без учёта регистра, только файлы или папки, и как убрать сообщения Permission denied.
- Как перенаправить ошибки в файлКак записать ошибки команды в файл через 2>, вывод и ошибки в один файл через > файл 2>&1 и &>, как спрятать ошибки в /dev/null и одновременно видеть вывод на экране через tee.
- Как посмотреть последние строки логаКак посмотреть последние строки журнала командой tail -n, следить за новыми записями через tail -f, искать ошибки в логах и где лежат журналы системы, nginx и служб; журнал journalctl.
- Как посмотреть процессы и завершить процессКак посмотреть запущенные процессы в Linux командами ps, pgrep и top, найти номер процесса и завершить его командами kill и pkill, а если не помогает — через kill -9.
- Как распаковать tar.gz, zip и другие архивыКак распаковать архив tar.gz в Linux одной командой, в нужную папку, посмотреть содержимое перед распаковкой и чем открыть tar.xz, tar.bz2, gz, zip и 7z.
- Как сделать скрипт исполняемым и запустить .shКак дать скрипту право на выполнение командой chmod +x и запустить файл .sh, почему без ./ он не находится и что делать, если запуск всё равно выдаёт Permission denied.
- Как скопировать файлы на сервер: scp и rsyncКак скопировать файл или папку на сервер и обратно командами scp и rsync, как указать порт, чем опасна косая черта в конце пути у rsync и как не удалить лишнее ключом --delete.
- Как создать скрипт bashКак сделать скрипт bash по шагам: создать файл, написать первую строку и команды, дать право на выполнение, запустить, сделать доступным из любой папки и поставить на расписание.
- Как удалить папку в LinuxКак удалить пустую папку командой rmdir и папку с содержимым командой rm -r, чем опасен rm -rf, как удалять безопасно и что делать с ошибками Directory not empty и Permission denied.
- Как узнать версию Linux и ядраКак узнать, какой Linux и какая версия установлены — Ubuntu, Debian, Mint, — версию ядра и разрядность системы командами cat /etc/os-release, hostnamectl и uname.
- Как узнать размер папки в LinuxКак узнать размер папки командой du -sh, найти самые большие папки и файлы, отсортировать их по размеру и посмотреть свободное место на дисках командой df -h.
- Ошибка command not foundПочему bash пишет command not found (команда не найдена) и как исправить: опечатка, программа не установлена, скрипт без ./, папка не в PATH, sudo не видит команду, лишние символы из Windows.
- Ошибка No such file or directoryПочему Linux пишет No such file or directory (нет такого файла или каталога): ошибка в пути, регистр, пробелы и тильда в кавычках, битая ссылка и скрипт с концами строк из Windows.
- Ошибка Permission deniedПочему Linux пишет Permission denied (отказано в доступе) и как исправить: системные файлы и sudo, скрипт без права на выполнение, чужие файлы после sudo, запись через sudo и перенаправление.
Официальная документация
- Справочник GNU Bash (на английском) — https://www.gnu.org/software/bash/manual/
- Руководство GNU Coreutils: ls, cp, mv, rm и другие команды (на английском) — https://www.gnu.org/software/coreutils/manual/