Основные команды и горячие клавиши терминала Linux (а также Unix, macOS и FreeBSD)
Поставить будильник одной строкой или стереть важные файлы — решать вам, но эти команды нужно знать.
Иллюстрация: Оля Ежак для Skillbox Media
Какой смысл пользоваться терминалом, если дистрибутивы Linux и большинство современных приложений имеют графический интерфейс? На первый взгляд, это удобнее: не надо читать документацию и вбивать команды от руки. Но в Linux только официальных сред рабочего стола более десяти, а неофициальных ещё больше. Они сильно отличаются друг от друга и часто работают по-разному, тогда как команды почти одни и те же.
Затем, если вы программист, вам наверняка придётся удалённо подключаться к серверу под управлением Linux, а там вообще не будет графической оболочки.
Кроме того, даже самая продуманная графическая оболочка никогда не даст вам той гибкости и функциональности, которую предлагает командная строка. Например, возможность составлять и запускать сложные цепочки из нескольких разных команд, писать отложенные сценарии и тому подобное. Открыть терминал и написать команду будет всегда быстрее, чем кликать по меню, выбирая нужную опцию.
Наконец, стоит вспомнить, что Linux — это лишь одна из множества Unix-подобных ОС. Изучив терминал Linux, вы сможете ориентироваться в Unix, BSD-системах и macOS. Другими словами, получите универсальный, быстрый и мощный инструмент для работы.
Прежде чем идти дальше, нужно понять следующие правила:
- Не запускайте команды, которых вы не знаете. Копировать команды из интернета и вводить их в терминал, не понимая, что они делают, — плохая практика.
- Если терминал пишет, что команда не найдена, её можно найти в репозиториях и установить с помощью пакетного менеджера. Как именно — смотрите ниже.
- Читайте руководство. Терминал хорош ещё и тем, что содержит встроенную подробную справку по всем командам — её можно вызвать командами man или help. В общем, старый добрый принцип RTFM (read the fucking manual).
Базовые команды для работы с терминалом Linux
Ctrl + Alt + T — запуск терминала.
Ctrl + Shift + T — открыть новую вкладку.
Ctrl + Shift + W или Ctrl + D — закрыть текущую вкладку (или весь терминал, если вкладка одна).
Ctrl + Shift + N — открыть новое окно терминала.
Ctrl + C — отмена выполнения ранее введённой команды.
clear — очищение окна терминала.
history — история ввода.
Чтобы посмотреть определённое количество введённых ранее команд, нужно добавить к команде history число:
«Листать» введённые ранее команды можно с помощью клавиш со стрелками «вверх» и «вниз».
sleep [number] — отложить выполнение следующей команды. Полезно, когда выполнение следующей команды зависит от успешного завершения предыдущей.
Чтобы указать время, на которое нужно перенести выполнение команды, используют специальные символы:
- s — секунды;
- m — минуты;
- h — часы;
- d — дни.
Следующий пример запустит файл song в программе mplayer через 2 часа 20 мин:
Команды для отображения справочной информации по командам и терминалу
С помощью командной строки можно быстро получить информацию о программах, состоянии системы и настройках.
man [имя_пакета] — главное руководство по командам Linux.
Даёт подробную информацию по команде и её использованию. У каждой команды есть множество опций, запомнить их все сложно, поэтому стоит научиться пользоваться руководством. Поначалу вывод man кажется запутанным, но стоит с ним разобраться — и необходимость гуглить сведётся к минимуму.
Например, man ls выведет следующую информацию:
Вывод man включает следующие поля:
- Name — имя команды, которую описывает man-страница.
- Synopsis — краткое описание команды и её синтаксиса.
- Description — объяснение того, что делает программа.
- Options — описание опций командной строки, которые принимает команда, и дополнительная информация.
Самое полезное тут — опции. Например, вы хотите вывести список не только файлов, а ещё и их авторов. Выбираете в man нужную опцию и пишете:
LS (1) в выводе man означает первую страницу. Перемещаться по тексту можно с помощью колеса мыши, стрелок вверх/вниз, клавиши пробел или PgUp/PgDn. Перейти в начало/конец руководства можно с помощью клавиш Home и End.
Если ввести заглавную Н, то появится более детальная подсказка с альтернативными способами передвижения по тексту.
Для поиска конкретного слова в man введите ? [искомое_слово] и жмите Enter.
help — справка.
Если в мануале нет информации по команде или утилите или требуется краткая справка, то help — то, что нужно.
whatis [имя_пакета] — краткое описание утилиты.
Команды для получения информации о системе
whoami — информация о текущем пользователе системы.
whereis — путь к программе.
Показывает полный путь к исполняемому файлу.
lsblk — информация о дисках.
Выводит данные о дисках, разделах и их названия (sda1, sda2 и тому подобное).
df — объём занятого пространства.
Показывает общий объём диска/раздела и свободный.
По умолчанию выводит данные в килобайтах.
Для отображения в мегабайтах добавьте параметр -m.
du — размер файла или папки.
Показывает, сколько места занимает файл или директория.
Лучше вызывать с параметром -h, чтобы получить информацию в МБ, КБ.
free — объём ОЗУ.
Показывает объём доступной и занятой оперативной памяти. Для отображения в МБ, вызывайте с параметром -h.
uname — сведения о системе.
Показывает данные о системе. Для более подробной информации лучше вводить uname -a. Будут выведены имя компьютера и версия ядра.
uptime — время работы системы.
Показывает время непрерывной работы ОС и количество пользователей.
date — вывод даты и времени.
Показания можно форматировать, например установить 12-/ 24-часовой формат, получить наносекунды и тому подобное.
cat /etc/*-release — информация о дистрибутиве.
Команды Linux для управления файлами и папками
pwd — «где я?».
Позволяет узнать, в какой папке вы находитесь.
file — определение типа файла.
Покажет, с чем вы имеете дело (текстовый документ, картинка, папка).
mount/umount — подключение/отключение дисков.
Используется для монтирования дисков, устройств, файловых систем, ISO-образов. Требуются права суперпользователя.
У команд много опций. Смотрите их описание в руководстве, чтобы выбрать ту, которая подходит под вашу задачу.
ls — просмотр содержимого директории.
По умолчанию показывает текущую папку. Чтобы посмотреть, что внутри другой папки, нужно прописать путь к ней.
ls [адрес_конкретной_папки] — покажет, что в этой папке с аргументом -R выдаст, что лежит в подпапках.
Полезные опции:
ls -l выводит список содержимого с подробной информацией.
ls -a показывает скрытые файлы.
du — информация о размере файла или папки.
Полезные опции:
-h — выдаёт размеры в лёгком для чтения формате.
-s — выводит минимум данных.
-d — устанавливает глубину рекурсии по папкам.
df — анализ дискового пространства.
Выдаёт информацию о файловых системах, их размере, использованном и свободном месте.
Полезная опция:
-h — вывод в удобном для чтения формате.
cd — навигация по папкам.
cd [адрес_папки] — перемещение в нужную папку.
Вызов без параметров возвращает в домашнюю директорию.
cd .. — выход на уровень вверх.
cd - — возврат в предыдущую папку.
Если нужно посмотреть, куда можно перейти из текущей папки, введите cd + пробел + два раза нажмите Tab.
Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd + D + двойной Tab.
diff — разница между файлами.
Показывает отличия двух текстовых документов.
mkdir — создание новой папки.
Чтобы создать всю структуру папки с подпапками добавьте параметр -p.
Команда mkdir -p /home/MyNewFolder/OldFolder создаст папку MyNewFolder в домашней директории и переместит в эту новую папку OldFolder, которая была создана ранее.
Чтобы создать сразу 33 папки, достаточно написать:
touch — создание файла.
Изначально команда предназначалась для изменения времени последнего открытия файла или папки, но на практике её чаще используют для создания новых файлов.
cp — копирование файлов и папок.
Для копирования вложенных папок и файлов нужно добавить параметр -r (Recursive).
mv — перемещение/переименование файлов и папок.
В Linux переименование — это как бы перемещение файла в ту же самую папку, но уже под другим именем.
С помощью этой команды можно переименовать сразу несколько файлов.
Код выше поменяет расширение всех файлов в папке с .html на .php.
Здесь используется цикл for, который проходится по всем файлам с расширением .html. Код во второй строке перемещает каждый элемент списка в новое место (= переименовывает), заменяя .html на .php. Фрагмент ${file%.html} удаляет части имени файла .html. Done в третьей строке означает конец цикла for.
rename — переименование файлов.
Более продвинутая, чем mv, команда. Но она требует знания регулярных выражений. С rename превращение .html в .php будет выглядеть так:
Здесь s/ (оператор подстановки) отвечает за поиск строки (.html) и её замену на .php. Квантификатор * означает ноль или более повторений.
rm — удаление файлов и папок.
Чтобы удалить вложенные папки и файлы добавьте параметр -r. Важно: rm удаляет файл или папку без возможности восстановления обычными способами.
rm -rf/ — была когда-то одной из самых опасных команд, потому что удаляла всё и навсегда. Вот её расшифровка:
rm — удалить файлы;
-rf — удалить рекурсивно, то есть пройти по вложенным папкам;
/ — начать с корневой директории.
Поскольку были пользователи, которые не читали мануал и страдали из-за шутников, советовавших чинить свою систему с помощью такой команды, в более поздних версиях Linux её разрушительные возможности ограничили. Ну и да — даже когда она работала как часы, её надо было запускать с правами суперпользователя.
ln — создание жёсткой или символической ссылки на файл.
Символическая ссылка — это примерный аналог ярлыка в Windows. Она просто указывает на файл, а жёсткая — ведёт на физический адрес на диске и фактически создаёт копию файла.
Создание жёсткой ссылки:
Создание символической ссылки:
find — поиск по файловой системе.
Очень полезная команда. Позволяет не только искать файлы и папки по заданным критериям, но и совершать дополнительные действия с ними.
Здесь мы говорим: найди (find) в папке ./myfolder файл с именем (-name) somefile.txt и выполни (-exec) команду удаления (rm) всех файлов {}, спрашивая при этом каждый раз подтверждение (-i).
Опций гораздо больше, см. man.
dd — копирование и преобразование файлов и разделов.
Позволяет копировать и перемещать целые разделы и отдельные файлы.
Нужно указать исходный файл, место, куда копировать и необходимые дополнительные опции.
Часто используется для создания Live USB. Создать образ диска:
wc — статистика по файлу.
Выдаёт количество строк, слов, знаков и байтов.
wget — загрузка файлов из Сети.
Позволяет скачивать изображения, документы, веб-страницы.
Команды для управления правами на файлы и директории
Многие действия в системе выполняются с правами суперпользователя, например установка обновлений, программ или их удаление.
sudo — получение прав суперпользователя.
Например, с помощью следующей команды мы обновим пакеты в Fedora Linux:
sudo su — удобная опция, если нужно выполнить сразу много команд от имени суперпользователя. Если ввести это один раз, далее можно писать нужные команды.
Опытные пользователи советуют избегать этой команды из соображений безопасности.
sudo!! — запуск ранее введённой команды с правами администратора.
sudo gksudo — запуск графических утилит от имени суперпользователя. Формат команды такой: sudo gksudo [название приложения, которое нужно запустить].
Но sudo есть по умолчанию не во всех дистрибутивах. Например, в таких дистрибутивах, как Arch Linux, Gentoo и некоторых других, которые позволяют пользователю настраивать систему почти без ограничений, sudo нужно устанавливать отдельно. Но везде есть su.
chmod — изменение прав доступа к файлу.
Можно дать права на чтение, запись и запуск файла.
chmod опции права /[путь_к_файлу].
Есть три основных вида прав:
- r — чтение;
- w — запись;
- x — выполнение.
И три вида пользователей:
- u — владелец файла;
- g — группа файла;
- o — остальные пользователи.
Есть также цифровой формат записи:
- 0 — никаких прав;
- 1 — только выполнение;
- 2 — только запись;
- 3 — выполнение и запись;
- 4 — только чтение;
- 5 — чтение и выполнение;
- 6 — чтение и запись;
- 7 — чтение, запись и выполнение.
Эта команда разрешит остальным пользователям (всем, кроме владельца файла) чтение и запись в текстовые файлы.
Эта команда даст всем пользователям право читать, писать и запускать файлы в системе.
chown — изменение владельца файла, папки.
Для выполнения этой команды нужно обладать правами суперпользователя.
Чтобы поменять владельца для вложенных файлов и папок, добавьте параметр -R.
Команды для управления пользователями
В Linux может быть несколько пользователей с разными правами.
useradd/userdel/usermod — добавление, удаление, изменение пользователя.
useradd userName — добавить пользователя.
passwd userName — задать пароль для пользователя. При наборе пароля в терминале не будут отображаться никакие символы, но система учтёт все нажатые клавиши.
userdel userName — удалить учётную запись.
usermod userName — редактировать учётную запись.
Команды управления сетью
hostname — определение домена.
Выводит адрес DNS вашей машины.
С опцией -i покажет текущий IP-адрес компьютера.
ip — работа с сетью.
Эта команда заменяет множество других команд, которые раньше использовались для настроек сети, например ifconfig, ipconfig, netstat и прочие.
ip -a — информация о сетевых настройках.
ip address show — выводит сведения о сетевых адресах.
ip route — управление маршрутизацией.
ip -help — узнать все варианты использования.
ping — диагностика сети.
Ping используется для проверки подключения к интернету и тестирования качества связи. Самый простой способ проверить работу сети — ввести ping google.com. Для отмены выполнения команды нажмите Ctrl + C. Также с помощью этой команды можно проверять соединение со своим сервером.
traceroute — как ping, но лучше.
Выводит не только маршрут сетевых пакетов, но и данные по узлу и время доставки пакетов.
nethogs — информация о трафике.
Полезная утилита, которая помогает определить, какая программа сколько трафика потребляет. Не во всех системах установлена по умолчанию.
Команды для архивирования
zip — архивирование файла.
Упаковывает файлы в zip-архив.
unzip — распаковка архива.
Извлекает файлы из архива.
tar — создание резервных копий.
Утилита tar тоже создаёт архивы, но уже с расширением .tar. В отличие от zip, она не сжимает файлы, поэтому её чаще используют для резервного копирования.
Выполняется с параметрами -cf. Просмотреть содержимое .tar можно с помощью опций -tvf. Для распаковки архива .tar используются опции -xvf.
- -c, --create — создать новый архив;
- -t, --list — вывести список содержимого архива;
- -x, --extract — извлечь файлы из архива;
- -v, --verbose — вывести список с деталями;
- -f, --file — файл (архив).
Команды для работы с текстом
Для этих целей используются редакторы Nano и Vim, которые запускаются прямо в окне терминала.
nano — запуск текстового редактора Nano.
Внизу вы видите подсказки к основным командам редактора. Введя текст, сохраните его, нажав комбинацию клавиш Ctrl + О и выходите с помощью Ctrl + X.
vim — запуск текстового редактора Vim.
Vim намного мощнее и сложнее Nano, зато Vim можно использовать как полноценную IDE для программирования и/или работы с текстами. Для выхода из редактора введите :q.
У нас есть полноценный курс по Vim для начинающих.
echo — вывод строки в терминал.
Простая и популярная команда, используется для вывода текста в терминал или файл.
С помощью опции -e можно запускать специальные последовательности. Например, добавив \n, можно выводить слова на новых строках.
Можно раскрасить вывод в разные цвета, а добавив *, вывести содержимое папки.
cat — просмотр содержимого файла.
Команда cat выводит в терминал содержимое файла, который вы укажете в качестве параметра. Вот как она выглядит: cat [путь_к_файлу].
По этой команде выводится содержимое файла, переданного в параметре.
Можно передать сразу несколько файлов.
Можно объединить содержимое нескольких файлов в новом с помощью символа >.
С помощью опции -n (Number) можно вывести определённое количество строк.
grep — поиск по текстовым файлам.
Мощная команда для поиска внутри файлов. Ищет по слову, строке или регулярному выражению.
Чтобы команда вывела найденное в терминал, перед ней нужно ввести cat.
Например, для поиска слова «кот» в файле cats.txt можно ввести:
head — просмотр начала файла.
Похожа на cat, но по умолчанию показывает только первые 10 строк текста.
Для изменения числа выводимых строк есть параметр -n.
head -n 5 ~/Desktop/myfile.txt покажет первые пять строк файла.
tail — просмотр конца файла.
Выводит последние строки текста файла.
С помощью опции -c можно вывести определённое количество байт информации из файла.
Параметр -f позволяет следить за изменениями в файле и выводить их на экран.
more/less — просмотр длинных текстов.
less выводит часть большого текста так, что занимает один экран. С опцией -N показывает номера строк. Ниже — пример работы команды (вчитываться в текст не стоит, он не имеет отношения к самой команде — это просто вывод текстовой информации из случайного текстового файла).
more делает то же самое, что и less, но у неё меньше дополнительных опций. Следующая команда выведет текст, начиная с десятой строки.
sort — сортировка строк.
Сортирует строки текста по разным критериям.
Полезные опции
-n (Numeric) — сортировка по числовому значению.
-r (Reverse) — переворачивает вывод.
Команды для управления процессами
top — отображение процессов.
Эта команда выводит список всех процессов, запущенных в системе.
Альтернативы: atop, xtop или сочетание ps axu | grep [имя_процесса].
Ещё вариант: pidof + [имя процесса].
kill, xkill, pkill — принудительное завершение процессов.
Закрыть программу или завершить процесс можно несколькими способами.
С помощью команды kill: kill [ID_процесса].
Чтобы узнать PID (идентификатор процесса), введите команду top.
С помощью команды xkill. После её ввода вместо курсора появится крестик, наведите его на окно программы, которую нужно закрыть.
С помощью команды pkill (завершение процесса по имени).
killall — завершение всех процессов с указанным именем.
Пакетные менеджеры. Как установить приложение
Для установки и удаления приложений и обновлений в Linux используются пакетные менеджеры. В каждом дистрибутиве или семействах дистрибутивов они разные.
В Ubuntu и Debian это APT, в Fedora — DNF, в Arch и Manjaro — Pacman, в Gentoo — Portage, в openSUSE — RPM.
Для установки пакетов нужны права суперпользователя. Примеры команд:
dnf (Fedora).
sudo dnf install [имя_пакета] — установка пакета.
sudo dnf update — обновление сведений о пакетах.
sudo dnf upgrade — обновление пакетов.
sudo dnf remove [имя_пакета] — удаление пакета.
dnf autoremove — автоматическое удаление ненужных файлов с их зависимостями.
Узнать, есть ли нужная программа в репозиториях или как она точно называется, можно через поиск. В Fedora это команда dnf search [имя пакета].
Можно также скачать файл и установить его через терминал. Программы, совместимые с дистрибутивами на основе Debian, имеют расширение .deb.
Установить такой файл можно командой dpkg: dpkg -i package.deb.
dpkg —remove package — удаление пакета.
dpkg —purge package — удаление пакета со всеми зависимостями.
Команды выключения и перезагрузки
Linux можно выключить или перезагрузить из терминала. Это незаменимая опция для тех, кто работает без графического окружения, и полезная, если нужно задать разные условия выключения и перезагрузки.
sudo shutdown — выключение системы (обратите внимание, этой программе нужны права суперпользователя).
Полезные опции команды shutdown:
shutdown +[время в 24-часовом формате].
shutdown 05:10 выключит компьютер через 5 часов 10 минут.
shutdown +[время в минутах].
shutdown +7 выключит компьютер через 7 минут.
shutdown +0 или shutdown now — немедленное выключение компьютера.
Полезные клавиши и функции
Tab — автозавершение.
Чтобы не вводить длинные названия файлов и папок или команд, достаточно написать пару первых букв и нажать Tab, система сама дополнит команду или путь к файлу — но только до того символа, с которого начнётся «разветвление». Звучит сложно, но вот пример: если набрать /home/[username]/D, то автокомплит не сработает, потому что по этому пути есть три папки, которые начинаются на букву D — Downloads, Documents и Desktop.
alias — создание синонимов для команд.
С помощью alias можно переименовывать команды или создавать свои. Это удобно, если команда имеет длинное имя, а вы часто ей пользуетесь.
Синтаксис: alias [длинная_команда короткая_команда].
Чтобы узнать, какие алиасы уже есть в системе, введите alias:
Создать алиас для команды clear можно так:
unalias [alias name] — удалить alias.
Созданным таким образом алиасы сохраняются только до следующей перезагрузки системы. Чтобы сделать алиас постоянным, нужно прописать его в файле ~/.bashrc.
& & — выполнение сразу нескольких команд.
Команды можно связывать и запускать вместе.
[первая_команда] & & [вторая_команда].
| (pipe) — вывод результата первой команды во вторую.
ps axu | grep [имя_процесса].
Горячие клавиши
Ctrl + Shift + T — открыть новую вкладку в терминале.
Ctrl + Shift + C — копировать текст из терминала, аналог Ctrl + C.
Ctrl + Shift + V — вставить текст в терминал, аналог Ctrl + V.
Ctrl + A, Ctrl + E — перемещение в начало/конец строки в терминале.
Alt + B, Alt + F — перемещение по слову назад/вперёд.
Alt + D — удаление следующего слова.
Ctrl + U — удалить всё до начала.
Ctrl + K — удалить всё до конца.
Ctrl + L — очистить экран, не удаляя текущую команду.
Самые главные команды
Может потребоваться установка пакетов cowsay и fortune (sudo apt-get install fortunes fortune-mod fortunes-min fortunes-ru).
cowsay — говорящая корова.
cowsay + [любое слово/фраза].
Выведет на экран корову, которая произносит введённое слово.
fortune | cowsay — корова поделится умной мыслью или цитатой.
cowsay -l — список других животных.
Выведет список других существ, которых можно вызвать в терминале.
fortune | cowsay -f [животное].
Выведет животное, произносящее умную мысль или цитату.
Итоги
- Обратите внимание: команды и их ключи в терминале Linux чувствительны к регистру — постановка прописной или строчной буквы влияет на их работоспособность.
- Навыки работы с командной строкой помогут легко взаимодействовать практически с любой Unix-подобной операционной системой.
- Использование горячих клавиш позволяет значительно ускорить работу с терминалом — собственно, без них работа будет идти довольно медленно.
Больше интересного про код в нашем телеграм-канале. Подписывайтесь!