Программирование и IT

Команды Linux

Терминал Linux устроен одинаково у всех дистрибутивов: имя команды, ключи, объекты. Ниже — шесть таблиц по областям работы, в каждой по строке на команду и пример вызова, который можно набрать и сразу увидеть результат.

Обновлено
В этой статье

Как читать строку команды#

Любой вызов складывается из трёх частей: имя программы, ключи и аргументы.
Ключи бывают короткие (-l) и длинные (--long); короткие слипаются, поэтому
ls -l -a и ls -la — одно и то же. Аргументы — то, над чем работаем: пути,
имена процессов, адреса.

Две команды выручают, когда ключ забыт:

ls --help          # короткая подсказка прямо в терминале
man ls             # полное руководство, выход по клавише q

Ещё одна привычка экономит часы: клавиша Tab дописывает имена файлов и команд,
стрелка вверх поднимает предыдущий вызов, Ctrl+C прерывает зависшую
программу, Ctrl+D закрывает ввод.

Права суперпользователя нужны не всегда. Правило простое: своё домашнее
хозяйство — без sudo, системные каталоги и службы — с sudo. Если команда
из шпаргалки отвечает Permission denied, это и есть подсказка.

Файлы и каталоги#

Команда Что делает Пример
pwd печатает путь текущего каталога pwd
ls перечисляет содержимое каталога ls -lh /var/log
cd переходит в каталог cd ~/projects
mkdir создаёт каталог mkdir -p src/api/v1
cp копирует файл или дерево cp -r src backup
mv переносит и переименовывает mv notes.txt archive/
rm удаляет rm -r build
touch создаёт пустой файл touch README.md
cat выводит файл целиком cat /etc/hostname
less листает файл постранично less /var/log/syslog
head / tail первые и последние строки tail -n 50 app.log
tail -f показывает дописываемые строки tail -f app.log

Ключ -p у mkdir создаёт всю цепочку каталогов разом и молчит, если каталог
уже есть. Ключ -h у ls печатает размеры в килобайтах и мегабайтах вместо
голых байтов. У rm восстановления нет: корзины в терминале не существует,
поэтому перед rm -r полезно выполнить тот же путь через ls.

Три сокращения пути экономят набор: ~ — домашний каталог, . — текущий,
.. — родительский. cd - возвращает туда, где ты был до последнего
перехода.

Права доступа#

У каждого файла три набора прав — для владельца, группы и всех остальных,
и в каждом наборе три бита: чтение (4), запись (2), выполнение (1). Отсюда
привычные числа: 7 = 4+2+1 (всё), 6 = 4+2 (чтение и запись), 4 — только
чтение.

Команда Что делает Пример
chmod меняет права chmod 644 notes.txt
chmod +x делает файл исполняемым chmod +x deploy.sh
chown меняет владельца и группу sudo chown www-data:www-data site
ls -l показывает права строкой ls -l notes.txt
id печатает твои uid, gid и группы id
sudo выполняет команду от суперпользователя sudo systemctl restart nginx

chmod 644 — это rw-r--r--: владелец читает и пишет, остальные только
читают. Для каталога бит выполнения означает право войти внутрь, поэтому у
каталогов обычно 755, а не 644. Права 777 не нужны почти никогда: если
они «чинят» проблему, настоящая причина — неверный владелец.

Процессы#

Команда Что делает Пример
ps aux снимок всех процессов системы ps aux | grep nginx
top живая таблица нагрузки top
kill посылает процессу сигнал завершения kill 4821
kill -9 убивает процесс безусловно kill -9 4821
pkill убивает по имени pkill -f "python app.py"
jobs / fg / bg задачи текущей оболочки bg %1
systemctl status состояние службы systemctl status nginx
journalctl журнал служб journalctl -u nginx -n 100

Обычный kill просит процесс закрыться аккуратно — дописать файл, отпустить
порт. kill -9 не оставляет такой возможности, поэтому это последнее
средство, а не первое. Запустить долгую программу в фоне можно символом & в
конце строки, вернуть на передний план — командой fg.

Сеть#

Команда Что делает Пример
ip a адреса сетевых интерфейсов ip a
ping проверяет доступность узла ping -c 4 example.com
curl делает HTTP-запрос из терминала curl -i https://example.com
wget скачивает файл wget https://example.com/file.zip
ss -tulpn открытые порты и кто их держит sudo ss -tulpn
dig спрашивает DNS об имени dig example.com
ssh вход на удалённую машину ssh user@10.0.0.5
scp копирование файла по ssh scp dump.sql user@10.0.0.5:/tmp/

Ключ -c 4 у ping останавливает проверку после четырёх пакетов — иначе она
идёт бесконечно. ss -tulpn под sudo показывает имя процесса, занявшего
порт: это первая команда, когда сервис отвечает «address already in use».
Что именно возвращает curl и как читать коды ответов, разобрано в статье
что такое API.

Пакеты#

Команда Дистрибутивы Пример
apt Debian, Ubuntu sudo apt update && sudo apt install git
apt remove Debian, Ubuntu sudo apt remove git
dnf Fedora, RHEL sudo dnf install git
pacman Arch sudo pacman -S git
apt list --installed Debian, Ubuntu apt list --installed | grep python
df / du везде df -h и du -sh ~/Downloads

apt update обновляет список доступных пакетов, apt upgrade — сами пакеты;
путать их — типичная ошибка первой недели. df -h показывает свободное место
по разделам, du -sh каталог — сколько занимает одна папка. Когда место
кончилось, эта пара находит виновника за два вызова.

Поиск файлов и текста#

Команда Что делает Пример
find ищет файлы по имени, размеру, дате find . -name "*.log" -mtime -1
grep ищет строку внутри файлов grep -rn "TODO" src/
grep -i поиск без учёта регистра grep -i error app.log
which показывает путь до программы which python3
wc -l считает строки wc -l access.log
sort / uniq сортировка и свёртка повторов sort ips.txt | uniq -c

У grep ключ -r означает «зайти во все подкаталоги», -n — «показать номер
строки». Шаблон поиска — это регулярное выражение, и знание его синтаксиса
превращает grep в отдельный инструмент: разбор классов, кванторов и якорей —
в статье про регулярные выражения.

Отдельная сила терминала — конвейер |: вывод одной команды становится вводом
следующей. Классическая связка для разбора журнала выглядит так:

grep "500" access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head

Читается справа налево по смыслу: выбрать строки с кодом 500, взять из каждой
первое поле (адрес), сгруппировать одинаковые, посчитать, отсортировать по
убыванию, показать начало списка.

Частые ошибки#

Пробел в пути без кавычек. cd Мои файлы попробует перейти в каталог
«Мои». Правильно — cd "Мои файлы".

rm -rf с переменной. Если переменная окажется пустой, путь $DIR/ станет
просто /. Проверяй значение через echo перед удалением.

Копирование каталога без -r. cp src dst на каталоге ответит
omitting directory; для дерева нужен cp -r.

Правка системного файла без резервной копии. Перед sudo nano /etc/…
делай sudo cp /etc/файл /etc/файл.bak.

Отрабатывать команды безопаснее в одноразовом контейнере, чем на рабочей
системе: там любую ошибку отменяет перезапуск — см.
что такое Docker.

План по этапам

  1. Освоить перемещениеПройти по дереву каталогов через pwd, ls -la и cd, не пользуясь файловым менеджером.
  2. Разобрать праваСоздать файл, посмотреть ls -l, поменять права на 600 и 755 и объяснить каждую букву в выводе.
  3. Найти процесс и портЗапустить долгую программу, найти её через ps aux, завершить через kill, проверить порт через ss -tulpn.
  4. Собрать конвейерИз журнала выбрать строки grep, посчитать wc -l и сгруппировать через sort | uniq -c.
  5. Написать шпаргалку своими словамиВыписать двадцать команд, которыми реально пользовались за неделю, с примером на каждую.

Начать изучать эту тему у себя

План ляжет в твой репозиторий: отмечай этапы, веди конспект — история изменений покажет, как ты продвинулся.

Начать план

Проверь себя

1.Какая команда печатает путь текущего каталога?

2.Какая команда покажет свободное место на разделах в понятных единицах?

3.Права 644 в числовой записи — это сумма битов чтения (4) и записи (2) у владельца. Какое число задаёт полный набор прав rwx для владельца?

4.Какой ключ grep заставляет искать во всех подкаталогах?

Источники

  • Руководства GNU CoreutilsПервоисточник по ls, cp, sort и остальным базовым командам
    бесплатно
  • Документация UbuntuРазделы про apt, права и службы на русском и английском
    бесплатно
  • StepikБесплатные курсы по основам Linux с проверяемыми заданиями
    бесплатно

Было полезно?

Ещё темы

Программирование и IT Команды git Команд в git больше сотни, но в обычный день используют около двадцати. Здесь они собраны по порядку применения — от первой копии репозитория до отмены неудачного шага, с одной строкой пояснения на каждую. Программирование и IT Как изучить Linux с нуля Linux работает на большинстве серверов, в контейнерах и на множестве устройств, поэтому командная строка нужна разработчику, тестировщику, аналитику и системному администратору. Осваивать систему удобнее всего не чтением списков команд, а ежедневной работой в терминале и решением небольших практических задач. Ниже — последовательность тем на два-три месяца. Программирование и IT Markdown таблица Таблица в markdown собирается из вертикальных черт и строки-разделителя под шапкой. Ниже — синтаксис таблиц с выравниванием столбцов и короткая шпаргалка по остальной разметке: заголовки, списки, ссылки, картинки, код, цитаты и списки задач. Программирование и IT Что такое Docker Docker упаковывает программу вместе со всем, что ей нужно для запуска, в один образ — и этот образ одинаково стартует на ноутбуке разработчика и на сервере. Ниже — что такое образ, чем он отличается от контейнера, как написать первый Dockerfile и где эта технология лишняя. Программирование и IT Что такое API API — это условленный способ одной программы попросить что-то у другой. Никакого экрана и кнопок: запрос уходит текстом по сети, ответ приходит в машиночитаемом виде. Разобравшись с четырьмя частями HTTP-запроса, ты сможешь читать документацию любого сервиса. Программирование и IT Arduino для начинающих Arduino — плата с микроконтроллером, которой можно объяснить, когда зажечь светодиод, а когда прочитать датчик. Программа пишется на упрощённом C++, заливается по USB и работает сама, без компьютера. Первое мигание светодиодом занимает минут двадцать.

Ещё сценарии

Аналог GitLab Если GitLab нужен тебе ради репозиториев, задач и ревью кода, а поддерживать свой сервер не хочется, Skillok закрывает эту часть. Если же ты живёшь в GitLab CI и реестре пакетов — честно говоря, это пока не про нас. Разберём, что совпадает и что нет. LMS для небольшой команды Полноценная LMS — это десятки функций, большая часть которых небольшой команде не нужна. В Skillok учебная часть собрана из немногих вещей — курсы с автопроверкой, материалы с историей и задания с ревью. Ниже — что именно есть, чтобы ты решил, хватит ли этого. СДО для сотрудников Классическая СДО — это курсы, назначения, отчёты и сертификаты. Skillok закрывает часть этих задач иначе — через репозиторий материалов, задачи-назначения и курсы с автопроверкой. Если тебе нужны отчёты по каждому сотруднику и совместимость со SCORM — честно скажем сразу, этого нет.