Поиск команд в терминале linux

Обновлено: 08.07.2024

Терминал и текстовые команды — главный способ управления операционной системой Linux, особенно, если речь идёт о сервере. И хоть слово «терминал» пугает новичков, поверьте, что всё гораздо проще. Сегодня мы подготовили для вас шпаргалку с базовыми командами — сохраняйте её в закладки и повышайте свою продуктивность в сотни раз. ;)

Начнём с теории

Linux (Линукс) — это целое семейство операционных систем Unix с открытым исходным кодом, основанных на ядре Linux. Сюда входят все самые популярные системы на основе ОС, например: Ubuntu, Fedora, Mint, Debian и другие. Их ещё называют дистрибутивами. Подробнее о каждом читайте в этом посте .

Терминал (или «Bash», сокращение от «Bourne-Again shell») — это программа, которая используется для взаимодействия с командной оболочкой. Терминал применяется для выполнения административных задач, например: установку пакетов, действия с файлами и управление пользователями.

Команда — это название программы, которое пользователь вводит в терминале для выполнения определённой задачи. Команды могут иметь дополнительные данные и параметры.

В ОС есть несколько сотен команд и их модификаций. Они группируются по нескольким категориям:

  • По расположению — могут быть утилитами командной строки или встроенной функцией командной оболочки.
  • По частоте применения — те команды, что используются постоянно, по ситуации (эпизодически) или редко.
  • По типам действий — большая группа команд, с помощью которых можно управлять процессами или достать нужную информацию. О них сегодня и поговорим.

Типичная команда выглядит вот так:

Команды, которые позволят узнать больше о вашей системе

id — если вы хотите получить информацию о вашей учётной записи.

w — полезная команда, если вам нужно узнать, какой пользователь сейчас находится в системе (или команда -f — для того, чтобы узнать, откуда был совершён вход).

lsblk — если вы хотите открыть список блочных устройств хранения данных.

lscpu — отображает информацию о процессорах.

free — показывает объём свободной и уже используемой памяти (альтернативная команда — free -g).

lsb_release -a — если вы хотите получить информацию о версии вашей ОС.

Команды для работы с файлами

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

ls — покажет содержимое директории, в которой вы находитесь. Если после команды ввести адрес конкретной папки, то она покажет то, что хранится в ней. При добавлении аргумента -R в выводе команды появятся файлы из поддиректорий.

cd — change directory, что в переводе означает «сменить директорию». Из названия понятно, что с помощью этой команды можно перемещаться между папками. Вписываем её, а потом адрес: cd /user/test/dir/111. Есть сокращенные варианты: cd- для перемещения в предыдущую директорию или cd (без аргументов) для прыжка в домашнюю папку.

pwd — укажет полный путь до директории, в которой вы находитесь. Если вы перепрыгнули на рабочий стол с помощью cd

/Desktop/, то pwd покажет что-то в духе /home/Polzovatel/Desktop.

dd — мощная утилита для взаимодействия с разделами. С её помощью можно делать копии разделов, перемещать их, удалять без возможности восстановления.

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

grep — это полнотекстовый поиск в файле. Очень полезная команда, когда вам нужно что-то найти. Например, grep значение /путь/до/файла покажет строки в которых есть «значение». А команда grep -ril значение /путь/до/каталога/* покажет все файлы, в которых есть искомое значение.

-r — рекурсивный поиск.

-i — игнорировать регистр (Case insensetive).

-l — вывести результат списком.

chown пользователь:группа — команда позволяет изменить владельца файла.

chmod — изменяет права на файл или каталог

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

Следующие команды потребуются вам при работе с файлами разного типа и объёма:

cat — показывает содержимое файлов. Также может использоваться в двух вариантах: 1) одним текстовым файлом (cat путь_к_файлу), она отображает содержимое файла в окне терминала, 2) если же указать больше элементов, то команда склеит их (cat путь_к_файлу_1 путь_к_файлу_2).

head — «голова», как и cat, показывает содержимое документов, но не всё, а только первые 10 строк. При желании количество строк можно увеличить или сократить, добавив параметр -n.

tail -f — используется для просмотра растущего файла в окне интерактивного запуска кода.

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

wget — загружает из интернета документы, картинки, целые страницы и прочий контент.

wc — считает количество строк, слов, знаков и байтов.

zip — упаковывает файлы в архив в формате .zip.

diff — сокращение от «difference». Команда показывает разницу между двумя текстовыми файлами.

Что вы можете сделать с двоичными файлами? На самом деле, вариантов не очень много:

strings — команда выведет готовые к печати строки файла;

od — позволит вам напечатать файл в восьмеричном формате;

cmp — даёт возможность побайтно сравнивать файлы.

Если вам требуется сравнить текстовые файлы друг с другом, введите эти команды:

comm — отсортированные файлы будут строка за строкой.

diff — позволяет построчно выявить различия. Эта команда используется наиболее часто в силу богатого набора опций.

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

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

userdel — удаляет выбранную учётную запись. Синтаксис простейший:

userdel имя учётной записи, которую нужно стереть

Для установки, удаления и обновления пакетов

Для установки программ в Linux используются менеджеры пакетов, но для каждого дистрибутива они разные. Вот команды для наиболее популярных дистрибутивов:

Debian/Ubuntu

sudo apt-get install название_пакета — устанавливает программу на выбор.

sudo apt remove название_пакета — команда, используя которую можно удалить не только ПО, но и все неиспользуемые пакеты.

sudo apt-get update — обновляет информацию о пакетах, имеющихся в системе, и тех, что хранятся в подключённых репозиториях.

sudo apt-upgrade — обновляет установленные пакеты до самых свежих версий, доступных в подключенных репозиториях.

sudo apt purge — удаляет все файлы конфигурации вместе с пакетами ПО.

sudo apt autoremove -purge — удаляет абсолютно всё: и пакеты, и зависимости, и конфиги.

Red Hat Linux/CentOS

sudo dnf install название_пакета — устанавливает программу на выбор.

sudo dnf upgrade — обновляет установленные пакеты до самых свежих версий.

sudo dnf remove название_пакета — стирает с жёсткого диска имеющийся в системе пакет.

Бонус! Хитрости, которые сэкономят время

Этот список полезных знаков в разы ускорит вашу работу с командами:

!! — повторяет последнюю команду.

!$ — позволяет изменить команду, сохраняя последний аргумент. Например, команда less !$ — используется для повторного открытия файла в меньшем объёме.

tail !* — избавляет от необходимости вводить остальную часть команды.

>x.txt — используется для создания пустого файла или очистки существующего.

lsof -P -i -n — определяет, к каким скриптам идёт обращение со стороны веб-сервера.

И самая крутая команда в Linux: для вывода полного руководства о той или иной команде есть man (сокращенно от manual). Чтобы вывести мануал достаточно просто выполнить man < имя команды>. В качестве примера давайте рассмотрим команду cat:

CAT(1) User Commands CAT(1)

NAME
cat - concatenate files and print on the standard output

SYNOPSIS
cat [OPTION]. [FILE].

DESCRIPTION
Concatenate FILE(s) to standard output.

With no FILE, or when FILE is -, read standard input.

-A, --show-all
equivalent to -vET

-b, --number-nonblank
number nonempty output lines, overrides -n

-e equivalent to -vE

-E, --show-ends
display $ at end of each line

-n, --number
number all output lines

-s, --squeeze-blank
suppress repeated empty output lines

-t equivalent to -vT

-T, --show-tabs
display TAB characters as ^I

-v, --show-nonprinting
use ^ and M- notation, except for LFD and TAB

--help display this help and exit

--version
output version information and exit

cat Copy standard input to standard output.

А для выход из режима просмотра, достаточно набрать команду quit или q.

На первый взгляд может показаться, что список очень трудно запомнить, но запоминание приходит с практикой! Чем чаще вы пользуетесь теми или иными командами, тем скорее вы их запомните.

И, если вы хотите попробовать какие-то команды на настоящем сервере — попробуйте наши Облачные VPS с готовым шаблоном популярных дистрибутивов Linux: Ubuntu, CentOS и Django и почасовой оплатой от 44 копеек.

Кнопка Заказать VPS-сервер на Linux

Шпаргалка основана на статье « Linux Terminal Tools »

Понравился материал? Поделись с друзьями! Дальше будет ещё больше полезных постов 😊

История команд в Linux

Работу в командной строке можно сделать немного эффективнее и быстрее, если знать несколько простых хитростей. Рассмотрим, как быстро запускать предыдущие команды, как выполнять поиск по истории команд.

Повторный запуск команды без указания аргументов. Используем «!»

!команда — используется для выполнения команды с аргументами, которые использовались при последнем запуске.

Предположим, мы выполняем какие-нибудь команды и дополняем их аргументами. Например, мы решили отредактировать файл myfile.txt в текстовом редакторе nano. Для этого мы выполняем:

Далее мы можем выполнять еще какие-нибудь команды, затем снова хотим выполнить nano, чтобы открыть в нем файл myfile.txt. Мы можем воспользоваться волшебным «!». Для этого достаточно написать восклицательный знак и без пробела название команды:

В результате будет вызвана команда nano с теми аргументами, с которыми она вызвалась последний раз, то есть в нашем случае !nano будет аналогично вызову nano /home/pingvinus/path/to/file/myfile.txt.

Выполнение предыдущей команды. Используем «!!»

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

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

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

Отмечу, что !! можно использовать прямо внутри текста команды. Например, мы перейдем в домашнюю директорию пользователя pingvinus:

А теперь войдем в папку /home/pingvinus/Downloads вот таким образом:

Поиск по истории команд. Команда history

history — поиск по истории команд — предназначена для вывода истории команд, поиска по ним и быстрого запуска предыдущих команд.

Если мы выполним history, то на экран будет выведен список последних введенных вами команд:

Каждая команда пронумерована. Чтобы вызвать какую-нибудь команду из списка достаточно выполнить в командной строке: !номер. Например выполним команду под номером 139:

Можно указать номер с минусом. Например, выполнив !-2 мы выполним пред-предыдущую команду. Выполнив, !-1 мы выполним предыдущую команду, это эквивалентно команде !!, описанной выше.

Для поиска по истории можно воспользоваться утилитой grep:

У команды history есть еще несколько дополнительных возможностей. Почитать руководство по history можно, выполнив man history.

Поиск по истории. Сочетание клавиш Ctrl+R

Ctrl+R — сочетание клавиш, которое используется для вызова «интерактивного» поиска по истории команд.

Нажмите Ctrl+R, находясь в командной строке. В результате на экране отобразится приглашение к поиску команды:

Начинайте вводить начальную часть или середину команды, которую вы ищете. То, что вы вводите будет заключено в кавычки, а после значка двоеточия вам будет предложена команда, найденная в истории команд, которая максимально удовлетворяет поиску. Например, я нажал Ctrl+R и начал вводить id-, и нашлась команда, содержащая символы id-:

В терминале Linux, кроме всего прочего, есть одна замечательная вещь. Это история команд Linux. Все команды, которые вы вводите во время работы сохраняются и вы можете найти и посмотреть их в любой момент. Также можете вернуться на несколько команд чтобы не набирать недавно выполненную команду заново.

В этой небольшой статье мы рассмотрим как пользоваться историей команд Linux, как ее настроить, а также рассмотрим полезные приемы, которые могут помочь вам в работе.

История команд Linux

Большинство задач, связанных с историей команд, мы будем выполнять либо с помощью команды history, либо с помощью оболочки. В истории хранится последняя 1000 команд, которые вы выполняли. Чтобы посмотреть всю историю для этого терминала просто запустите команду history без параметров:


Для дополнительных действий с историей вам могут понадобиться опции. Команда history linux имеет очень простой синтаксис:

$ history опции файл

В качестве файла можно указать файл истории. По умолчанию история для текущего пользователя хранится в файле

/.history, но вы можете задать, например, файл другого пользователя. А теперь рассмотрим опции:

  • -c - очистить историю;
  • -d - удалить определенную строку из истории;
  • -a - добавить новую команду в историю;
  • -n - скопировать команды из файла истории в текущий список;
  • -w - перезаписать содержимое одного файла истории в другой, заменяя повторяющиеся вхождения.

Наиболее полезной для нас из всего этого будет опция -c, которая позволяет очистить историю команд linux:

Так вы можете посмотреть только последние 10 команд:


А с помощью опции -d удалить ненужное, например, удалить команду под номером 1007:


Если вы хотите выполнить поиск по истории bash, можно использовать фильтр grep. Например, найдем все команды zypper:

history | grep zypper


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

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

Вы можете выполнить последнюю команду просто набрав "!!". Также можно выполнить одну из предыдущих команд указав ее номер "!-2"



Чтобы выполнить поиск по истории прямо во время ввода нажмите Ctrl+R и начните вводить начало команды.


Если вы знаете, что нужная команда была последней, которая начиналась на определенные символы, например, l, то вы можете ее выполнить, дописав "!l":

Если нужная команда последняя содержала определенное слово, например, tmp, то вы можете ее найти, использовав "!?tmp":


Если вы не хотите, чтобы выполняемая команда сохранилась в истории просто поставьте перед ней пробел.

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

Настройка истории Linux

Linux - очень настраиваемая и гибкая система, поэтому настроить здесь можно все, в том числе и историю. По умолчанию выводится только номер команды, но вы можете выводить и ее дату. Для этого нужно экспортировать переменную HISTORYFORMAT вместе нужным форматом:

export HISTTIMEFORMAT='%F %T '
$ history


Для форматирования можно использовать такие модификаторы:

Вы можете указать какие команды не стоит отображать, например, не будем выводить ls -l, pwd и date:

export HISTIGNORE='ls -l:pwd:date:'

Также можно отключить вывод одинаковых команд:

Существует два флага, ignoredups и ignorespace. Второй указывает, что нужно игнорировать команды, начинающиеся с пробела. Если вы хотите установить оба значения, используйте флаг ignoreboth. Используйте переменную HISTSIZE, чтобы установить размер истории:

По умолчанию история сохраняется для каждого терминала отдельно. Но если вы хотите чтобы все ваши команды немедленно синхронизировались между всеми терминалами, то это очень просто настроить. Добавьте такую переменную:

export PROMPT_COMMAND="$history -a; history -c; history -r;"

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

export PROMPT_COMMAND="$history -a; history -c; history -r;"
$ export HISTCONTROL=ignoredups
$ export HISTTIMEFORMAT='%F %T '

Готово, теперь осталось сохранить изменения и перезапустить ваши терминалы. Теперь ваша история будет выводить дату, игнорировать дубли и синхронизироваться между терминалами.

Выводы

В этой статье мы рассмотрели что такое история команд linux, как с ней работать, как применяется команда history linux и какие настройки можно использовать для более комфортной работы. Если у вас остались вопросы, спрашивайте в комментариях!

Если известно расположение команды, для ее запуска можно ввести полный путь к команде. Например, для запуска команды date из каталога /bin можно ввести :

Конечно, этот способ может оказаться неудобным, особенно если команда расположена в каталоге с длинным именем. Лучше хранить команды в известных каталогах и добавить их в значение переменной среды PATH.

Значение этой переменной состоит из списка каталогов, которые последовательно просматриваются при поиске вводимых команд. Для получения информации о текущем значении переменной PATH введите следующую команду:

Вывод команды соответствует принятому по умолчанию пути поиска команд для обычного пользователя Linux. Для разделения каталогов применяется двоеточие.

Большинство пользовательских команд в составе операционной системы Linux хранятся в каталогах /bin,/usr/bin и /usr/local/bin. Хотя многие команды графического интерфейса находятся в каталоге /usr/bin, существуют специальные команды X Window, которые расположены в каталогах /usr/bin/Xll и /usr/XHR6/bin. Последним в списке показан каталог bin в домашнем каталоге пользователя.

В путь поиска команд в Linux для пользователя root включаются каталоги /sbin и /usr/sbin, содержащие команды администрирования.

Порядок просмотра каталогов имеет важное значение. Каталоги просматриваются слева направо. В данном случае, если команда fоо расположена одновременно в каталогах /bin и usr/bin, будет выполняться команда из каталога /bin. Для запуска другой команды foo придется или ввести полный путь к команде, или изменить значение переменной PATH. (Изменение значения переменной PATH и добавление каталогов в путь поиска команд рассматриваются нами чуть ниже.)

Не все запускаемые команды расположены в каталогах, перечисленных в переменной PATH. Некоторые команды встроены в командный интерпретатор. Кроме этого, команды можно переопределить с помощью псевдонимов, позволяющих указать параметры запускаемой команды. Также можно определить функцию, содержащую последовательность команд.

  1. Псевдонимы — имена, устанавливаемые с помощью команды alias и представляющие конкретную команду с набором параметров. (Введите alias для просмотра списка установленных псевдонимов.) Часто псевдонимы позволяют определить короткое имя для длинной сложной команды.
  2. Зарезервированные слова командного интерпретатора— ключевые слова, зарезервированные командным интерпретатором для специального применения. Многие из этих ключевых слов используются при создании функций, например do, while, case и else.
  3. Функции — наборы команд, которые выполняются вместе в пределах одного интерпретатора.
  4. Встроенные команды — команды, встроенные в командный интерпретатор. Такая команда не имеет представления в файловой системе. Некоторые распространенные команды являются встроенными, например:
  • cd (для смены текущего каталога)
  • echo (для вывода текста на экран)
  • exit (для выхода из командного интерпретатора)
  • f g (для вывода команды из фонового режима)
  • history (для просмотра списка запускавшихся ранее команд)
  • pwd (для получения текущего каталога)
  • set (для установки параметров командного интерпретатора)
  • type (для определения расположения команды).
  1. Команда в файловой системе — такая команда хранится в файловой системе. (Для поиска этих команд в Linux используется список каталогов в переменной PATH.)

(Если применяется не bash, а другой командный интерпретатор, воспользуйтесь командой which.) Например, для определения расположения интерпретатора bash введите следующую команду:

В этой статье поговорим о командах поиска файлов и директорий в терминале, таких как find, locate, whereis, which.

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

Формат команды find.

В общем виде команда find выглядит следующим образом:

где путь – это директория, в которой мы хотим произвести поиск, опции - это ключи-параметры поиска.

Путь поиска команды find.

В обычном случае мы просто указываем полный путь к нужному каталогу, например:

Но в качестве пути поиска можно указывать следующие значения:

Основные опции команды find.

  • -name - поиск файлов по имени;
  • -user - поиск файлов, принадлежащих указанному пользователю;

-type - поиск файлов определенного типа. Вот наиболее используемые типы:

  • d – каталог;
  • f – обычный файл;
  • l – символическая ссылка;

Примеры использования команды find.

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

Примеры использования команды find

Но если мы напишем не полностью имя, например "file", то файл с именем "file1" не найдется. Для этого нужно писать имя в кавычках и в конце добавить *, вот таким образом:

Примеры использования команды find

Но нашлись и файлы и директории, в названии которых встречается "file". Чтобы найти только файлы, воспользуемся опцией -type , передав ей значение f, чтобы искать только файлы (для поиска только директорий мы бы передали d):

Примеры использования команды find

Но теперь нашлись файлы во всех вложенных директориях. А что если нам надо найти файл только в текущей директории или с уровнем вложенности 1 или 2?

Для этого используется опция maxdepth (глубина поиска), то есть, если мы хотим найти файл в директории поиска, без рекурсивного просмотра всех директорий:

Примеры использования команды find

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

Если хотим включить первый уровень внутри каталога поиска, тогда нужно указать maxdepth 2:

Примеры использования команды find

Как видно на скриншоте, теперь найден файл и в папке "Загрузки".

Важно!

Нужно указывать опцию -maxdepth перед опцией -name.

Теперь разберем очень важную опцию поиска файла по размеру "-size".

Важно, если мы хотим найти файлы размером в килобайтах, нужно писать в конце k, для мегабайт M, для гигабайт G, для байт b. Важно соблюдать регистр.

Разберем пример, найдем файлы в домашней директории менее 10 килобайт с именем file*:

Примеры использования команды find

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

Теперь давайте найдем файлы в домашней директории, которые весят больше 100 мегабайт:

Примеры использования команды find

Нашелся один файл, который весит более 100 мегабайт.

Также можно искать файлы определенного размера, например, которые весят 1G или 1M:

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

Поиск файлов, которые были изменены или созданы менее 2 дней назад:

Примеры использования команды find

Также можно использовать опцию -user, чтобы найти только файлы определенного пользователя:

Вместо username нужно подставить имя пользователя. Если искать ваши файлы, то можно использовать системную переменную $USER, которая выводит имя текущего пользователя.

Возможности команды find поистине безграничны, мы можем использовать и регулярные выражения. К примеру, давайте уберем из поиска все скрытые файлы и директории.

Примеры использования команды find

Поиск файлов, которые были изменены или созданы более 100 дней назад:

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

Помимо find для поиска файлов существует ещё команда locate.

Разница между ними в том, что locate использует собственную базу данных для хранения имен файлов. В то время, как find исследует директории в поисках заданного параметром командной строки имени файла.

Команда locate ищет файлы очень быстро, так как она производит поиск не по файловой системе, а по собственной базе данных.

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

Хотя это и не обязательно (система это делает периодически), просто если не выполнить её, то вам может вывести в поиске удаленные файлы или не вывести только что созданные.

Формат команды locate.

Вводится команда locate и имя файла, который хотим найти. И, конечно же, опции, которые разберем на примерах.

Примеры использования команды locate.

Давайте найдем все файлы с расширением .exe:

Примеры использования команды locate

Если мы хотим вывести результаты поиска в одну строку, тогда используем следующую опцию -0 (это тире и ноль)

Примеры использования команды locate

Но если мы ищем файл с названием "file", то не найдутся файлы с именами в другом регистре: File, FILE и т.д.

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

Если мы хотим узнать просто количество файлов, имеющих в имени "file", или количество файлов с определенным расширением, к примеру .exe, то нужно указать опцию -c:

Примеры использования команды locate

Что означает, что в системе 10 файлов имеют расширение .exe.

Если мы хотим ограничить число выводимых файлов в поиске по заданному параметру, мы ставим опцию -n и число:

То есть, данная команда с опцией -n 2 выведет нам только 2 первых найденных файла:

Примеры использования команды locate

И напоследок, locate лучше выполнять с опцией -e, тогда будут отображены файлы, которые существуют в системе. Даже тогда, когда запись о файле находится в базе данных, все равно будет осуществлена проверка физического нахождения файла в системе:

Полезные команды whereis и which.

У нас установлены программы в системе и чтобы узнать размещение бинарных файлов, исходных кодов и руководств, относящихся к установленной программе, можно выполнить команду whereis. Для примера найдем информацию о пакете google-chrome:

Команда же which отображает полный путь к установленной программе. Также в качестве примера возьмем google-chrome:

Читайте также: