При знакомстве с Linux удобно иметь под рукой небольшой справочник основных команд. Новичкам будет полезно в тех случаях, когда нет возможности сделать что-либо через привычный файловый менеджер или при первых подключениях к серверу по SSH, а также для понимания того, что в некоторых случаях проще всего использовать именно терминал, вместо файлового менеджера.
Основные команды Linux-терминала поделены на несколько разделов, ниже содержание, откуда вы можете перейти в любой раздел статьи.
- Навигация в системе
- Как узнать текущую папку
- Как узнать что хранится в папке
- Как перейти в другую папку
- Как вернуться назад, в исходную папку
- Как перейти наверх, в родительскую папку
- Как найти файл или папку по имени
- Как найти файл по его содержимому
- Работа с файлами и папками
- Как создать папку
- Как создать файл
- Как вывести содержимое файла
- Как редактировать файл
- Как скопировать файл
- Как скопировать папку
- Как перенести файл
- Как перенести папку
- Как удалить файл
- Способ 1
- Способ 2
- Способ 3
- Как удалить папку
- Система и утилиты
- Как посмотреть инструкцию к команде прямо в терминале
- Как посмотреть историю команд
- history + tail
- history + grep
- Как посмотреть все запущенные процессы
- Как завершить процесс принудительно
- Выясняем имя «жертвы»
- Как узнать версию и разрядность Linux
- Узнаем версию дистрибутива
- Как узнать версию ядра Linux
- Как узнать разрядность Linux
- Информация о сети
- Как узнать внешний IP-адрес
- Способ 1: wget
- Способ 2: curl (проще)
- Как узнать локальный IP-адрес
Навигация в системе
Как узнать текущую папку
Иногда в терминале не показывается в какой именно папке находится пользователь и требуется выяснить исходную точку для дальнейших движений. Узнать «где я?» можно командой pwd
:
pwd
Пример в терминале:
$ pwd /home/uxumax
Данный вывод показывает, что мы находимся в домашней папке /home/uxumax
Как узнать что хранится в папке
Теперь, когда мы выяснили в какой папке находимся, посмотрим содержимое этой папки. Это делается при помощи команды ls
:
ls
Предварительно для примера в этой папке было создано 10 тестовых файлов и с ними вывод команды ls
в терминале выглядит так:
$ ls file-1 file-10 file-2 file-3 file-4 file-5 file-6 file-7 file-8 file-9
По-умолчанию выводится в одну строку. Чтобы получить вывод списком, нужно добавить опцию -l
$ ls -l -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-1 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-10 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-2 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-3 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-4 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-5 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-6 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-7 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-8 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-9
С опцией -l
мы получаем более информативный вывод, где
-
-rw-r--r--
— права на файл, которые говорят, что редактировать может только владелец, а остальные все только читать -
uxumax uxumax
— владелец файла и группа -
0
— вес файла в байтах, то есть все тестовые файлы пустые и не содержат никакого текста -
Sep 8 10:50
— дата создания файла -
file-*
— имя файла, последний «столбец»
Но опция -l
не выводит скрытые файлы. Для того, чтобы увидеть в списке и их тоже, нужно добавить к ней букву A
:
ls -lA
И увидим полный вывод, со всеми скрытыми файлами, без «недосказанностей»:
$ ls -lA -rw------- 1 uxumax uxumax 53 Aug 31 11:24 .bash_history -rw-r--r-- 1 uxumax uxumax 220 Aug 31 10:13 .bash_logout -rw-r--r-- 1 uxumax uxumax 3526 Aug 31 10:13 .bashrc -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-1 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-10 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-2 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-3 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-4 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-5 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-6 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-7 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-8 -rw-r--r-- 1 uxumax uxumax 0 Sep 8 10:50 file-9 -rw-r--r-- 1 uxumax uxumax 675 Aug 31 10:13 .profile
Как видно, в списке теперь появились скрытые файлы и папки: .bash_history,
.bash_logout
, .bashrc
, .profile
. Теперь нам видно все и ничего от нас не утаить.
Как перейти в другую папку
Предварительно для примера в исходной точке (домашняя папка) была создана папка test-folder
. В нее мы и будем переходить. Для начала проверим ее наличие командой ls
$ ls test-folder
Папка есть. Теперь попробуем зайти в нее. Для этого используется команда cd
и формулируется в следующем виде:
cd /путь/до/папки /
Так как папка находится в том месте, где находимся мы, то не обязательно вводить полный путь, достаточно просто указать ее имя. В примерах мы будем использовать команду pwd
, чтобы узнавать где мы находимся и куда нас перенесло.
cd test-folder
$ pwd /home/uxumax $ cd test-folder $ pwd /home/uxumax/test-folder
Можно указать конкретно, что нас интересует только та папка, в которой мы на данный момент находимся. Для этого нужно добавить ./
перед папкой, в которую мы хотим перейти. В некоторых случаях без этого терминал нас не поймет, но в данном примере разницы нет .
cd ./test-folder
$ pwd /home/uxumax $ cd ./test-folder $ pwd /home/uxumax/test-folder
Также в некоторых случаях следует указать полный путь до папки, то есть прямо из корня файловой системы, начиная с /
. В этом случае не важно в какой папке мы сейчас находимся, если ввести абсолютный путь (полный, от корня), то нас перенесет туда из любого места.
cd /home/uxumax/test-folder
Например, мы находились в папке Downloads
, которая находится в домашней папке пользователя. По абсолютному пути мы можем перейти в папку test-folder
прямо оттуда.
$ pwd /home/uxumax/Downloads $ cd /home/uxumax/test-folder $ pwd /home/uxumax/test-folder
Как вернуться назад, в исходную папку
Представим ситуацию, когда из / первый /длинный/путь/до/ одной /папки
мы перешли во / второй /длинный/путь/до/ другой /папки
, сделали свои дела и нам нужно вернуться обратно туда, откуда мы перешли. Мы можем снова прописать длинный абсолютный путь, чтобы вернуться, но это довольно утомительно. В этой ситуации гораздо проще воспользоваться опцией back , для этого достаточно добавить -
, к команде cd
, не указывая никаких путей.
cd -
Ниже пример в терминале, где мы также используем команду pwd
, для того, чтобы проверить где мы в данный момент находимся. В этом примере изначально мы находились в папке /home/uxumax/Downloads
, затем перешли в /home/uxumax/test-folder
и вернулись обратно с помощью команды cd -
.
$ pwd /home/uxumax/Downloads $ cd /home/uxumax/test-folder $ pwd /home/uxumax/test-folder $ cd - $ pwd /home/uxumax/Downloads
Как перейти наверх, в родительскую папку
Теперь представим другую ситуацию, когда нам нужно перейти не назад, а перейти вверх по дереву папок. То есть в родительскую папку. Допустим мы находимся в папке потомок , которая лежит в папке предок . То есть наше местоположение /путь/до/предок/потомок
. Чтобы перейти вверх от потомка к предку, нужно добавить две точки ..
к команде cd
.
cd ..
Теперь попробуем использовать в реальном примере, где мы находимся в папке /home/uxumax/test-folder
. Нам нужно подняться вверх до родительской папки /home/uxumax/
. Все также используем команду pwd
, чтобы проверить текущее местоположение.
$ pwd /home/uxumax/test-folder $ cd .. $ pwd /home/uxumax
Как видно, все предельно просто. Поэтому предлагаю не останавливаться на достигнутом и использовать это более продвинутым образом.
Представим ситуацию, где мы также находимся в папке /home/uxumax/test-folder
и нам нужно перейти в папку /home/uxumax/Downloads
. Мы можем прописать длинный абсолютный путь, а можем вместо этого воспользоваться ..
, которая в данном случае заменяет путь /home/uxumax, то есть является синонимом родительской папки .
cd ../Downloads
Другими словами, если мы находимся в папке /путь/до/предок/потомок_1
, то мы можем использовать ../потомок_2
, вместо длинного варианта /путь/до/предок/потомок_2
. Вот так это выглядит в терминале:
$ pwd /home/uxumax/test-folder $ cd ../Downloads $ pwd /home/uxumax/Downloads
Как найти файл или папку по имени
Чтобы найти нужный файл или папку в линукс-терминале, нужно использовать команду find . Формулировать поисковую команду довольно просто:
find /путь/до/папки/в/которой/искать/ -iname " точное имя файла "
Если мы не знаем точное имя файла, то тут на помощь придут звездочки *
, которые означают любые символы в любом количестве. Например, файл, который мы хотим найти называется nemo-fisher.txt
, а мы помним лишь только то, что его название содержит слово «fish».
Тогда заключим слово fish в звездочки и желательно обернуть дополнительно в кавычки, то есть это будет выглядеть вот так:
find ~/ -iname "*fish*"
В данном случае мы в своей домашней папке (которая обозначается ~/
) ищем файл, название которого содержит слово «fish». Звездочки в данном примере заменяют первую часть слова «nemo-» и его последнюю часть «er.txt»: nemo- fish er.txt
В терминале вот так выдаются результаты:
$ find ~/ -iname '*fish*' /home/uxumax/place/nemo-fisher.txt /home/uxumax/place/blowfish /home/uxumax/place/fishki.jpg
В результатах примера выше мы видим, что в папке под именем place/
, нашлось два файла и одна папка. Среди них есть файл, который мы искали nemo-fisher.txt
, а другие два попали в результаты потому, что он тоже содержат слово fish в названии:
/home/uxumax/place/nemo- fish er.txt
/home/uxumax/place/blow fish
/home/uxumax/place/ fish ki.jpg
Если убрать звездочку спереди "fish*"
, то вывод будет содержать только один файл, который начинается на это слово:
/home/uxumax/place/ fish ki.jpg
А если убрать звездочку в конце слова, то найдется только папка blowfish
, потому что ее название заканчивается на «fish»:
/home/uxumax/place/blow fish
По этим примерам можно понять принцип работы звездочек в запросе. Их задача заменить те символы, которые мы не знаем.
Как найти файл по его содержимому
Поиск по содержимому файла также может быть очень полезен в тех случаях, когда мы не помним название, но точно знаем, что файл содержит какой-то конкретный текст.
Представим, что нам нужно найти файл, который содержит слово «orange». С этим нам поможет мощный инструмент grep
и его 4 опции: -R
, -I
, -n
, -i
. Их можно ввести в таком виде -RIni
вместе, что куда проще, чем перед каждой опцией ставить пробел и минус -
. И в конце добавить путь, где именно нужно искать по содержимому.
grep -RIni "искомое содержимое" /путь/до/папки/где/искать/
Не будем углубляться что значит каждая из 4 опций, это можно сделать, почитав документацию к утилите grep. Новичкам пока достаточно запомнить комбинацию опций и обратить внимание, что в них содержится как маленькая i
, так и большая I
, что очень важно. Вообще обязательно вводить именно в таком виде, где R
, I
— большие, и n
, i
-маленькие. В целом это запомнить довольно не сложно.
Итак, формулируем команду для поиска файла в домашней папке ~/
, который содержит текст «orange»:
grep -RIni "orange" ~/
Вид из терминала:
$ grep -RIni "orange" ~/ /home/uxumax/place/nemo-fisher.txt:5:The color is orange with white stripes /home/uxumax/place/to_buy.list:10:Oranges - 2kg
Терминал в ответ выдал нам список путей к файлам, которые содержат текст «orange». Обратите внимание, что выдача результатов поиска разделена символом :
на три части:
/путь/до/файла : номер строки : строка с найденным словом
По этой выдаче можно понять, какой из этих файлов мы ищем и существует ли он вообще.
Работа с файлами и папками
Как создать папку
Создать папку в терминале линукс можно с помощью команды mkdir
, название которой происходит от «make directory». Шаблон команды предельно прост:
mkdir имя_папки
Для начала просто создадим папку test_dir
mkdir test_dir
Если требуется создать несколько папок, то просто перечислите их названия после mkdir, разделяя обычными пробелами
mkdir test_dir_1 test_dir_2 test_dir_3
Если названия папок однотипны и, например, различаются лишь последней цифрой, то можно сформулировать команду создания нескольких папок в более коротком виде:
mkdir test_dir_{1,2,3}
В фигурных скобках {}
мы через запятую перечисляем варианты названий папок и результат команды будет полностью идентичен предыдущему примеру.
Также вместо перечисления всех вариантов, можно указать числовой диапазон, разделяя двумя точками в таком виде: {от..до}
mkdir test_{1..3}
Иногда требуется создать сразу дерево папок, например папка_предок/папка_потомок_1/папка_потомок_2
. Это тоже предусмотрено в команде mdkir
, достаточно к ней добавить опцию -p
.
mkdir -p /parent_dir/child_dir_1/child_dir_2
Тем самым мы получаем удобную возможность одной командой создавать нужное нам дерево папок.
Как создать файл
В отличии от создания папки, существует бесчисленное количество способов создать файл в линукс. В данном примере мы разберем только самые визуально простые способы, которые не трудно запомнить.
Начнем с команды touch
. Шаблон команды создания файла при помощи этой утилиты такой:
touch имя_файла
Создадим с ее помощью пустой файл с именем file_name
touch file_name
Если требуется создать несколько файлов, то просто перечислите их названия после touch, разделяя обычными пробелами
touch file_name_1 file_name_2 file_name_3
Если названия файлов однотипны и, например, различаются лишь последней цифрой, то можно сформулировать команду создания нескольких файлов в более коротком виде:
touch file_name_{1,2,3}
В фигурных скобках {}
мы через запятую перечисляем варианты названий файлов и результат команды будет полностью идентичен предыдущему примеру.
Также вместо перечисления всех вариантов, можно указать числовой диапазон, разделяя двумя точками в таком виде: {от..до}
touch file_name_{1..3}
Помимо touch
, также можно воспользоваться символом >
, который отвечает за запись файлов. Если файла не существует, то он создается. Приведем пример создания пустого файла с именем file_name
:
> file_name
Если необходимо создать файл сразу с текстом, то перед >
нужно ввести команду echo
и сам текст. То есть это должно выглядеть так echo "текст файла" > имя_файла
echo "file's text" > file_name
Таким образом получаем файл file_name
, с текстом «file’s text».
Как вывести содержимое файла
Допустим у нас есть файл с именем file_name
и необходимо прочитать прочитать его содержимое, не открывая никаких текстовых редакторов. Для этого есть отличный инструмент cat
, а шаблон команды такой:
cat /путь/до/файла
С помощью этого шаблона формулируем команду для нашего примера. В нашем случае файл находится там же, где и мы, поэтому нет нужды прописывать полный путь
cat file_name
В ответ получим содержимое файла «file’s text». Вот так это выглядит в терминале:
$ cat file_name file's text
Как редактировать файл
Одним из самых простых способов редактировать файл через терминал является использовать консольный редактор nano . Он больше всего подходит для новичков, так как довольно прост, относительно других консольных редакторов. Для начала проверим установлен ли он командой:
nano --version
И если получим вывод, где указана версия утилиты и прочая информация, значит nano
установлен:
$ nano --version GNU nano, version 2.7.4 (C) 1999..2016 Free Software Foundation, Inc. (C) 2014..2016 the contributors to nano Email: nano@nano-editor.org Web: https://nano-editor.org/ Compiled options: --disable-libmagic --disable-wrapping-as-root --enable-utf8
Если в ответ вы получите сообщение, что команда не найдена…
$ nano -bash: nano: command not found
Значит утилиту нужно установить. Это можно сделать с помощью этой команды sudo apt-get install nano
или этой sudo yum install nano
, зависит от вашего дистрибутива линукс.
И так, nano установлен.
Далее, используя знания из прошлого раздела, создадим файл с именем text_file и содержимым «file’s text here».
echo "file's text here" > text_file
Теперь откроем наш текстовый файл.
nano text_file
После чего прямо в терминале должно открыться содержимое файла.

После белой полосы, в которой указана версия nano и имя файла, располагается его содержимое.
Первое что стоит осознать — это то, что мышка здесь здесь не работает. Вы можете нажать правой кнопкой мыши и вставить текст из буфера обмена, но навести курсор мышкой на нужное место в тексте скорее всего не сможете.
Здесь это делается клавишами ↑ Вверх , ↓ Вниз , ← Влево , → Вправо . Попробуем передвинуть курсор на место перед словом here
и нажать Enter , чтобы сбросить его на следующую строку.
Затем передвинем курсор на конец слова here
, нажмем пробел и введем что-нибудь, например second line
. После чего снова нажмем Enter и введем other line
. В итоге у нас должно получиться вот так:

А в самом низу мы видим шпаргалку, в которой перечислены основные горячие клавиши управления утилитой, где ^
обычно означает клавишу Ctrl .
Это значит, что например подсказка ^O Write out
говорит, что для записи файла нужно нажать комбинацию Ctrl + O (англ буква «О») .
Далее, после записи закроем файл. Для этого снова смотрим вниз и находим подсказку ^X Exit
, которая говорит нам, что для выхода нужно нажать Ctrl + X .
Напоследок следует сказать о такой полезной штуке, как поиск по содержимому файла . Чтобы вызвать поле поиска, нужно нажать Ctrl + W, как это видно в подсказке. После чего, внизу появится поле Search:
, где нужно ввести поисковую фразу, для примера введем слово line
:

После чего курсор сдвинется на начало ближайшего слова line
.

Чтобы проверить, если ли еще слово line в этом файле, нужно нажать Alt + W . В нашем примере после этого курсор сдвинется на второе слово.

Нажмите Alt + W еще раз, и появится сообщение [ Search Wrapped ]
, что говорит нам, что данные слова закончились в файле.
Если вы нажали Ctrl + W и передумали что-либо искать, нажмите Ctrl + C для отмены, что также указано в подсказке при вызове поля поиска.
Более подробно ознакомиться с утилитой nano можно здесь .
Как скопировать файл
Для копирования файлов в линукс используется короткая команда cp
, что представляет собой сокращение слова «copy». Пользоваться ей очень просто. Представим, что у нас есть файл с именем dolly
$ ls dolly
Попробуем создать копию этого файла. Для этого нужно ввести команду cp со следующей конструкцией:
cp /путь/до/файла /путь/до/копии_файла
Теперь по этому шаблону скопируем файл dolly
. Нам не нужно указывать полный путь, т.к. в примере мы уже находимся в той папке, в которой лежит этот файл.
cp dolly dolly_clone
Проверим что у нас получилось:
$ touch dolly $ cp dolly dolly_clone $ ls dolly dolly_clone
В результате у нас 2 файла: dolly
и его копия dolly_clone
.
Как скопировать папку
Копирование папок схож с копированием файлов. Так же можно использовать команду cp
, но тут следует добавлять некоторые опции к команде:
-
-r
— для того, чтобы вместе с папкой сохранить ее содержимое -
-a
— для того, чтобы сохранить все атрибуты файлов при копировании -
-v
— если вы хотите увидеть весь процесс копирования
Исходя из этого, если мы хотим полностью скопировать папку со всеми файлами и атрибутами, а также хотим наблюдать процесс, то наша команда должна иметь такой вид:
cp -rav /путь/до/исходной/папки /путь/для/копии/папки
Допустим у нас есть папка dolly_family
и несколько файлов dolly
внутри нее.
$ ls dolly_family $ ls dolly_family/ dolly1 dolly10 dolly2 dolly3 dolly4 dolly5 dolly6 dolly7 dolly8 dolly9
Чтобы скопировать ее, формулируем следующую команду:
cp -rav dolly_family dolly_family_clone
В целом у нас должно выглядеть примерно так
$ cp -rav dolly_family dolly_family_clone 'dolly_family' -> 'dolly_family_clone' 'dolly_family/dolly1' -> 'dolly_family_clone/dolly1' 'dolly_family/dolly2' -> 'dolly_family_clone/dolly2' 'dolly_family/dolly3' -> 'dolly_family_clone/dolly3' 'dolly_family/dolly4' -> 'dolly_family_clone/dolly4' 'dolly_family/dolly5' -> 'dolly_family_clone/dolly5' 'dolly_family/dolly6' -> 'dolly_family_clone/dolly6' 'dolly_family/dolly7' -> 'dolly_family_clone/dolly7' 'dolly_family/dolly8' -> 'dolly_family_clone/dolly8' 'dolly_family/dolly9' -> 'dolly_family_clone/dolly9' 'dolly_family/dolly10' -> 'dolly_family_clone/dolly10' $ ls dolly_family dolly_family_clone
Проверим нашу копию dolly_family_clone.
$ ls dolly_family dolly_family_clone $ ls dolly_family_clone dolly1 dolly10 dolly2 dolly3 dolly4 dolly5 dolly6 dolly7 dolly8 dolly9
Как видно, теперь у нас две папки с одинаковым содержимым и понимание как копировать папки.
Как перенести файл
Для переноса файлов в линукс используется команда mv
, которая является сокращением от слова «move». Принцип переноса файлов очень схож с копированием и имеет такой вид:
mv /путь/до/файла /путь/куда/перенести/файл/
Допустим у нас есть файл под именем migrant
и папка под именем place
:
$ ls migrant place
Теперь перенесем файл migrant
в папку place
:
mv migrant place/
И посмотрим что у нас получилось. Сначала убедимся, что файла migrant больше нет в этом месте, а затем посмотрим содержимое папки place
, куда «мигрировал» наш файл.
$ mv migrant place/ $ ls place $ ls place/ migrant
Как перенести папку
Принцип переноса немного отличается от копирования. В этом случае опции -a
и -r
не требуется. Можно добавить опцию -v
, чтобы наблюдать за процессом переноса. А также следует добавлять /
в конце пути к исходной папке и пути куда ее положить. То есть команда должна иметь следующий вид:
mv -v /путь/до/папки/ /путь/куда/ее/перенести/
Допустим у нас есть пустая папка place
и папка migrant_family
с десятью файлами внутри:
$ ls migrant_family place $ ls migrant_family/ migrant_1 migrant_2 migrant_4 migrant_6 migrant_8 migrant_10 migrant_3 migrant_5 migrant_7 migrant_9
Формулируем команду переноса папки migrant_family
в папку place
.
mv -v migrant_family/ place/
Теперь проверим что у нас получилось. Для начала убедимся, исчезла ли папка из текущего местоположения. Потом проверим содержимое place/
и place/migrant_family/
$ mv -v migrant_family/ place/ 'migrant_family/' -> 'place/migrant_family' $ ls place $ ls place/ migrant_family $ ls place/migrant_family/ migrant_1 migrant_2 migrant_4 migrant_6 migrant_8 migrant_10 migrant_3 migrant_5 migrant_7 migrant_9
Выводы ls
сообщают нам о том, что папка migrant_family/
успешно перебралась в папку place/
вместе со всем содержимым.
Как удалить файл
После того, как мы наделали дел, неплохо было бы за собой убраться и удалить все ненужные файлы. Для этого используется короткая команда rm
, после которой перечисляются объекты, которые нужно удалить.
Допустим у нас есть файлы dolly
и dolly_clone
.
$ ls dolly dolly_clone
Попробуем удалить эти файлы и запасемся баранины впрок. Шаблон команды такой
rm /путь/до/файла
Способ 1
Мы можем удалить сначала dolly, потом dolly_clone таким образом:
rm dolly rm dolly_clone
Способ 2
А можем уместить все в одну команду, перечислив через пробел файлы для удаления после rm:
rm dolly dolly_clone
Способ 3
Также есть еще одна интересная хитрость, мы можем поставить сразу после слова dolly
, звездочку *
, то есть выразить команду в таком виде:
rm dolly*
Тем самым мы указываем команде rm, что нужно удалить те файлы, названия которых начинаются на dolly
. В некоторых случаях это намного удобнее, чем прописывать название каждого файла.
Как удалить папку
Удаление папок можно также делать при помощи команды rm
, но следует добавить несколько опций, чтобы команда выполнилась успешно:
-
-f
— игнорирует несуществующие файлы, а также не выводит запросы на подтверждение удаления -
-r
— удаляет содержимое папки, перед ее удалением
То есть наша команда должна выглядеть вот так:
rm -rf /путь/до/папки
Представим, что у нас есть папка dolly_family
, в которой лежат 10 файлов.
$ ls dolly_family $ ls dolly_family/ dolly1 dolly10 dolly2 dolly3 dolly4 dolly5 dolly6 dolly7 dolly8 dolly9
Чтобы удалить ее вместе со всем содержимым, формулируем следующую команду:
rm -rf dolly_family/
Система и утилиты
Как посмотреть инструкцию к команде прямо в терминале
Почти к каждой линукс утилите прикладывается help-информация, по которой вы можете понять как правильно использовать утилиту и ее опции.
Документацию к использованию утилиты можно получить таким образом:
название_утилиты --help
Посмотрим на примере команды ls
:
ls --help
И прямо в терминале, не открывая никаких дополнительных текстовых редакторов, будет вывод документации.

help + grep
В некоторых случаях не требуется выводить полную документацию, а лишь одну ее строчку, где рассказывается о какой-то конкретной опции. Для этого к команде ls --help
нужно добавить разделитель |
, а затем команду grep 'поисковая фраза в документации'
.
название_утилиты --help | grep "поисковая фраза в документации"
Например, мы хотим узнать, как получить вывод ls
, который будет содержать все файлы и папки, включая скрытые. Как мы знаем, по-английски слово все, значит all , тогда формулируем команду следующим образом:
ls --help | grep 'all'
И получаем в выводе только те строчки, что потенциально будут интересны для нашей задачи, что довольно упрощает работу с документацией, ведь нам не нужно напрягать глаза, чтобы найти нужные опции. К тому же мы экономим время, отсеивая из вывода с помощью grep
все лишнее. Вот так это выглядит в терминале:
$ ls --help | grep 'all' Sort entries alphabetically if none of -cftuvSUX nor --sort is specified. -a, --all do not ignore entries starting with . -A, --almost-all do not list implied . and .. -s, --size print the allocated size of each file, in blocks -X sort alphabetically by entry extension or available locally via: info '(coreutils) ls invocation'
Как посмотреть историю команд
Бывают ситуации, когда было введено ранее много новых команд и вспомнить их правильную формулировку довольно сложно. Для того, чтобы посмотреть что и как именно было введено ранее, следует использовать команду history
.
$ history 1 cd ~ 2 touch dolly 3 cp dolly dolly_clone 4 ls 5 rm dolly* 6 touch migrant 7 mkdir place 8 ls -Al 9 ls -l 10 mv migrant place/ 11 ls 12 ls -l 13 ls -l place/ 14 ls 15 rm -rf place 16 mkdir dolly_family 17 touch dolly_family/dolly{1..10} 18 ls 19 ls dolly_family/ 20 exit ...
На remontka.com уже была статья про команду history, а в этом разделе будет описано кратко самое важное.
history + tail
Если мы нет нужды выводить полную историю команд, а, например будет достаточно последние 15, то к history
нужно добавить разделитель |
, а затем команду tail
с опцией -n
и количеством последних команд, которые мы хотим увидеть.
history | tail -n количество_строк_с_конца
Итак, если мы хотим увидеть 15 последних команд, значит команда должна иметь следующий вид:
history | tail -n 15
Вот так примерно это должно выглядеть в терминале:
$ history | tail -n 15 74 sudo apt install man 75 ls -h 76 ls --help 77 clear 78 ls --help 79 cat -h 80 grep -h 81 ls --help 82 ls 83 ls -r place-bak/ 84 ls -R place-bak/ 85 ls --help | grep 'all' 86 man ls 87 history 88 history | tail -n 15
history + grep
Если мы помним примерно из каких слов состоит команда или ее примерные опции, то можно поискать их в истории команд, что довольно удобно. Для этого к history
нужно добавить разделитель |
, а затем команду grep 'поисковая фраза'
.
history | grep "поисковая фраза"
Например, если нужно посмотреть все команды с папкой по имени dolly
, то комбинацию history
и grep
следует выразить таким образом:
history | grep 'dolly'
И в ответ получим только те команды, в которых содержится слово dolly
. Вид из терминала:
$ history | grep 'dolly' 2 touch dolly 3 cp dolly dolly_clone 5 rm dolly* 16 mkdir dolly_family 17 touch dolly_family/dolly{1..10} 19 ls dolly_family/ 22 cp -rav dolly_family dolly_family_clone 27 dolly_family 34 ls dolly_family_clone 46 rm -rf dolly* 89 history | grep 'dolly'
Как посмотреть все запущенные процессы
Бывают ситуации когда кулеры зашумели довольно сильно, а совсем не понятна причина такого упорства. В этом случае стоит выяснить какой процесс или программа заставляет крутиться их в полную силу.
Чтобы вывести все запущенные процессы в Linux, достаточно ввести короткую команду:
top
В ответ терминал выдаст нам табличку, в которой перечислены процессы, их PID (Process ID), сколько они потребляют ресурсы процессора и памяти в процентах, а также много другой полезной информации информации в режиме реального времени.

Для выхода нужно нажать Q или комбинацию Ctrl + C.
По-умолчанию, как правило, эта таблица отсортирована по потреблению ресурсов. То есть чем больше ресурсов потребляет процесс, тем выше он находится. Как видно из примера, рекордсмен по потреблению ресурсов в данном случае браузер Chrome.
Как завершить процесс принудительно
Представим ситуацию, что у нас завис браузер Chrome и не хочет отзываться. В этом случае стоит закрыть браузер принудительно. Если мы точно знаем, как называется процесс в системе, то достаточно ввести команду killall
название процесса. Шаблон очень прост:
killall "точное название процесса или утилиты"
То есть, если мы хотим закрыть принудительно chrome, то делать это нужно вот так:
killall chrome
Если процесс существовал в момент ввода команды, то в ответ вы ничего не получите, а процесс завершится «молча».
Выясняем имя «жертвы»
Но что делать, если мы не знаем как точно называется процесс в системе, но знаем часть его названия? Тут тоже есть выход и в этом случае сначала нужно узнать либо полное название процесса, либо его PID (Process ID).
Чтобы выяснить есть ли процесс, содержащий в названии данную часть слова, который мы помним, будем использовать команду ps
с опциями -A
и -l
. Эти опции отобразят все процессы в виде списка. Также используем команду grep через разделитель, чтобы отобразить информацию только о том, что нас интересует. Вот такой получается шаблон:
ps -Al | grep "часть названия процесса, которую помним"
Для примера также возьмем зависший браузер хром. Допустим мы знаем только часть названия «hrom». Чтобы посмотреть информацию об этом процессе, вводим:
ps -Al | grep hrom
Если название состоит из одного слова, то можно вводить без кавычек. Вывод будет таким:
$ ps -Al | grep hrom 4 S 1000 17927 1 27 80 0 - 152792 - 00:23:11 chrome
Для принудительного завершения нам потребуется либо название, либо PID . Пример того, как завершить процесс по полному названию, мы уже разобрали , теперь стоит попробовать сделать это, указав Process ID. Этот ID, как правило, отображается в 4ой колонке вывода команды ps -Al
и в данном случае равен 17927
.
Итак, мы выяснили PID процесса. Этого достаточно, чтобы завершить его принудительно. В этот раз будем использовать команду kill
с опцией -9
:
kill -9 PID_процесса
По этому шаблону формулируем команду:
kill -9 17927
Результатом которой будет тихое убийство процесса, без всяческих отчетов и выводов.
Как узнать версию и разрядность Linux
Под термином «версия линукс» может скрываться сразу два смысла: версия дистрибутива и версия ядра.
Версия дистрибутива — это версия сборки вашей ОС, например Ubuntu 20.04 или Debian 10 .
Версия ядра Linux — это то, на чем эти сборки работают, и выглядит она обычно так: 4.8.0-53-generic или так 5.4.48-06434 .
Узнаем версию дистрибутива
Самый универсальный способ узнать версию дистрибудтива — это прочитать содержимое файла /etc/os-release
. Но в некоторых случаях этот файл может иметь другое название, например /etc/redhat-release
или /etc/lsb-release
. И чтобы решить эту проблему, можно вместо конкретного названия, указать условное в таком виде /etc/*release
.
Для вывода содержимого используем команду cat
, о которой говорилось выше , и формулируем команду
cat /etc/*release
Звездочкой *
мы указываем, что хотим получить вывод со всех файлов, названия которых начинаются на « /etc/ » и заканчивающиеся на « release » То есть варианты /etc/redhat-release
, /etc/lsb-release
и им подобные подходят под этот запрос.
Вот так это выглядит в терминале Debian 9 :
$ cat /etc/*release PRETTY_NAME="Debian GNU/Linux 9 (stretch)" NAME="Debian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" VERSION_CODENAME=stretch ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
Как узнать версию ядра Linux
Версию ядра в линукс можно узнать с помощь. команды uname
с опцией -r
uname -r
На что вы получите в ответ только версию ядра и ничего лишнего:
$ uname -r 5.4.48-06434
Как узнать разрядность Linux
Чтобы узнать разрядность, нужно также использовать команду uname
, но с опцией -a
, которая укажет, что нужно вывести полную информацию о версии ядра.
uname -a
В выводе утилиты, обычно где-то в конце указывается разрядность. В данном случае это x86_64
, что говорит нам о том, что в примере 64-разрядная версия линукс.
Linux deb9 5.4.48-06434 #1 SMP PREEMPT Wed Jul 29 00:32:34 PDT 2020 x86_64 GNU/Linux
Информация о сети
Рассмотрим 3 типа IP-адресов, с которыми приходится сталкиваться чаще всего:
- Внешний IP-адрес — адрес нашего устройства в глобальной сети.
- Локальной IP-адрес — адрес в локальной сети устройств.
- Внутренний IP-адрес — используется в основном утилитами для взаимодействия между собой. Всегда 127.0.0.1 или localhost
Разберем способы узнать внешний и локальный IP-адрес.
Как узнать внешний IP-адрес
В большинстве случаев, чтобы узнать свой внешний IP-адрес требуется сторонний сервис, который скажет с какого IP вы отправили ему запрос.
Как правило, эти сервисы представляют из себя обычные веб-страницы, вот их список:
- icanhazip.com
- ipecho.net/plain
- smart-ip.net/myip
- ident.me
- ipinfo.io/ip
- eth0.me
Разницы в этих сайтах особо нет, выберите тот, который именно вам отвечает быстрее всего.
Их можно открывать через браузер, но это не всегда удобно, поэтому в примерах мы будем рассматривать как обращаться к ним прямо из терминала.
Способ 1: wget
Утилита wget позволяет нам скачивать файлы и получать информацию с веб-страниц. Для начала проверим, установлена ли она, введите в терминал wget
и если получите в ответ bash: wget: command not found
, значит самое время ее установить
sudo apt install wget
Или вместо apt использовать yum, что зависит от вашего дистрибутива:
sudo yum install wget
Итак, утилита wget установлена , теперь попробуем узнать свой внешний IP-адрес. Для этого введем в терминал команду wget
с опциями -qO
, далее минус -
, а затем уже один из сайтов, список которых выше . В целом шаблон команды такой:
wget -qO - адрес_веб_сайта
Например внешний IP-адрес можно узнать вот так:
wget -qO - icanhazip.com
Или вот так:
wget -qO - ipecho.net/plain
И так с любым сайтом из этого списка . Вот так это выглядит в терминале:
$ wget -qO - icanhazip.com 176.216.236.211 $ wget -qO - ipecho.net/plain 176.216.236.211
Способ 2: curl (проще)
Второй способ — использовать curl . Сама по себе утилита более универсальна, чем wget и заслуживает не одну отдельную статью, но в данном примере мы разберем как с ее помощью узнать свой внешний IP-адрес.
Для начала также проверим, установлена ли она, введите в терминал curl
и если получите в ответ bash: curl: command not found
, значит самое время ее установить
sudo apt install curl
Или вместо apt использовать yum, что зависит от вашего дистрибутива:
sudo yum install curl
Итак, утилита curl установлена , теперь попробуем узнать свой внешний IP-адрес. C «курлом» это намного проще, нужно лишь ввести curl и один из сайтов, список которых выше . В целом шаблон команды такой:
curl адрес_веб_сайта
Пробуем:
curl smart-ip.net/myip
И с другим сайтом:
curl ident.me
Вид из терминала:
$ curl smart-ip.net/myip 176.216.236.211 $ curl ident.me 176.216.236.211
Как узнать локальный IP-адрес
Локальный IP-адрес узнается при помощи разных утилит, мы рассмотрим наиболее популярный и актуальный инструмент для этих задач на сегодня — инструмент ip
. Чтобы увидеть все сетевые интерфейсы, достаточно ввести:
ip addr show
В примере используется Debian 9 и вывод там такой:
$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:3d:a0:09 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.122.253/24 brd 192.168.122.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe3d:a009/64 scope link valid_lft forever preferred_lft forever
В выводе отображается очень много информации, в которой легко запутаться. Мы видим 2 интерфейса, один lo (внутренний 127.0.0.1
) и проводной eth0, с локальным IP-адресом 192.168.122.253
. Как вы уже возможно поняли, сам IP-адрес отображается после inet
.
Стоит перечислить самые распространенные интерфейсы, чтобы можно было легко ориентироваться, какой адрес кому пренадлежит.
lo
— внутренний интерфейс, всегда 127.0.0.1 или localhosteth
— проводной интерфейсwlan
— Wi-Fi-интерфейсppp
— Point-to-Point Protocol, часто используется для VPN