26 июня 2021 г.
2842

Команды и горячие клавиши Linux

Строки такого цвета кликабельны, при нажатии откроются параметры команды.

==Открыть параметры всех команд==

Особенности

    Особенности работы в командной строке:
  • command_1; command_2; command_3 выполнение нескольких команд друг за другом независимо от успешного выполнения предыдущей команды
  • command_1 && command_2 && command_3 выполнение нескольких команд друг за другом при условии успешного выполнения предыдущей команды
  • yum install nginx && \
    systemctl start nginx
    команда из нескольких строк. Символ \ в конце строки экранирует символ переноса и таким образом позволяет сделать команду в несколько строк
  • sudo !! выполнение последней команды с правами sudo
  • yes | command_or_script ответ yes на все запросы команды или скрипта
  • !1 выполнение первой команды из истории команд
  • !command выполнение команды из истории, которая первая совпадает с введенной
  • $(command) подстановка в командную строку результата одной команды для замены части другой команды
  • clear очистка экрана
  • "name dir" или name\ dir при указании имени файла или каталога с пробелом в названии, нужно брать строку в кавычки или поставить слэш перед пробелом
  • command -v у многих команд есть ключ -v (verbose), при указании которого будет выводится подробная информация о работе команды
    Метасимволы и регулярные выражения
  • * любое количество символов
  • ? любой один символ
  • ^abc строки начинающиеся на abc
  • abc$ строки заканчивающиеся на abc
  • [1-3] диапазон цифр
  • [a-c] диапазон букв
  • [abc] любой один символ указанный в скобках
  • [!abc] любой один символ не указанный в скобках
  • {6,7,8} последовательность
  • {0..9} последовательность
  • {a..d} последовательность
  • [[:alpha:]] любая буква
  • [[:lower:]] любой символ в нижнем регистре
  • [[:upper:]] любой символ в верхнем регистре
  • [[:alnum:]] любая буква или цифра
  • [[:digit:]] любая цифра
  • [[:space:]] любой символ пробела (включая табуляцию, перевод строки и т.д.)
Запись многострочного текста из консоли в файл
cat > /home/text.txt <<EOF 
str 1
str 2
str 3
EOF

Горячие клавиши

Tabодно нажатие дополняет команду или путь, два нажатия отображает все возможные варианты дополнения
Ctrl + Cпрерывание работы выполняющейся команды
Ctrl + Zперевод работы выполняющейся команды в фоновый режим. Команда jobs показывает задачи в фоновом режиме. Команда fg возвращает задачу в нормальный режим
Ctrl + P, Ctrl + Nвывод предыдущей и следующей введенной команды (аналог стрелок вверх и вниз)
Ctrl + A, Ctrl + Eперемещение к началу строки и к концу (аналог кнопок Home и End)
Ctrl + U, Ctrl + Kвырезание текста от начала строки до курсора и от курсора до конца строки
Ctrl + Wвырезать слово перед курсором, если курсор на слове, то удаляет от начала слова до курсора
Ctrl + Yвставка текста, вырезанного через Ctrl + U, Ctrl + K, Ctrl + W
Ctrl + Tзамена символа на предыдущий
Ctrl + Rпоиск по истории введенных команд. После нажатия нужно начать вводить имя искомой команды, будет отображена самая последняя с указанными символами, если нажать еще раз Ctrl + R выведется более старая команда
Ctrl + Lочистка терминала (аналог команды clear)
Ctrl + Dзакрытие терминала (аналог команды exit)
Ctrl + S, Ctrl + Qпоставить на паузу, снять с паузы вывод команды

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

Создание, изменение, удаление

Для добавления в имя файла или каталога текущей даты и времени нужно указать в имени при создании следующую конструкцию: $(date +%Y-%m-%d_%H:%M)
  • touch <file> создание файла
  • mkdir <dir> создание каталога
  • mkdir -p <dir/dir1/dir2> создание каталога со всеми промежуточными каталогами
  • cp <source> <dest> копирование
    • -a копирование с сохранением прав и владельца
    • -r рекурсивное копирование, то есть включая все вложенные каталоги
    • -r </source>/* </dest> копирование всех вложенных каталогов и файлов
    • -p копирование без изменения разрешений доступа
    • -f копирование с заменой
    • -v вывод подробного лога действий
    • yes | cp -rfv </source> </dest> копирование всех каталогов и файлов с заменой и подробным выводом
  • mv <source> <dest> перенос/переименование файла или каталога
  • ln <source> <link> создание жесткой ссылки
  • ln -s <source> <link> создание символической ссылки
  • rm <file> удаление файла
    • -rf <dir> удаление каталога со всеми файлами и каталогами внутри без подтверждения
  • echo "<string>" > <file> очистка файла и запись туда указанной строки
  • echo "<string>" >> <file> дозапись в файл указанной строки без очистки файла
  • > <file> очистка файла

Вывод содержимого файлов

  • cat <file> вывод содержимого файла в консоль
    • -n с нумерацией строк
    • -E с отображением символов окончания строки
  • tac <file> вывод содержимого файла в консоль с обратным порядком строк
  • head <file> вывод первых 10 строк файла
  • tail <file> вывод последних 10 строк файла
  • ls список файлов и каталогов
    • -l с разрешениями, доступом
    • -a со скрытыми файлами и каталогами
    • -R с дочерними каталогами и их содержимым
    • -lt с сортировкой по времени
    • -ltr с сортировкой по времени в обратном порядке
    • -lh с отображением размеров в удобном виде
    • -ld выводить информацию о текущем каталоге, а не о его содержимом
    • -i с количеством инод
    • ll алиас для ls -l
  • file <file> вывод типа файла
  • fuser <file> идентифицирует процессы, использующие файл
  • lsof список открытых файлов
    • lsof <file> кто использует указанный файл
    • lsof +D <dir> рекурсивный поиск всех открытых файлов, начиная с указанного каталога
    • lsof -u <user> список всех файлов открытых пользователем
    • lsof -c <progr_name> список всех файлов открытых программой
    • lsof -p <pid> список всех файлов открытых процессом с указанным pid
  • namei -l </source/dir1/dir2> вывод прав всех каталогов в пути
  • pwd вывод абсолютного путь к текущему каталогу
  • wc <file> вывод числа строк, слов и байт в файле
    • -c вывод только числа байт в файле
    • -m вывод только числа символов в файле
    • -l вывод только числа строк в файле
    • -L вывод только числа символов строки максимальной длины в файле
  • diff <file1> <file2> сравнение файлов
  • realpath <file> вывод абсолютного пути файла
  • find <dir> поиск по файловой системе, без параметров выводит все файлы в указанном каталоге
    • -name "<file>" искать file с учетом регистра
    • -not -name "<*.*>" вывести файлы кроме тех, что содержат указанную маску
    • -iname "<file>" искать file без учета регистра
    • -type l поиск символьных ссылок
    • -type d поиск каталогов
    • -samefile "<file>" найти все жесткие ссылки на файл в каталоге
    • -user root поиск файлов, принадлежащих пользователю
    • -perm 777 поиск файлов, с определенными правами
    • -size +100M поиск файлов с размером больше 100 мегабайт
    • -mmin -120 поиск файлов доступ к которым осуществлялся меньше 120 минут назад
    • -mtime +30 -delete удаление файлов старше 30 дней в указанном каталоге
    • -mtime +30 -exec rm -f {} \ удаление файлов старше 30 дней в указанном каталоге, выполняется команда после ключа -exec
    • -type d -empty -delete удаление пустых каталогов
    • -type f -iname "*~\$*" -delete удаление файлов, имеющих в своем составе ~$
    • -nouser -nogroup поиск файлов не принадлежащих имеющимся в системе пользователям и группам
    • -type f -links +2 поиск файлов имеющих больше двух жестких ссылок
    • -empty поиск пустых каталогов и файлов
  • grep <string> поиск указанной строки на вводе
    • grep <string> <dir>/* поиск строки во всех файлах указанного каталога
    • grep -R <string> </dir>/* поиск строки во всех файлах указанного каталога и его подкаталогов
    • grep -l <string> </dir>/* поиск строки в файлах и вывод только имен файлов, в которых есть нужная трока
    • grep -A <n> <string> поиск с выводом n строк после искомой строки
    • grep -B <n> <string> поиск с выводом n строк перед искомой строкой
    • grep -c вывод количества совпадений
    • grep -i <string> поиск указанной строки игнорируя регистр букв
    • grep -n <string> поиск указанной строки и вывод с номерами строк
    • grep -s <string> поиск указанной строки, при этом не выводятся сообщения об ошибке
    • grep -w <string> поиск полного совпадения указанной строки
    • grep -w <string> поиск строк, в которых нет указанной строки
    • grep -e <string-1> -e <string-2> поиск по нескольким выражениям

Права

  • chmod XXX <dir(file)> установка прав на чтение, запись, выполнение файла или каталога
    • chmod -R XXX <dir(file)> рекурсивно применить разрешения
    • Вместо X подставляется цифра, соответствующая разрешениям. Первая цифра - права для владельца, вторая - права для группы, третья - права для всех остальных
    • 7 rwx
    • 6 rw-
    • 5 r-x
    • 4 r--
    • 3 -wx
    • 2 -w-
    • 1 --x
    • 0 ---
    • chmod 777 <dir(file)> разрешение для всех
    • Можно задавать права символами, а не цифрами
    • u права для пользователя
    • g права для группы
    • o права для остальных
    • a права для всех
    • + добавить права
    • - сбросить права
    • = установить права
    • r права на чтение
    • w права на запись
    • x права на выполнение
    • chmod u+x <dir(file)> добавить разрешение пользователю на выполнение
    • chmod go-wx <dir(file)> убрать у группы и у остальных права на запись и выполнение
    • chmod a=rwx <dir(file)> присвоить полные права всем
  • chown user <dir(file)> смена владельца каталога или файла
    • chown -R <user> <dir(file)> рекурсивная смена владельца
    • chown <user>:<group> <dir(file)> смена владельца и группы
    • chown :<group> <dir(file)> смена только группы, аналогично команде chgrp group <dir(file)>

Прочее

  • cd <dir> переход в каталог
  • cd - переход в предыдущий каталог, в котором находился терминал

Сеть

  • ethtool <network interface> вывод информации о сетевой карте указанного сетевого интерфейса
  • host <hostname or ip> получение доменного имени по ip-адресу или получение ip-адреса по доменному имени
  • hostname вывод сетевого имени системы
  • hostnamectl set-hostname <hostname> установка сетевого имени hostname
  • ip a сетевые подключения
  • netstat отображение статистики сети
    • -rn таблица маршрутизации
    • -t отбор для протокола tcp
    • -u отбор для протокола udp
    • -i статистика по количеству принятых и отправленных пакетов
    • -l отображение слушающих портов
  • nslookup <hostname> проверка доступности хоста
  • nmblookup <workgroup> -M проверка, кто является master browser`ом в домене/рабочей группе
  • dig утилита для обращения к DNS серверам
    • dig HOSTNAME.local получение ip-адреса по полному имени (имя хоста с именем домена)
    • dig -x 192.168.10.15 получение имени хоста по ip-адресу
    • dig -x 192.168.10.15 +short получение имени хоста по ip-адресу с кратким выводом
    • dig google.com показывает все ip-адреса сайта

Пакеты и репозитории

  • rpm утилита нижнего уровня в CentOS, которая может получить сведения о пакете
    • -qa отображение всех установленных пакетов
    • -q <package_name> поиск установленного пакета в системе
    • -qlp <package_name.rpm> отобразить содержимое пакета
    • -qip <package_name.rpm> вывод информации о пакете
  • yum/dnf пакетный менеджер CentOS, dnf используется начиная с CentOS8, параметры у них одинаковые
    • install <package_name или URL> установка пакета
    • check-update проверка обновлений, без установки
    • check-update <package_name> проверка обновлений указанного пакета, без установки
    • update <package_name> обновление пакета
    • remove <package_name> удаление пакета и всех зависимых от него
    • repolist вывод установленных репозиториев
    • list installed вывод списка всех установленных пакетов
    • list installed <package-name-1> <package-name-2> проверка, установлены ли указанные пакеты
    • --downloadonly install <package_name> скачать пакет без установки, он будет в каталоге /var/cache/yum/x86_64/7/base/packages/ (для CentOS7)
    • search <package_name> поиск пакета в репозитории по названию и описанию
    • list <package_name> поиск пакета в репозитории по названию
    • list <package_name> --showduplicates отобразить все версии пакета в репозиториях
    • provides <dir> показать к какому пакету относится путь
    • info посмотреть информацию обо всех пакетах
    • info <package_name> посмотреть информацию о пакете такую как: установлен ли пакет, версию, размер, репозиторий
    • history просмотр транзакций yum
    • history info 1 просмотр что сделано в транзакции по номеру 1
    • history undo откатить транзакцию
  • apt пакетный менеджер Ubuntu
    • install <package_name или URL> установка пакета
    • update синхронизация внутренней базы данных о пакетах с репозиториями
    • upgrade <package_name> обновление указанного пакета, без указания пакета обновляет все установленные
    • dist-upgrade обновление дистрибутива
    • remove <package_name> удаление пакета
    • check поиск нарушенных зависимостей
  • rpm2cpio <package_name>.rpm | cpio -idv распаковка rpm пакета
  • whereis <progr_name>.rpm | cpio -idv проверить куда установлено приложение

Службы и процессы

  • systemctl утилита управления юнитами, без параметров выводит состояние всех юнитов
    • start <service_name> запуск службы
    • stop <service_name> остановка службы
    • status <service_name> статус службы
    • restart <service_name> перезапуск службы
    • reload <service_name> перечитать файл конфигурации службы
    • enable <service_name> добавить службу в автозагрузку
    • disable <service_name> убрать службу из автозагрузки
    • enable --now <service_name> запустить и добавить в автозагрузку
    • --type=service вывод состояния всех служб
    • is-active <service_name> проверить активен ли сейчас юнит
    • is-enabled <service_name> проверить включен ли юнит в автозагрузку
    • list-units --type=service посмотреть список всех загружаемых служб
    • list-units --type=service --all посмотреть список всех служб
    • list-unit-files --type=service посмотреть краткий список служб и их состояние
    • --failed --type=service посмотреть только отказавшие службы
    • list-dependencies список юнитов в виде дерева
  • ps вывод запущенных процессов в данном терминале
    • ps aux вывод всех процессов, включая процессы без управляющего терминала
    • ps -efH вывод всех процессов в виде дерева
    • ps -C <service_name> проверить запущен ли процесс с указанным именем
    • ps -p <pid> проверить запущен ли процесс с указанным pid
  • fg продолжение приостановленной задачи
  • jobs вывод приостановленных задач
  • killall <name> убить все процессы с указанным именем
  • kill <pid> убить процесс с введенным pid
  • top вывод запущенных процессов в интерактивном режиме
    • Следующие команды вводятся при запущенной утилите top в интерактивном режиме
    • n отображать указанное количество процессов
    • k уничтожить процесс
    • u отображать процессы указанного пользователя
    • M сортировать по объему ОЗУ
    • P сортировать по загрузке процессора
    • q выход

Система

  • dmesg вывод сообщений, которые отображались в процессе загрузки системы
  • iscpu вывести характеристики процессора
  • timedatectl вывод настроек времени
    • timedatectl list-timezones посмотреть список доступных часовых поясов
    • timedatectl set-timezone <timezone> установить часовой пояс
  • free вывод размера оперативной памяти
    • free -m в МБ
    • free -g в ГБ
  • shutdown выключение системы через минуту после ввода команды
    • shutdown now выключение системы сразу после ввода команды
    • shutdown -r перезагрузка системы через минуту после ввода команды
    • shutdown -c отмена выполнения выключения или перезагрузки
    • shutdown -h 22:15 запланировать выключение системы на 22 часа 15 минут
  • uptime показать время с начала работы системы
  • uname -a показать информацию о системе, такую как имя хоста, версию ядра
  • journalctl посмотреть журнал системных логов с момента последней загрузки
    • --list-boots список журналов предыдущих загрузок
    • -b -1 посмотреть журнал предыдущей загрузки
    • --since "2021-11-18 07:00:00" посмотреть журнал начиная с указанной даты
    • --until "2021-11-18 07:00:00" посмотреть журнал до указанной даты
    • --since "2021-11-17 07:00:00" --until "2021-11-18 07:00:00" посмотреть журнал за указанный промежуток времени
    • -u <service_name> посмотреть журнал для указанного сервиса
    • /usr/bin/sudo посмотреть журнал для указанного процесса по его пути
    • _PID=<pid> посмотреть журнал для указанного процесса по его pid
    • _UID=<uid> посмотреть журнал для указанного пользователя по его uid
  • strace <command> трассировка системных вызовов и сигналов введенной команды
  • ltrace <command> трассировка вызовов библиотеки введенной команды
  • Параметры системы
    • cat /etc/*-release информация о системе
    • cat /proc/version версия ядра
    • cat /proc/cmdline список параметров, переданных ядру при загрузке
    • cat /proc/cpuinfo информация о ЦПУ
    • cat /proc/meminfo информация о ОЗУ
    • cat /proc/devices список устройств
    • cat /proc/filesystems поддерживаемые файловые системы
    • cat /proc/mounts список подмонтированных файловых систем
    • cat /proc/modules список загруженных модулей
    • cat /proc/swaps список разделов и файлов подкачки, которые активны в данный момент
  • Переменные среды
    • env вывод переменных среды
    • export ввод переменной среды
    • unset отключение переменной среды
    • PATH=$PATH:/home добавление значения /home в переменную PATH

Пользователи и группы

  • useradd <user> добавить пользователя user
    • -g <group> <user> с указанием основной группы
    • -c "text" <user> с указанием описания пользователя
    • -e YYYY-MM-DD <user> с указанием даты, когда пользователь будет заблокирован
    • -G <group1>,<group2> <user> с указанием списка дополнительных групп, которым пользователь принадлежит
  • userdel -r <user> удалить пользователя user вместе с его каталогом
  • usermod <user> изменение параметров пользователя
    • -L <user> блокировка учетной записи
    • -U <user> разблокировка учетной записи
    • -g <group> <user> изменение основной группы пользователя
    • -c "text" <user> добавление описания пользователя
    • -e YYYY-MM-DD <user> указание даты блокировки пользователя
    • -aG <group1>,<group2> <user> добавление пользователю дополнительных групп
  • groupadd <group>создать группу <group>
    • -f если группа уже есть в системе выйти со статусом успешного выполнения
    • -g <id> с указанием <id> группы
  • groupmod -n <group2> <group1> сменить название группы <group1> на <group2>
  • groupdel <group> удалить группу
  • getent passwd получить список всех пользователей системы, из файла /etc/passwd
  • id <user> информация о пользователе user
  • passwd <user> установить/изменить пароль пользователя
    • -S вывод статуса пользователя
    • -l блокировка пользователя
    • -d удаление пароля пользователя
  • gpasswd <group> изменяет/устанавливает пароль группы, что позволяет пользователям временно войти в группу при помощи команды newgrp <group>, если им известен пароль
  • last вывод списка входа и выхода пользователей по времени
  • lastb вывод списка неудачных попыток входа
  • who показать пользователей онлайн, время и дату входа
  • whoami показать имя текущего пользователя
  • sudo -u <user> <command> выполнить одну команду от имени указанного пользователя
  • sudo su - <user> войти под указанным пользователем без ввода его пароля

Диски, разделы, устройства

  • df вывод информации об использовании дисков
    • -h в человекочитаемом виде
    • -T с отображением типа файловых систем
    • -i с отображением информации об inode
  • du вывод размера файлов в текущем каталоге и подкаталогах
    • -h в человекочитаемом виде
    • -sh вывести размер текущего каталога
    • -sh ./* вывести размер подкаталогов текущего каталога
    • -sh * | sort -rn вывести список файлов и каталогов, сортируя его по размеру
  • lsusb вывод подключенных usb устройств

Разное

  • cal вывод календаря на текущий месяц
  • date вывод текущей даты и времени
  • export EDITOR=nano изменить редактор по умолчанию
  • history история введенных команд
  • crontab команда для настройки cron
    • -l посмотреть задания cron для пользователя под которым осуществлен вход
    • -u <user> -l посмотреть задания cron для пользователя <user>
    • -e редактировать задания cron
    • -u <user> -e редактировать задания cron для пользователя <user>