Инструменты пользователя

Инструменты сайта


linux:bash

Оболочка

Born again shell - усовершенствованная оболочка Bourne shell.
Командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне, так же, может читать команды из файла, т.е. написание скриптов.

Общее

  • history - история команд
  • set +o history - отключить историю (-о включить)
  • cd - - переход в последнюю директорию
  • which/whatis - путь к исполняемому файлу/краткая справка
  • strace/ltrace - трассировщики, системных, библиотечных вызовов, работают по разному
  • file - определение типа файла
  • type - проверка команды (путь к бинарнику либо что из себя представляет)
  • ldd - список библиотек от которых зависит программа
  • zless/zcat/zgrep - для работы с архивами
  • tr '<source>' '<dest>' - замена/преобразование строк
  • strings - Команда для извлечения строк из указанного файла

Приемы

  • !! - последняя команда
  • yes | <command> - ответ на интерактивные вопросы
  • > file - очистка файла
  • -
:!: strace

Статистика системных вызовов
Подключение к запущенной программе strace -p 31796
Для фильтрации вывода есть ключ -e (strace -e trace=stat <command>)

  • stat - вызовы stat
  • file - все системные вызовы, которые касаются файлов;
  • process - управление процессами;
  • network - сетевые системные вызовы;
  • signal - системные вызовы, что касаются сигналов;
  • ipc - системные вызовы IPC;
  • desc - управление дескрипторами файлов;
  • memory - работа с памятью программы.

Формы команд

  • cmd & - выполнить в фоновом режиме.
  • {cmd1; cmd2} - выполнить группой, в текущей оболочке, () - в подоболочке
  • cmd1 | cmd2 - направить выход cmd1 на вход cmd2
  • cmd1 `cmd2` - выход cmd2 в аргументами в cmd1, $(cmd2) по стандарту POSIX
  • cmd $(выражение) - арифметический результат выражения, аргументами в cmd.
  • cmd1 && cmd2 - логическое И, || ИЛИ
  • !cmd - инверсия кода результата.
  # Выполнить указанные команды в фоне
nroff file > file.txt &
 
  # Выполнить команда последовательно
cd; ls
 
  # Переадресация результатов
(date; who; pwd) > logfile
 
  # Отсортировать, подготовить и вывести результат
sort file | pr -3 | lpr
 
  # Отобразить эхом сообщение об ошибке при неудаче
grep 'XX file' || echo "XX not found"
 
  # Различия в файлах, после их сортировки
diff -u <(sort file1) <(sort file2) | less
 
  # Подстановка имен файлов
ls -l ./{*.sh,*.py}
ls -l [a-c]*
ls -l [^ab]* (отрицание)

Переадресация ввода/вывода

0ВводstdinКлавиатура
1ВыводstdoutЭкран терминала
2Вывод ошибокstderrЭкран терминала

* cmd > file - перезаписать выводом команды файл » присоединить

  • cmd < file - входные данные для команды из файла
  • cmd 2> file - вывод только ошибок в файл
  • cmd &1> file - весь вывод в файл (&1> /dev/null - подавление вывода)

Специальные имена файлов

  • /dev/(stdin|stdout|stderr) - дубликаты 0,1,2.
  • /dev/fd/<n> - дескриптор файла <n>
  • /dev/(tcp|udp)/<host>/<port> - оболочка устанавливает соединение, используя полученный дескриптор для В/Вывода

Ввод/вывод

  • echo - выводит выражение или переменную stdout.
  • printf - форматированный вывод
  • read - читает значение из stdin

Файловая система

  • cd - сменить текущий каталог
  • pwd - текущий каталог
  • pushd, popd, dirs - работа с каталогами
  • ll - алиас ls -l

Действия над переменными

  • getopts - разбор переменных, переданных из командной строки
  • let - арифметические операции над переменными
  • eval - транслирует список аргументов в команды
  • set / unset - изменяет значение внутренних переменных скрипта / удаляет переменную
  • export - сделать переменную доступной дочерним процессам
  • declare, typeset - задают (и накладывают) ограничения на переменные

Управление сценарием

  • source, . (точка) - запуск указанного сценария
  • exit - завершение работы сценария
  • exec - заменяет текущий процесс новым
  • shopt - позволяет изменять ключи оболочки «на лету»

Управление запущенными задачами

  • <command>& - запускает задание в фоне (ctrl+z приостанавливает текущее)
  • jobs - список фоновых задач (-p -l)
  • bg/ fg - перенести/ вернуть задание в фон
  • wait - ожидает завершение фоновых задач
  • kill <pid> - прервать выполнение задания

Переменные окружения

Временная, локальная переменная (очистится при окончании сессии)
Для долгосрочного хранения, нужно добавить ее в файл .bashrc, в домашней директории. После обновить конфигурацию командой source .bashrc

  # Просмотр текущий переменных
env 
 
myVar=Value
echo myVar
 
export myVar=Value
 
export PATH=$PATH:/place/with/the/file
# Для сохранения добавить в один из файлов
~/.bash_profile, ~/.bashrc, or ~/.profile

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

  • Ctrl + A (E) - перемещает курсор в начало (конец) строки
  • Ctrl + L - очистить экран (clear)
  • Ctrl + R - поиск по ранее введенным командам
  • Alt + . - подставить последнюю команду

Приглашение ввода

строка приглашения ввода содержится в спец переменных: «PS[0-4]«

  • PS0 – после чтения команды и до ее выполнения
  • PS1 – Основная строка приглашения
  • PS2 – Многострочный ввод
  • PS3 – Подсказка для команды выбора
  • PS4 – Перед отображением каждой команды при трассировки выполнения. Первый символ может реплицироваться несколько раз, чтобы указать несколько уровней косвенности.(+)

Значения можно устанавливать интерактивно либо в конфиге (есть в .bashrc, применяется после ребута)
Есть целый ряд спец аргументов для расширения данных, типа версий, даты времени и т.д. много вариантов

Поддерживается unicode т.ч. можно указать цвета и даже смайлики (эмоджи)
С помощью утилиты «alerm» или «bashish» в консоль можно задать визуальное оформление, цвета, прозрачность и многое другое

  # Очистка, собсна так же можно и устанавливать значения интерактивно
unset PS1; PS1=""

Примеры

  # Текущая дата в указанном формате
echo $(date '+%Y-%m-%d')
 
  # Простой цикл в интерактивном режиме
while !./run.sh; do sleep 1; done
 
  # Создать файл указанного размера (10м)
dd if=/dev/zero of=out.txt bs=1M count=10
 
  # Замена пробелов на табуляцию (строчных на прописные "tr a-z A-Z")
cat geeks.txt | tr ':[space]:' '\t' > out.txt
linux/bash.txt · Последнее изменение: 2024/04/14 05:22 — admin