Командний процесор/інтерпретатор BASH

Bash (Bourne Again SHell) - это командный интерпретатор или оболочка командной строки, используемая в UNIX-подобных операционных системах, включая Linux и macOS. Он предоставляет пользователю интерфейс для взаимодействия с операционной системой путем ввода команд, которые выполняются системой. Bash поддерживает множество функций, таких как переменные, циклы, условные операторы и многое другое, что делает его мощным инструментом для управления и автоматизации задач в командной строке.

Интерпретатор Bash и утилиты Linux

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

Итак строка, которую интерпретирует командный процессор bash по традиции называется "команда". Если команда включает в себе нескольких команд и утилит, то ее называют "составная команда", а последовательность выполнения называют "конвейер" (pipeline). Конвейер реализует "поток" (stream), который передается для обработки.

Утилиты Linux

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

Утилита env

Утилита env используется для вывода значений переменных среды, а также используется для запуска утилиты или команды в пользовательской среде. Используется сценариями оболочки для запуска правильного интерпретатора. При таком использовании среда обычно не изменяется. Синтаксис: env [OPTION]... [-][NAME=VALUE]... [COMMAND [ARG]...]

  • -i, --ignore-environment start with an empty environment
    -0, --null end each output line with NUL, not newline
    -u, --unset=NAME remove variable from the environment
    -C, --chdir=DIR change working directory to DIR
    -S, --split-string=S process and split S into separate arguments;
    used to pass multiple arguments on shebang lines
    -v, --debug print verbose information for each processing step
    --help display this help and exit
    --version output version information and exit

Утилита find

https://losst.pro/komanda-find-v-linux
Утилита find предназначена для поиска файлов и каталогов по сочетанию различных критериев имени, типа, размера, группы, разрешения, владельца и другим. Утилита используется очень части и предустановлена по умолчанию во всех Linux дистрибутивах.

find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

  • -P - никогда не открывать символические ссылки.
    -L - получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
    -maxdepth - максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
    -depth - искать сначала в текущем каталоге, а потом в подкаталогах.
    -mount искать файлы только в этой файловой системе.
    -version - показать версию утилиты find.
    -print - выводить полные имена файлов.
    -type f - искать только файлы.
    -type d - поиск папки в Linux.
  • -name - поиск файлов по имени.
    -perm - поиск файлов в Linux по режиму доступа.
    -user - поиск файлов по владельцу.
    -group - поиск по группе.
    -mtime - поиск по времени модификации файла.
    -atime - поиск файлов по дате последнего чтения.
    -nogroup - поиск файлов, не принадлежащих ни одной группе.
    -nouser - поиск файлов без владельцев.
    -newer - найти файлы новее чем указанный.
    -size - поиск файлов в Linux по их размеру.

 

Утилита locate

https://losst.pro/komanda-locate-v-linux
Утилита locate применяется для поиска файлов по имени и содержанию сходно с find, но при этом поиск выполняется не фактическим чтением файлов, а в специальной базе данных, которая обновляется с некоторой заданной периодичностью. Таким образом locate работает быстрей, но результаты поиска в изменяемых файла могут оказаться неактуальными.

Утилита sort

Утилита для изменения или контроля порядка строк по заданным правилам сортировки перед выводом. Синтаксис:
sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F

  • -b - не учитывать пробелы
    -d - использовать для сортировки только буквы и цифры
    -i - сортировать только по ASCII символам
    -n - сортировка строк linux по числовому значению
    -r - сортировать в обратном порядке
    -с - проверить был ли отсортирован файл
    -o - вывести результат в файл
    -u - игнорировать повторяющиеся строки
    -m - объединение ранее отсортированных файлов
    -k - указать поле по которому нужно сортировать строки, если не задано, сортировка выполняется по всей строке.
    -f - использовать в качестве разделителя полей ваш символ вместо пробела.

Утилита uniq

https://losst.pro/komanda-uniq-linux
uniq обрабатывает повторяющиеся строки
uniq [OPTION]... [INPUT [OUTPUT]]

  • -c, --count prefix lines by the number of occurrences
    -d, --repeated only print duplicate lines, one for each group
    -D print all duplicate lines
    --all-repeated[=METHOD] like -D, but allow separating groups
    with an empty line;
    METHOD={none(default),prepend,separate}
    -f, --skip-fields=N avoid comparing the first N fields
    --group[=METHOD] show all items, separating groups with an empty line;
    METHOD={separate(default),prepend,append,both}
    -i, --ignore-case ignore differences in case when comparing
    -s, --skip-chars=N avoid comparing the first N characters
    -u, --unique only print unique lines
    -z, --zero-terminated line delimiter is NUL, not newline
    -w, --check-chars=N compare no more than N characters in lines
    --help display this help and exit
    --version output version information and exit

wc

выполняет обработку содержания файлов или потока.
wc [OPTION]... [FILE]...
wc [OPTION]... --files0-from=F

  • -c, --bytes print the byte counts
    -m, --chars print the character counts
    -l, --lines print the newline counts
    --files0-from=F read input from the files specified by
    NUL-terminated names in file F;
    If F is - then read names from standard input
    -L, --max-line-length print the maximum display width
    -w, --words print the word counts
    --help display this help and exit
    --version output version information and exit

Утилита grep

Утилита реализует поиск текста в файлах или потоках вывода других команд.
grep [OPTION]... PATTERN [FILE]...

  • Pattern selection and interpretation:
    -E, --extended-regexp PATTERN is an extended regular expression
    -F, --fixed-strings PATTERN is a set of newline-separated strings
    -G, --basic-regexp PATTERN is a basic regular expression (default)
    -P, --perl-regexp PATTERN is a Perl regular expression
    -e, --regexp=PATTERN use PATTERN for matching
    -f, --file=FILE obtain PATTERN from FILE
    -i, --ignore-case ignore case distinctions
    -w, --word-regexp force PATTERN to match only whole words
    -x, --line-regexp force PATTERN to match only whole lines
    -z, --null-data a data line ends in 0 byte, not newline
  • Miscellaneous:
    • -s, --no-messages suppress error messages
    • -v, --invert-match select non-matching lines
      -V, --version display version information and exit
      --help display this help text and exit
  • Output control:
    -m, --max-count=NUM stop after NUM selected lines
    -b, --byte-offset print the byte offset with output lines
    -n, --line-number print line number with output lines
    --line-buffered flush output on every line
    -H, --with-filename print file name with output lines
    -h, --no-filename suppress the file name prefix on output
    --label=LABEL use LABEL as the standard input file name prefix
    -o, --only-matching show only the part of a line matching PATTERN
    -q, --quiet, --silent suppress all normal output
    --binary-files=TYPE assume that binary files are TYPE;
    TYPE is 'binary', 'text', or 'without-match'
    -a, --text equivalent to --binary-files=text
    -I equivalent to --binary-files=without-match
    -d, --directories=ACTION how to handle directories;
    ACTION is 'read', 'recurse', or 'skip'
    -D, --devices=ACTION how to handle devices, FIFOs and sockets;
    ACTION is 'read' or 'skip'
    -r, --recursive like --directories=recurse
    -R, --dereference-recursive
    likewise, but follow all symlinks
    --include=FILE_PATTERN
    search only files that match FILE_PATTERN
    --exclude=FILE_PATTERN
    skip files and directories matching FILE_PATTERN
    --exclude-from=FILE skip files matching any file pattern from FILE
    --exclude-dir=PATTERN directories that match PATTERN will be skipped.
    -L, --files-without-match print only names of FILEs with no selected lines
    -l, --files-with-matches print only names of FILEs with selected lines
    -c, --count print only a count of selected lines per FILE
    -T, --initial-tab make tabs line up (if needed)
    -Z, --null print 0 byte after FILE name
  • Context control:
    -B, --before-context=NUM print NUM lines of leading context
    -A, --after-context=NUM print NUM lines of trailing context
    -C, --context=NUM print NUM lines of output context
    -NUM same as --context=NUM
    --group-separator=SEP use SEP as a group separator
    --no-group-separator use empty string as a group separator
    --color[=WHEN],
    --colour[=WHEN] use markers to highlight the matching strings;
    WHEN is 'always', 'never', or 'auto'
    -U, --binary do not strip CR characters at EOL (MSDOS/Windows)

 

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

//

!!!

!!! https://habr.com/ru/companies/ruvds/articles/445270/

  • pwd [-LP] выводит имя текущего каталога
  • cd dir - устанавливает текущий каталог
  • cat выводит содержание файла на экран
  • ls, ll, dir, vdir отображает содержание каталога
  • mkdir создает каталог
  • touch создает файл
  • echo string >>file добавляет строку в конец файла
  • cp копирует файл или каталог
    • cp -r копирует рекурсивно
  • mv перемещает или переименовывает файл или каталог
  • rm удаляет файл или каталог
  • chown
  • chmod изменяет атрибуты доступа файла или каталога
  • df выводит информацию о дисковых устройствах
  • sudo запускает команду с правами суперпользователя
  • clear очищает экран
  • ps выводит список процессов
  • kill
  • who активные ?пользователи
  • history отображает историю команд
  • hostname
  • uname Print certain system information

BASH

bash -version

 

Скрипты BASH

https://habr.com/ru/articles/726316/

Midnight Commander

mc запустить

yum install mc для установки через yum

 

Утилиты

//

Утилита ps

Утилита для просмотра состояния процессов (Process State)
ps [options]

Опции образуются слитной последовательностью ключей, которые перечислены по назначению:

  • a Показывает процессы всех пользователей. По умолчанию ps показывает только процессы текущего пользователя, но с ключом a он будет показывать процессы всех пользователей.
  • u Выводит расширенный формат списка процессов, включая информацию о владельце процесса и использовании ресурсов.
  • x Показывает также процессы, не являющиеся терминальными. Обычно ps не показывает процессы, которые не связаны с текущим терминалом (например, демоны), но с ключом x они тоже будут отображены.
  • Basic options:
    • -A, -e all processes
      -a all with tty, except session leaders
      a all with tty, including other users
      -d all except session leaders
      -N, --deselect negate selection
      r only running processes
      T all processes on this terminal
      x processes without controlling ttys
  • Selection by list:
    • -C <command> command name
      -G, --Group <GID> real group id or name
      -g, --group <group> session or effective group name
      -p, p, --pid <PID> process id
      --ppid <PID> parent process id
      -q, q, --quick-pid <PID>
      process id (quick mode)
      -s, --sid <session> session id
      -t, t, --tty <tty> terminal
      -u, U, --user <UID> effective user id or name
      -U, --User <UID> real user id or name
  • Output formats:
    • -F extra full
      -f full-format, including command lines
      f, --forest ascii art process tree
      -H show process hierarchy
      -j jobs format
      j BSD job control format
      -l long format
      l BSD long format
      -M, Z add security data (for SELinux)
      -O <format> preloaded with default columns
      O <format> as -O, with BSD personality
      -o, o, --format <format>
      user-defined format
      s signal format
      u user-oriented format
      v virtual memory format
      X register format
      -y do not show flags, show rss vs. addr (used with -l)
      --context display security context (for SELinux)
      --headers repeat header lines, one per page
    • --no-headers отменяет вывод заголовка таблицы
    • --cols, --columns, --width <num>
      set screen width
      --rows, --lines <num>
      set screen height
  • Show threads:
    • H as if they were processes
      -L possibly with LWP and NLWP columns
      -m, m after processes
      -T possibly with SPID column
  • Miscellaneous options:
    • -c show scheduling class with -l option
      c show true command name
      e show the environment after command
      k, --sort specify sort order as: [+|-]key[,[+|-]key[,...]]
      L show format specifiers
      n display numeric uid and wchan
      S, --cumulative include some dead child process data
      -y do not show flags, show rss (only with -l)
      -V, V, --version display version information and exit
      -w, w unlimited output width--help <simple|list|output|threads|misc|all>
      display help and exit

Результатом ps является таблица с колонками (набор и названия отличаются в различных системах)

!!! USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  • STAT описывают текущий статус процесса !!!. Вот их расшифровка:
    • S: процесс находится в режиме сна (sleep), то есть ожидает какого-то события, например, завершения операции ввода-вывода.
    • s: лидер сеанса (session leader).
    • +: процесс находится в группе управления.
    • l: процесс является многозадачным (multithreaded).
    • R: процесс выполняется (running).
  • UID - пользователь, от имени которого запущен процесс;
  • PID - идентификатор процесса;
  • PPID - идентификатор родительского процесса;
  • C - процент времени CPU, используемого процессом;
  • STIME - время запуска процесса;
  • TTY - терминал, из которого запущен процесс;
  • TIME - общее время процессора, затраченное на выполнение процессора;
  • CMD - команда запуска процессора;
  • LWP - показывает потоки процессора;
  • PRI - приоритет процесса.
  • SZ - это размер процесса в памяти;
  • RSS - реальный размер процесса в памяти;
  • PSR - ядро процессора, на котором выполняется процесс.
  • F - флаги, ассоциированные с этим процессом;
    S - состояние процесса;
    PRI - приоритет процесса в планировщике ядра Linux;
    NI - рекомендованный приоритет процесса, можно менять;
    ADDR - адрес процесса в памяти;
    WCHAN - название функции ядра, из-за которой процесс находится в режиме ожидания.

Примеры

ps aux процессы всех пользователей (a), в расширенном формате (u), включая нетерминальные (x)

ps --no-headers -o pid,stat без заголовка, только колонки pid, stat

 

Утилита sed

//habr.com (27 May 2022)
sed - потоковый редактор текста

//

lsar --help

Утилита для просмотра содержимого архивных файлов.
Usage: lsar [options] archive [files ...]

The Unarchiver unar

//theunarchiver.com/command-line
The Unarchiver — проприетарный свободный распаковщик архивов, разработанный для macOS и портированный для Windows и Linux, поддерживает большое разнообразие современных,  устаревших и необычных форматов архивных файлов: ZIP, RAR, 7z, LHA, LZH, Tar, gzip, bzip2, LZMA, CAB, MSI, ARJ, Ace, Zoo, ADF, DMS, LZX, PDF и другие //theunarchiver.com

Утилита использует синтаксис: unar [options] archive [files ...]

  • --help позволяет получить справку
  • !!!

//

редакторы nano, vim

Переменные среды

Специальные именованные значения используются операционной системой и приложениями для хранения информации о среде, в которой они работают. Каждое такое значение называется "переменная среды". Переменная идентифицируется уникальным именем, чувствительным к регистру. По традиции в имени используют символы верхнего регистра и цифры. Для использования значения перед именем переменной ставится символ $.

Стандартные переменные среды:

  • $PATH: Содержит список каталогов, в которых операционная система будет искать исполняемые файлы.
  • $TTY: Содержит имя tty текущего сеанса.
  • $HOME: Содержит домашний каталог пользователя.
  • LANG=en_US.utf8
  • SSH_CLIENT=123.45.67.89 12345 22
  • SSH_CONNECTION=123.45.67.89 12345 98.76.54.321 22
  • SSH_TTY=/dev/pts/0
  • HOSTNAME=reks.biz
  • USER=reks
  • LOGNAME=reks
  • PWD=/var/www/reks
  • HOME=/var/www/reks
  • MYSQL_UNIX_PORT=/var/run/mysqld/mysql.sock
  • MAIL=/var/spool/mail/reks
  • TERM=xterm-256color
  • SHELL=/bin/bash
  • NVM_BIN=/var/www/reks/.nvm/versions/node/v20.11.1/bin
  • MANPATH=/usr/share/man:

Получить значения переменных среды можно используя утилиту env.

Джерела

Основные linux-команды для новичка //habr.com (11 May 2020)
Bash скрипты //habr.com (11 May 2020)
Уильям Шоттс "Командная строка Linux" //readli.net
Команда ps в Linux //losst.pro/komanda-ps-v-linux

 

Leave a Reply