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

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


linux:overall:bash:cli

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:overall:bash:cli [2022/11/05 05:20]
admin
— (текущий)
Строка 1: Строка 1:
-====== Оболочка ====== 
- 
-Born again shell - усовершенствованная оболочка Bourne shell.\\ 
-Командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне, так же, может читать команды из файла, т.е. [[:linux:overall:bash:scripts|написание скриптов]].\\ 
- 
- 
-===== Общее ===== 
-  * **history** - история команд 
-  * **cd -** - переход в последнюю директорию 
-  * **which/whatis** - путь к исполняемому файлу/краткая справка 
-  * **strace/ltrace** - трассировщики, системных, библиотечных вызовов, работают по разному 
-  * **file** - определение типа файла 
-  * **type** - проверка команды (путь к бинарнику либо что из себя представляет) 
-  * **ldd** - список библиотек от которых зависит программа 
-  * **zless/zcat/zgrep** - для работы с архивами 
-  * **!!** - последняя команда 
-  * **yes | <command>** - ответ на интерактивные вопросы 
-  * **> file** - очистка файла 
-  * **** -  
-  * **** -  
-  * **** -  
- 
- 
-<details> 
-<summary>:!: **strace**</summary> 
-Статистика системных вызовов **-с**\\ 
-Подключение к запущенной программе **strace -p 31796**\\ 
-Для фильтрации вывода есть ключ **-e** (strace -e trace=stat <command>)\\ 
-  * **stat** -  вызовы stat 
-  * **file** - все системные вызовы, которые касаются файлов; 
-  * **process** - управление процессами; 
-  * **network** - сетевые системные вызовы; 
-  * **signal** - системные вызовы, что касаются сигналов; 
-  * **ipc** - системные вызовы IPC; 
-  * **desc** - управление дескрипторами файлов; 
-  * **memory** - работа с памятью программы. 
- 
-<code bash> 
- 
-</code> 
-</details> 
- 
- 
- 
-===== Формы команд ===== 
-  * **cmd &** - выполнить в фоновом режиме. 
-  * **{cmd1; cmd2}** - выполнить группой, в текущей оболочке, () - в подоболочке 
-  * **cmd1 | cmd2** - направить выход **cmd1** на вход **cmd2** 
-  * **cmd1 `cmd2`** - выход **cmd2** в аргументами в **cmd1**, $(cmd2) по стандарту POSIX 
-  * **cmd $(выражение)** - арифметический результат **выражения**, аргументами в **cmd**. 
-  * **cmd1 && cmd2** - логическое **И**, || **ИЛИ** 
-  * **!cmd** - инверсия кода результата. 
- 
- 
-<code bash>  
-  # Выполнить указанные команды в фоне 
-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 
-</code> 
- 
- 
- 
-===== Переадресация ввода/вывода ===== 
-|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** - позволяет изменять ключи оболочки "на лету" 
- 
-==== Управление запущенными задачами ==== 
-  * **jobs** - список задач, запущенных в оболочке (информация по номеру) 
-  * **fg** - вернуть текущее задание из фонового режима (или на указанный номер) 
-  * **bg** - перенести текущее задание в фоновый режим 
-  * **wait** - ожидает завершение фоновых задач 
-  * **kill** - прервать выполнение задания 
- 
- 
-===== Переменные окружения ===== 
-Временная, локальная переменная (очистится при окончании сессии)\\ 
-Для долгосрочного хранения, нужно добавить ее в файл **.bashrc**, в домашней директории. После обновить конфигурацию командой **source .bashrc**\\ 
- 
-<code bash> 
-  # Просмотр текущий переменных 
-env  
- 
-myVar=Value 
-echo myVar 
- 
-export myVar=Value 
-</code> 
- 
- 
- 
-===== Горячие клавиши ===== 
-  * **Ctrl + A (E)** - перемещает курсор в начало (конец) строки 
-  * **Ctrl + L** - очистить экран (clear) 
-  * **Ctrl + R** - поиск по ранее введенным командам 
-  * **Alt + .** - подставить последнюю команду 
-  * **** -  
-  * **** -  
-  * **** -  
- 
- 
-===== Примеры ===== 
- 
-<code bash> 
-  # Текущая дата в указанном формате 
-echo $(date '+%Y-%m-%d') 
- 
-</code> 
- 
  
linux/overall/bash/cli.1667625609.txt.gz · Последнее изменение: 2022/11/05 05:20 — admin