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

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


linux:bash

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:bash [2022/11/19 05:16]
admin
linux:bash [2024/12/09 07:00] (текущий)
admin
Строка 1: Строка 1:
 ====== Оболочка ====== ====== Оболочка ======
- 
 Born again shell - усовершенствованная оболочка Bourne shell.\\ Born again shell - усовершенствованная оболочка Bourne shell.\\
 Командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне, так же, может читать команды из файла, т.е. [[:linux:binbash|написание скриптов]].\\ Командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне, так же, может читать команды из файла, т.е. [[:linux:binbash|написание скриптов]].\\
Строка 15: Строка 14:
   * **ldd** - список библиотек от которых зависит программа   * **ldd** - список библиотек от которых зависит программа
   * **zless/zcat/zgrep** - для работы с архивами   * **zless/zcat/zgrep** - для работы с архивами
-  * **** -  +  * **tr '<source>' '<dest>'** - замена/преобразование строк 
-  * **** -  +  * **strings** - Команда для извлечения строк из указанного файла
-  * **** - +
  
  
Строка 25: Строка 23:
   * **yes | <command>** - ответ на интерактивные вопросы   * **yes | <command>** - ответ на интерактивные вопросы
   * **> file** - очистка файла   * **> file** - очистка файла
-  * **** -  
-  * **** -  
   * **** -    * **** - 
  
Строка 43: Строка 39:
   * **desc** - управление дескрипторами файлов;   * **desc** - управление дескрипторами файлов;
   * **memory** - работа с памятью программы.   * **memory** - работа с памятью программы.
-<code bash> 
- 
-</code> 
 </details> </details>
  
Строка 52: Строка 45:
 ===== Формы команд ===== ===== Формы команд =====
   * **cmd &** - выполнить в фоновом режиме.   * **cmd &** - выполнить в фоновом режиме.
-  * **{cmd1; cmd2}** - выполнить группой, в текущей оболочке, () - в подоболочке+  * **{ cmd1; cmd2}** - выполнить группой, в текущей оболочке, () - в подоболочке
   * **cmd1 | cmd2** - направить выход **cmd1** на вход **cmd2**   * **cmd1 | cmd2** - направить выход **cmd1** на вход **cmd2**
   * **cmd1 `cmd2`** - выход **cmd2** в аргументами в **cmd1**, $(cmd2) по стандарту POSIX   * **cmd1 `cmd2`** - выход **cmd2** в аргументами в **cmd1**, $(cmd2) по стандарту POSIX
Строка 78: Строка 71:
   # Различия в файлах, после их сортировки   # Различия в файлах, после их сортировки
 diff -u <(sort file1) <(sort file2) | less diff -u <(sort file1) <(sort file2) | less
 +
 +  # Подстановка имен файлов
 +ls -l ./{*.sh,*.py}
 +ls -l [a-c]*
 +ls -l [^ab]* (отрицание)
 +
 +  # Группировка команд. Важно что между фигурными скобками и командами должны быть пробелы и каждая команда завершаться точкой с запятой
 +xxxls || { echo "alternative branch"; exit 1; }
 </code> </code>
  
Строка 86: Строка 87:
 |1|Вывод|stdout|Экран терминала| |1|Вывод|stdout|Экран терминала|
 |2|Вывод ошибок|stderr|Экран терминала| |2|Вывод ошибок|stderr|Экран терминала|
- 
   * **cmd > file** - перезаписать выводом команды файл >> присоединить   * **cmd > file** - перезаписать выводом команды файл >> присоединить
   * **cmd < file** - входные данные для команды из файла   * **cmd < file** - входные данные для команды из файла
Строка 125: Строка 125:
  
 ==== Управление запущенными задачами ==== ==== Управление запущенными задачами ====
-  * **jobs** - список задач, запущенных в оболочке (информация по номеру)+  * **<command>&** - запускает задание в фоне (ctrl+z приостанавливает текущее)  
 +  * **jobs** - список фоновых задач (-p -l)
   * **bg/ fg** - перенести/ вернуть задание в фон   * **bg/ fg** - перенести/ вернуть задание в фон
   * **wait** - ожидает завершение фоновых задач   * **wait** - ожидает завершение фоновых задач
Строка 136: Строка 137:
  
 <code bash> <code bash>
-  # Просмотр текущий переменных+# Просмотр текущий переменных
 env  env 
  
Строка 143: Строка 144:
  
 export myVar=Value export myVar=Value
 +
 +export PATH=$PATH:/place/with/the/file
 +# Для сохранения добавить в один из файлов
 +~/.bash_profile, ~/.bashrc, or ~/.profile
 +
 +# Применить переменные окружения из файла
 +  # пропускаются строки начинающиеся с # или [ 
 +  # в файле перечислены в формате key="value"
 +eval $(grep -v '^[#|\[]' service.env)
 +
 </code> </code>
  
Строка 152: Строка 163:
   * **Ctrl + R** - поиск по ранее введенным командам   * **Ctrl + R** - поиск по ранее введенным командам
   * **Alt + .** - подставить последнюю команду   * **Alt + .** - подставить последнюю команду
-  * ****  + 
-  * ****  + 
-  * **** + 
 +===== Приглашение ввода ===== 
 +строка приглашения ввода содержится в спец переменных: "PS[0-4]"\\ 
 + 
 +  * **PS0** – после чтения команды и до ее выполнения 
 +  * **PS1** – Основная строка приглашения 
 +  * **PS2** – Многострочный ввод 
 +  * **PS3** – Подсказка для команды выбора 
 +  * **PS4** – Перед отображением каждой команды при трассировки выполнения. Первый символ может реплицироваться несколько раз, чтобы указать несколько уровней косвенности.(+)\\ 
 + 
 +Значения можно устанавливать интерактивно либо в конфиге (есть в .bashrc, применяется после ребута)\\ 
 +Есть целый ряд спец аргументов для расширения данных, типа версий, даты времени и т.д. много вариантов\\ 
 + 
 +Поддерживается unicode т.ч. можно [[https://habr.com/ru/post/269967/|указать цвета]] и даже смайлики (эмоджи)\\ 
 +С помощью утилиты "alerm" или "bashish" в консоль можно задать визуальное оформление, цвета, прозрачность и многое другое\\ 
 + 
 +<code bash> 
 +  # Очистка, собсна так же можно и устанавливать значения интерактивно 
 +unset PS1; PS1="" 
 +</code> 
  
  
Строка 162: Строка 193:
 echo $(date '+%Y-%m-%d') 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
 </code> </code>
 +
 +Перечень директорий в строчку, без запятых и проч, для массива в общем
 +<code bash>
 +# только надо переходить в целевую папку
 +echo $(ls -d */ | cut -f1 -d'/')
 +
 +# Вот норм вариант
 +find . -maxdepth 1 -type d -printf "%P "
 +</code>
 +
  
  
linux/bash.1668834975.txt.gz · Последнее изменение: 2022/11/19 05:16 — admin