Код
#Руководства

Основные команды и горячие клавиши терминала 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 число:

$ history 5
 1010  ip -h monitor
 1011  whatis ls
 1012  nethogs
 1013  clear
 1014  history 5
$ 

«Листать» введённые ранее команды можно с помощью клавиш со стрелками «вверх» и «вниз».

sleep [number] — отложить выполнение следующей команды. Полезно, когда выполнение следующей команды зависит от успешного завершения предыдущей.

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

  • s — секунды;
  • m — минуты;
  • h — часы;
  • d — дни.

Следующий пример запустит файл song в программе mplayer через 2 часа 20 мин:

$ sleep 2h 20m && mplayer song.mp3 

Команды для отображения справочной информации по командам и терминалу

С помощью командной строки можно быстро получить информацию о программах, состоянии системы и настройках.

man [имя_пакета] — главное руководство по командам Linux.

Даёт подробную информацию по команде и её использованию. У каждой команды есть множество опций, запомнить их все сложно, поэтому стоит научиться пользоваться руководством. Поначалу вывод man кажется запутанным, но стоит с ним разобраться — и необходимость гуглить сведётся к минимуму.

Например, man ls выведет следующую информацию:

LS(1)                                      User Commands                                     LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information about the FILEs (the current directory by default). Sort entries alpha‐
       betically if none of -cftuvSUX nor --sort is specified.

       Mandatory arguments to long options are mandatory for short options too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
              with -l, print the author of each file
...

Вывод man включает следующие поля:

  • Name — имя команды, которую описывает man-страница.
  • Synopsis — краткое описание команды и её синтаксиса.
  • Description — объяснение того, что делает программа.
  • Options — описание опций командной строки, которые принимает команда, и дополнительная информация.

Самое полезное тут — опции. Например, вы хотите вывести список не только файлов, а ещё и их авторов. Выбираете в man нужную опцию и пишете:

ls --author -l
total 225824
-rw-r--r--.  1 tam tam tam   5615374 Nov 29  2021  1default.png
-rw-r--r--.  1 tam tam tam   5517455 Nov 29  2021  2default.png
-rw-r--r--.  1 tam tam tam   5807674 Nov 29  2021  3default.png
-rw-r--r--.  1 tam tam tam   6155385 Nov 29  2021  4default.png
-rw-r--r--.  1 tam tam tam   6039516 Nov 29  2021  5default.png
-rw-r--r--.  1 tam tam tam   5464565 Nov 29  2021  6default.png

LS (1) в выводе man означает первую страницу. Перемещаться по тексту можно с помощью колеса мыши, стрелок вверх/вниз, клавиши пробел или PgUp/PgDn. Перейти в начало/конец руководства можно с помощью клавиш Home и End.

Если ввести заглавную Н, то появится более детальная подсказка с альтернативными способами передвижения по тексту.

Для поиска конкретного слова в man введите ? [искомое_слово] и жмите Enter.

help — справка.

Если в мануале нет информации по команде или утилите или требуется краткая справка, то help — то, что нужно.

ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all                  do not ignore entries starting with .
  -A, --almost-all           do not list implied . and ..
      --author               with -l, print the author of each file
  -b, --escape               print C-style escapes for nongraphic characters
      --block-size=SIZE      with -l, scale sizes by SIZE when printing them;
                             e.g., '--block-size=M'; see SIZE format below

whatis [имя_пакета] — краткое описание утилиты.

$ whatis whatis
whatis (1)           - display one-line manual page descriptions

Команды для получения информации о системе

whoami — информация о текущем пользователе системы.

$ whoami
tam

whereis — путь к программе.

Показывает полный путь к исполняемому файлу.

$ whereis firefox
firefox: /usr/bin/firefox /usr/lib64/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz

lsblk — информация о дисках.

Выводит данные о дисках, разделах и их названия (sda1, sda2 и тому подобное).

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 931.5G  0 disk 
├─sda1        8:1    0   128G  0 part /run/media/tam/25881-1
└─sda2        8:2    0 803.5G  0 part 
zram0       252:0    0     8G  0 disk [SWAP]
nvme0n1     259:0    0 476.9G  0 disk 
├─nvme0n1p1 259:1    0   200M  0 part /boot/efi
├─nvme0n1p2 259:2    0     1G  0 part /boot
├─nvme0n1p3 259:3    0 439.1G  0 part /home
└─nvme0n1p4 259:4    0  36.7G  0 part /

df — объём занятого пространства.

Показывает общий объём диска/раздела и свободный.

По умолчанию выводит данные в килобайтах.

Для отображения в мегабайтах добавьте параметр -m.

$ df -m
Filesystem     1M-blocks   Used Available Use% Mounted on
devtmpfs               4      0         4   0% /dev
tmpfs               7896    195      7701   3% /dev/shm
tmpfs               3159      2      3157   1% /run
/dev/nvme0n1p4     36674  20796     13984  60% /
tmpfs               7896     46      7851   1% /tmp
/dev/nvme0n1p2       974    271       636  30% /boot
/dev/nvme0n1p3    441436 349935     69006  84% /home
/dev/nvme0n1p1       200     18       183   9% /boot/efi
tmpfs               1580     12      1568   1% /run/user/1000

du — размер файла или папки.

Показывает, сколько места занимает файл или директория.

Лучше вызывать с параметром -h, чтобы получить информацию в МБ, КБ.

du -h ~/Desktop 

15G	/home/tam/Desktop

free — объём ОЗУ.

Показывает объём доступной и занятой оперативной памяти. Для отображения в МБ, вызывайте с параметром -h.

$ free -h
               total        used        free      shared  buff/cache   available
Mem:            15Gi        10Gi       536Mi       1.4Gi       4.3Gi       3.2Gi
Swap:          8.0Gi       6.9Gi       1.1Gi

uname — сведения о системе.

Показывает данные о системе. Для более подробной информации лучше вводить uname -a. Будут выведены имя компьютера и версия ядра.

$ uname -a
Linux fedora 6.1.14-200.fc37.x86_64 #1 SMP PREEMPT_DYNAMIC Sun Feb 26 00:13:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

uptime — время работы системы.

Показывает время непрерывной работы ОС и количество пользователей.

$ uptime
 22:18:30 up 14 days, 21:50,  1 user,  load average: 0.48, 0.53, 0.54

date — вывод даты и времени.

Показания можно форматировать, например установить 12-/ 24-часовой формат, получить наносекунды и тому подобное.

$ date
Tue 21 Mar 22:18:58 

cat /etc/*-release — информация о дистрибутиве.

$ cat /etc/*-release
Fedora release 37 (Thirty Seven)
NAME="Fedora Linux"
VERSION="37 (Workstation Edition)"

Команды Linux для управления файлами и папками

pwd — «где я?».

Позволяет узнать, в какой папке вы находитесь.

$ pwd
/home/tam

file — определение типа файла.

Покажет, с чем вы имеете дело (текстовый документ, картинка, папка).

$ file Dropbox/
Dropbox/: directory

mount/umount — подключение/отключение дисков.

Используется для монтирования дисков, устройств, файловых систем, ISO-образов. Требуются права суперпользователя.

У команд много опций. Смотрите их описание в руководстве, чтобы выбрать ту, которая подходит под вашу задачу.

$ mount /dev/sdb1 /mnt — эта команда примонтирует флешку.
$ sudo umount /dev/sdb1 — а эта, наоборот, демонтирует её.

ls — просмотр содержимого директории.

По умолчанию показывает текущую папку. Чтобы посмотреть, что внутри другой папки, нужно прописать путь к ней.

ls [адрес_конкретной_папки] — покажет, что в этой папке с аргументом -R выдаст, что лежит в подпапках.

$ ls Desktop 


 2014.pdf
 50689841.pdf
 959f945cb24b3d3f7b68306e5ce1b301.jpg
 98551794.pdf
 archive
 dir00
 dir01
 dir02
 dir03
 dir04
 dir05

Полезные опции:

ls -l выводит список содержимого с подробной информацией.

ls -a показывает скрытые файлы.

du — информация о размере файла или папки.

Полезные опции:

-h — выдаёт размеры в лёгком для чтения формате.

-s — выводит минимум данных.

-d — устанавливает глубину рекурсии по папкам.

$ du -h -s Desktop/
15G	Desktop/

df — анализ дискового пространства.

Выдаёт информацию о файловых системах, их размере, использованном и свободном месте.

Полезная опция:

-h — вывод в удобном для чтения формате.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           7.8G  212M  7.6G   3% /dev/shm
tmpfs           3.1G  1.9M  3.1G   1% /run
/dev/nvme0n1p4   36G   21G   14G  60% /
tmpfs           7.8G   54M  7.7G   1% /tmp
/dev/nvme0n1p2  974M  271M  636M  30% /boot
/dev/nvme0n1p3  432G  342G   68G  84% /home
/dev/nvme0n1p1  200M   18M  183M   9% /boot/efi
tmpfs           1.6G   12M  1.6G   1% /run/user/1000

cd — навигация по папкам.

cd [адрес_папки] — перемещение в нужную папку.

Вызов без параметров возвращает в домашнюю директорию.

cd .. — выход на уровень вверх.

cd - — возврат в предыдущую папку.

$ cd Desktop/
[tam@fedora Desktop]$

Если нужно посмотреть, куда можно перейти из текущей папки, введите cd + пробел + два раза нажмите Tab.

$ cd + 
archive/                             iscan-gt-s600-bundle-2.30.4.x64.rpm/
dir00/                               pics/
dir01/                               OneDrive/
dir02/                               OneDrive-2021/
dir03/                               Photos/
dir04/                               Photos_c/
dir05/                               REACT/

Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd + D + двойной Tab.

cd + D
dir00/ dir01/ dir02/ dir03/ dir04/ dir05/ 

diff — разница между файлами.

Показывает отличия двух текстовых документов.

$ diff textfile-1.txt textfile-2.txt

1,2c1,2
< Если нужно посмотреть, куда можно перейти из текущей папки, введите cd + пробел + двойной Tab.
< Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd + D + двойной Tab.
---
> diff — разница между файлами.
> Показывает разницу между двумя текстовыми файлами.

mkdir — создание новой папки.

Чтобы создать всю структуру папки с подпапками добавьте параметр -p.

$ mkdir Desktop/myfolder

Команда mkdir -p /home/MyNewFolder/OldFolder создаст папку MyNewFolder в домашней директории и переместит в эту новую папку OldFolder, которая была создана ранее.

Чтобы создать сразу 33 папки, достаточно написать:

$ mkdir dir{00..33}
$ ls
dir00  dir04  dir08  dir12  dir16  dir20  dir24  dir28  dir32
dir01  dir05  dir09  dir13  dir17  dir21  dir25  dir29  dir33
dir02  dir06  dir10  dir14  dir18  dir22  dir26  dir30
dir03  dir07  dir11  dir15  dir19  dir23  dir27  dir31

touch — создание файла.

Изначально команда предназначалась для изменения времени последнего открытия файла или папки, но на практике её чаще используют для создания новых файлов.

$ touch /home/Ivan /myfile.txt

cp — копирование файлов и папок.

Для копирования вложенных папок и файлов нужно добавить параметр -r (Recursive).

$ cp myfile.txt /home/Ivan/Desktop

mv — перемещение/переименование файлов и папок.

В Linux переименование — это как бы перемещение файла в ту же самую папку, но уже под другим именем.

$ mv oldname.txt newname.txt

С помощью этой команды можно переименовать сразу несколько файлов.

$ for f in *.html; do
    mv -- "$f" "${f%.html}.php"
done

Код выше поменяет расширение всех файлов в папке с .html на .php.

Здесь используется цикл for, который проходится по всем файлам с расширением .html. Код во второй строке перемещает каждый элемент списка в новое место (= переименовывает), заменяя .html на .php. Фрагмент ${file%.html} удаляет части имени файла .html. Done в третьей строке означает конец цикла for.

rename — переименование файлов.

Более продвинутая, чем mv, команда. Но она требует знания регулярных выражений. С rename превращение .html в .php будет выглядеть так:

$ rename 's/.html/.php/' \*.html

Здесь s/ (оператор подстановки) отвечает за поиск строки (.html) и её замену на .php. Квантификатор * означает ноль или более повторений.

rm — удаление файлов и папок.

Чтобы удалить вложенные папки и файлы добавьте параметр -r. Важно: rm удаляет файл или папку без возможности восстановления обычными способами.

rm -rf/ — была когда-то одной из самых опасных команд, потому что удаляла всё и навсегда. Вот её расшифровка:

rm — удалить файлы;

-rf — удалить рекурсивно, то есть пройти по вложенным папкам;

/ — начать с корневой директории.

Поскольку были пользователи, которые не читали мануал и страдали из-за шутников, советовавших чинить свою систему с помощью такой команды, в более поздних версиях Linux её разрушительные возможности ограничили. Ну и да — даже когда она работала как часы, её надо было запускать с правами суперпользователя.

ln — создание жёсткой или символической ссылки на файл.

Символическая ссылка — это примерный аналог ярлыка в Windows. Она просто указывает на файл, а жёсткая — ведёт на физический адрес на диске и фактически создаёт копию файла.

Создание жёсткой ссылки:

$ ln /home/ivan/videos/video.mp4 /home/ivan/Desktop/hard_link_to_video_file

Создание символической ссылки:

$ ln -s /home/ivan/video.mp4 soft_link_to_video_file

find — поиск по файловой системе.

Очень полезная команда. Позволяет не только искать файлы и папки по заданным критериям, но и совершать дополнительные действия с ними.

find ./myfolder -name file.txt
поиск файла с определённым именем (file.txt) в папке ./myfolder
find ./myfolder -name *.txt
поиск всех файлов с расширением .txt в конкретной папке
find ./myfolder -name somefile.txt -exec rm -i {} \
поиск и удаление файла с подтверждением (то есть вам надо будет подтвердить, что вы действительно хотите удалить файл)

Здесь мы говорим: найди (find) в папке ./myfolder файл с именем (-name) somefile.txt и выполни (-exec) команду удаления (rm) всех файлов {}, спрашивая при этом каждый раз подтверждение (-i).

Опций гораздо больше, см. man.

dd — копирование и преобразование файлов и разделов.

Позволяет копировать и перемещать целые разделы и отдельные файлы.

Нужно указать исходный файл, место, куда копировать и необходимые дополнительные опции.

Часто используется для создания Live USB. Создать образ диска:

$ sudo dd if=/dev/sda of=/tmp/sdadisk.img

wc — статистика по файлу.

Выдаёт количество строк, слов, знаков и байтов.

$ wc ~/Desktop/textfile-1.txt 
  2  32 312 /home/tam/Desktop/textfile-1.txt

wget — загрузка файлов из Сети.

Позволяет скачивать изображения, документы, веб-страницы.

$ wget https://www.somesite.ru/some.jpg
$ wget ya.ru
--2023-03-22 00:42:47--  http://ya.ru/
Resolving ya.ru (ya.ru)... 2a02:6b8::2:242, 77.88.55.242, 5.255.255.242
Connecting to ya.ru (ya.ru)|2a02:6b8::2:242|:80... connected.
[...]
Length: 1727 (1.7K) [text/html]
Saving to: 'index.html'

index.html          100%[===================>]   1.69K  --.-KB/s    in 0s      

2023-03-22 00:42:48 (69.8 MB/s) - 'index.html' saved [1727/1727]

Команды для управления правами на файлы и директории

Многие действия в системе выполняются с правами суперпользователя, например установка обновлений, программ или их удаление.

sudo — получение прав суперпользователя.

Например, с помощью следующей команды мы обновим пакеты в Fedora Linux:

$ sudo dnf update

sudo su — удобная опция, если нужно выполнить сразу много команд от имени суперпользователя. Если ввести это один раз, далее можно писать нужные команды.

Опытные пользователи советуют избегать этой команды из соображений безопасности.

sudo!! — запуск ранее введённой команды с правами администратора.

sudo gksudo — запуск графических утилит от имени суперпользователя. Формат команды такой: sudo gksudo [название приложения, которое нужно запустить].

Но sudo есть по умолчанию не во всех дистрибутивах. Например, в таких дистрибутивах, как Arch Linux, Gentoo и некоторых других, которые позволяют пользователю настраивать систему почти без ограничений, sudo нужно устанавливать отдельно. Но везде есть su.

chmod — изменение прав доступа к файлу.

Можно дать права на чтение, запись и запуск файла.

chmod опции права /[путь_к_файлу].

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

  • r — чтение;
  • w — запись;
  • x — выполнение.

И три вида пользователей:

  • — владелец файла;
  • g — группа файла;
  • o — остальные пользователи.

Есть также цифровой формат записи:

  • 0 — никаких прав;
  • 1 — только выполнение;
  • 2 — только запись;
  • 3 — выполнение и запись;
  • 4 — только чтение;
  • 5 — чтение и выполнение;
  • 6 — чтение и запись;
  • 7 — чтение, запись и выполнение.
$ chmod o+w *.txt 

Эта команда разрешит остальным пользователям (всем, кроме владельца файла) чтение и запись в текстовые файлы.

$ chmod -R 777 / 

Эта команда даст всем пользователям право читать, писать и запускать файлы в системе.

chown — изменение владельца файла, папки.

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

Чтобы поменять владельца для вложенных файлов и папок, добавьте параметр -R.

Команды для управления пользователями

В Linux может быть несколько пользователей с разными правами.

useradd/userdel/usermod — добавление, удаление, изменение пользователя.

useradd userName — добавить пользователя.

passwd userName — задать пароль для пользователя. При наборе пароля в терминале не будут отображаться никакие символы, но система учтёт все нажатые клавиши.

userdel userName — удалить учётную запись.

usermod userName — редактировать учётную запись.

Команды управления сетью

hostname — определение домена.

Выводит адрес DNS вашей машины.

$ hostname
fedora

С опцией -i покажет текущий IP-адрес компьютера.

ip — работа с сетью.

Эта команда заменяет множество других команд, которые раньше использовались для настроек сети, например ifconfig, ipconfig, netstat и прочие.

ip -a — информация о сетевых настройках.

$ ip -a
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip [ -force ] -batch filename
where  OBJECT := { address | addrlabel | amt | fou | help | ila | ioam | l2tp |
                   link | macsec | maddress | monitor | mptcp | mroute | mrule |
                   neighbor | neighbour | netconf | netns | nexthop | ntable |
                   ntbl | route | rule | sr | tap | tcpmetrics |
                   token | tunnel | tuntap | vrf | xfrm }
       OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
                    -h[uman-readable] | -iec | -j[son] | -p[retty] |
                    -f[amily] { inet | inet6 | mpls | bridge | link } |
                    -4 | -6 | -M | -B | -0 |
                    -l[oops] { maximum-addr-flush-attempts } | -br[ief] |
                    -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
                    -rc[vbuf] [size] | -n[etns] name | -N[umeric] | -a[ll] |
                    -c[olor]}

ip address show — выводит сведения о сетевых адресах.

ip route — управление маршрутизацией.

ip -help — узнать все варианты использования.

ping — диагностика сети.

Ping используется для проверки подключения к интернету и тестирования качества связи. Самый простой способ проверить работу сети — ввести ping google.com. Для отмены выполнения команды нажмите Ctrl + C. Также с помощью этой команды можно проверять соединение со своим сервером.

$ ping google.com
PING google.com(lb-in-f101.1e100.net (2a00:1450:4010:c1e::65)) 56 data bytes
64 bytes from lb-in-f101.1e100.net (2a00:1450:4010:c1e::65): icmp_seq=1 ttl=108 time=40.9 ms

traceroute — как ping, но лучше.

Выводит не только маршрут сетевых пакетов, но и данные по узлу и время доставки пакетов.

nethogs — информация о трафике.

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

Команды для архивирования

zip — архивирование файла.

Упаковывает файлы в zip-архив.

$ zip my-archive.zip /home/Ivan/file-to-archive.txt

unzip — распаковка архива.

Извлекает файлы из архива.

tar — создание резервных копий.

Утилита tar тоже создаёт архивы, но уже с расширением .tar. В отличие от zip, она не сжимает файлы, поэтому её чаще используют для резервного копирования.

Выполняется с параметрами -cf. Просмотреть содержимое .tar можно с помощью опций -tvf. Для распаковки архива .tar используются опции -xvf.

tar -xvf newark.tar
  • -c, --create — создать новый архив;
  • -t, --list — вывести список содержимого архива;
  • -x, --extract — извлечь файлы из архива;
  • -v, --verbose — вывести список с деталями;
  • -f, --file — файл (архив).

Команды для работы с текстом

Для этих целей используются редакторы Nano и Vim, которые запускаются прямо в окне терминала.

nano — запуск текстового редактора Nano.

$ nano textfile-1.txt
Вывод работы команды
Скриншот: Skillbox Media

Внизу вы видите подсказки к основным командам редактора. Введя текст, сохраните его, нажав комбинацию клавиш Ctrl + О и выходите с помощью Ctrl + X.

vim — запуск текстового редактора Vim.

Vim намного мощнее и сложнее Nano, зато Vim можно использовать как полноценную IDE для программирования и/или работы с текстами. Для выхода из редактора введите :q.

Вывод работы команды
Скриншот: Skillbox Media

У нас есть полноценный курс по Vim для начинающих.

echo — вывод строки в терминал.

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

$ echo Hello, World!
Hello, World!

С помощью опции -e можно запускать специальные последовательности. Например, добавив \n, можно выводить слова на новых строках.

$ echo -e "Hello, \nWorld \n!"
Hello, 
World 
!

Можно раскрасить вывод в разные цвета, а добавив *, вывести содержимое папки.

$ echo *
dir00 dir01 dir02 dir03 dir04 dir05 dir06 dir07 dir08 dir09 dir10 dir11 dir12 dir13 dir14 dir15 dir16 dir17 dir18 dir19 dir20 dir21 dir22 dir23 dir24 dir25 dir26 dir27 dir28 dir29 dir30 dir31 dir32 dir33 index.html

cat — просмотр содержимого файла.

Команда cat выводит в терминал содержимое файла, который вы укажете в качестве параметра. Вот как она выглядит: cat [путь_к_файлу].

$ cat textfile-1.txt 
Если нужно посмотреть, куда можно перейти из текущей папки, введите cd + пробел + двойной Tab.
Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd + D + двойной Tab.

По этой команде выводится содержимое файла, переданного в параметре.

Можно передать сразу несколько файлов.

Можно объединить содержимое нескольких файлов в новом с помощью символа >.

$ cat textfile-1.txt textfile-2.txt > textfile-3.txt

С помощью опции -n (Number) можно вывести определённое количество строк.

grep — поиск по текстовым файлам.

Мощная команда для поиска внутри файлов. Ищет по слову, строке или регулярному выражению.

Чтобы команда вывела найденное в терминал, перед ней нужно ввести cat.

Например, для поиска слова «кот» в файле cats.txt можно ввести:

$ cat cats.txt | grep кот

head — просмотр начала файла.

Похожа на cat, но по умолчанию показывает только первые 10 строк текста.

Для изменения числа выводимых строк есть параметр -n.

head -n 5 ~/Desktop/myfile.txt покажет первые пять строк файла.

$ head -n 5 ~/Desktop/textfile-1.txt
Если нужно посмотреть, куда можно перейти из текущей папки, введите cd + пробел + двойной Tab.
Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd + D + двойной Tab.

tail — просмотр конца файла.

Выводит последние строки текста файла.

С помощью опции -c можно вывести определённое количество байт информации из файла.

$ tail -c 100 textfile-3.txt
ми
Показывает разницу между двумя текстовыми файлами.

Параметр -f позволяет следить за изменениями в файле и выводить их на экран.

more/less — просмотр длинных текстов.

less выводит часть большого текста так, что занимает один экран. С опцией -N показывает номера строк. Ниже — пример работы команды (вчитываться в текст не стоит, он не имеет отношения к самой команде — это просто вывод текстовой информации из случайного текстового файла).

$ less -N textfile-3.txt
1. Если нужно посмотреть, куда можно перейти из текущей папки, введите cd        1 + пробел + двойной Tab.
      2. Чтобы узнать, какие папки начинаются, например, с буквы D, введите cd  +      2  D + двойной Tab.
      3. diff -- разница между файлами.
      4. Показывает разницу между двумя текстовыми файлами.

more делает то же самое, что и less, но у неё меньше дополнительных опций. Следующая команда выведет текст, начиная с десятой строки.

$ more +10 newtestfile.txt 
Вывод работы команды more
Скриншот: Skillbox Media

sort — сортировка строк.

Сортирует строки текста по разным критериям.

Полезные опции

-n (Numeric) — сортировка по числовому значению.

-r (Reverse) — переворачивает вывод.

$ sort text-to-sort.txt 
computer
data
GUI
line
linux
mouse
skillbox
terminal
$ sort -r text-to-sort.txt 
terminal
skillbox
mouse
linux
line
GUI
data
computer

Команды для управления процессами

top — отображение процессов.

Эта команда выводит список всех процессов, запущенных в системе.

Скриншот: Skillbox Media

Альтернативы: atop, xtop или сочетание ps axu | grep [имя_процесса].

$ ps axu | grep firefox
tam       531905  1.0  3.0 5597628 498708 ?      Sl   Mar15  96:44 /usr/lib64/firefox/firefox
tam       531917  0.0  0.0   4808  2320 ?        Ss   Mar15   1:20 /usr/libexec/cgroupify app-gnome-firefox-531905.scope
tam       532027  0.0  0.0 253672 11184 ?        Sl   Mar15   0:00 /usr/lib64/firefox/firefox -contentproc -parentBuildID 20230214102510 -prefsLen 29270 -prefMapSize 240130 -appDir /usr/lib64/firefox/browser {f6b45f8f-ab5a-4190-88dc-cb4e27948d4e} 531905 socket

Ещё вариант: pidof + [имя процесса].

$ pidof firefox
782667 782616 782563 782548 782341 782031 781966 781483 759503 741791 741676 721674 719583 671683 651779 647050 646496 641065 638796 635042 634566 631565 586886 586388 584499 584009 567091 566046 565460 565175 562873 562301 560923 560876 557257 553088 550860 549445 543830 543783 541594 535504 532439 532437 532180 532096 532027 531905

kill, xkill, pkill — принудительное завершение процессов.

Закрыть программу или завершить процесс можно несколькими способами.

С помощью команды kill: kill [ID_процесса].

Чтобы узнать PID (идентификатор процесса), введите команду top.

С помощью команды xkill. После её ввода вместо курсора появится крестик, наведите его на окно программы, которую нужно закрыть.

С помощью команды pkill (завершение процесса по имени).

pkill firefox

killall — завершение всех процессов с указанным именем.

killall firefox

Пакетные менеджеры. Как установить приложение

Для установки и удаления приложений и обновлений в 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 — автоматическое удаление ненужных файлов с их зависимостями.

Вывод работы команды
Скриншот: Skillbox Media

Узнать, есть ли нужная программа в репозиториях или как она точно называется, можно через поиск. В Fedora это команда dnf search [имя пакета].

$ dnf search firefox
Last metadata expiration check: 3:23:53 ago on Tue 21 Mar 2023 22:33:02 MSK.
========================== Name & Summary Matched: firefox ===========================
firefox.x86_64 : Mozilla Firefox Web browser
firefox-langpacks.x86_64 : Firefox langpacks
firefox-pkcs11-loader.x86_64 : Helper script for Firefox that sets up the browser for
                             : authentication with Estonian ID-card
firefox-wayland.x86_64 : Firefox Wayland launcher.
firefox-x11.x86_64 : Firefox X11 launcher.
============================== Summary Matched: firefox ==============================
icecat.x86_64 : GNU version of Firefox browser
mozilla-https-everywhere.noarch : HTTPS enforcement extension for Mozilla Firefox
mozilla-noscript.noarch : JavaScript white list extension for Mozilla Firefox
mozilla-ublock-origin.noarch : An efficient blocker for Firefox
profile-cleaner.noarch : Script to vacuum and reindex sqlite databases used by Firefox
                       : and by Chrome
textern.x86_64 : Firefox add-on for editing text in your favorite external editor
webextension-token-signing.x86_64 : Chrome and Firefox extension for signing with your
                                  : eID on the web

Можно также скачать файл и установить его через терминал. Программы, совместимые с дистрибутивами на основе 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:

$ alias
alias cp='cp -i'
alias df='df -h'
alias egrep='egrep --colour=auto'
alias fgrep='fgrep --colour=auto'
alias free='free -m'
alias grep='grep --colour=auto'
alias ls='ls --color=auto'
alias more='less'
alias np='nano -w PKGBUILD'

Создать алиас для команды clear можно так:

$ alias c='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 — корова поделится умной мыслью или цитатой.

$ fortune | cowsay
 _________________________________________ 
/ "Call immediately. Time is running out. \
| We both need to do something monstrous  |
| before we die."                         |
|                                         |
| -- Message from Ralph Steadman to       |
\ Hunter Thompson                         /
 ----------------------------------------- 
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

cowsay -l — список других животных.

Выведет список других существ, которых можно вызвать в терминале.

fortune | cowsay -f [животное].

Выведет животное, произносящее умную мысль или цитату.

Итоги

  • Обратите внимание: команды и их ключи в терминале Linux чувствительны к регистру — постановка прописной или строчной буквы влияет на их работоспособность.
  • Навыки работы с командной строкой помогут легко взаимодействовать практически с любой Unix-подобной операционной системой.
  • Использование горячих клавиш позволяет значительно ускорить работу с терминалом — собственно, без них работа будет идти довольно медленно.

Больше интересного про код в нашем телеграм-канале. Подписывайтесь!

Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована