Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
bash:developing [2015/12/11 11:12] – [Ссылки] mirocow | bash:developing [2023/06/24 12:36] (текущий) – [R] mirocow | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | {{tag> | ||
+ | |||
====== Bash ====== | ====== Bash ====== | ||
+ | |||
+ | ===== Файлы конфигурации: | ||
+ | |||
+ | ==== В чем отличие .bash_profile и .bashrc? ==== | ||
+ | |||
+ | .bash_profile загружается только при входе пользователя в систему (консольный вход, ssh), | ||
+ | в то время как | ||
+ | логина (запуск xterm). | ||
+ | ===== Переменные и параметры ===== | ||
+ | |||
+ | |||
+ | |$$ |pid текущего shell (самого процесса-сценария)| | ||
+ | |$! |pid последнего процесса в фоновом режиме| | ||
+ | |$? |код возврата последнего процесса (функции или скрипта)| | ||
+ | |$x |где x — номер параметра, | ||
+ | |$# | ||
+ | |$* |все аргументы в виде одной строки (слова)| | ||
+ | |$@ |то же самое, что и $*, но при этом каждый параметр представлен как отдельная строка (слово)| | ||
+ | |$- |список флагов, | ||
+ | |$_ |содержит последний аргумент предыдущей команды| | ||
===== Потоки вывода и файловые дескрипторы ===== | ===== Потоки вывода и файловые дескрипторы ===== | ||
* du -h 1 > ./log 2>&1 | * du -h 1 > ./log 2>&1 | ||
- | * 1 - Поток вывода | + | |
- | | + | |Наименование|Описание| |
- | | + | |1| Поток вывода| |
+ | |2| Поток ошибок| | ||
+ | |&1|обозначает файловый дескриптор 1| | ||
Строка 20: | Строка 44: | ||
files=( "/ | files=( "/ | ||
limits=( 10, 20, 26, 39, 48) | limits=( 10, 20, 26, 39, 48) | ||
+ | </ | ||
+ | |||
+ | ==== ARGV ==== | ||
+ | |||
+ | <code bash> | ||
+ | # ------------- SCRIPT ------------- # | ||
+ | |||
+ | #!/bin/bash | ||
+ | |||
+ | echo | ||
+ | echo "# arguments called with ----> | ||
+ | echo "# \$1 ----------------------> | ||
+ | echo "# \$2 ----------------------> | ||
+ | echo "# path to me ---------------> | ||
+ | echo "# parent path --------------> | ||
+ | echo "# my name ------------------> | ||
+ | echo | ||
+ | exit | ||
+ | |||
+ | # ------------- CALLED ------------- # | ||
+ | |||
+ | # Notice on the next line, the first argument is called within double, | ||
+ | # and single quotes, since it contains two words | ||
+ | |||
+ | $ / | ||
+ | |||
+ | # ------------- RESULTS ------------- # | ||
+ | |||
+ | # arguments called with ---> | ||
+ | # $1 ----------------------> | ||
+ | # $2 ----------------------> | ||
+ | # path to me --------------> | ||
+ | # parent path -------------> | ||
+ | # my name -----------------> | ||
+ | |||
+ | # ------------- END ------------- # | ||
</ | </ | ||
===== B ===== | ===== B ===== | ||
===== C ===== | ===== C ===== | ||
- | * case | + | ==== case ==== |
- | * синтаксис: | + | |
- | * case in< | + | < |
case " | case " | ||
start) | start) | ||
esac | esac | ||
+ | </ | ||
+ | |||
+ | ==== cut ==== | ||
+ | |||
+ | микропрограмма для работы с текстом | ||
+ | |||
+ | Параметры: | ||
+ | * -d | ||
+ | * -f(число) | ||
+ | |||
+ | Переименовывает все файлы вида thread_1_seq_35970.1752.876204343 в файлы вида arch_1_0000035970_869578613.arc | ||
+ | <code bash> | ||
+ | #! /bin/bash | ||
+ | FOUND=0 | ||
+ | for filename in * | ||
+ | do | ||
+ | echo " | ||
+ | |||
+ | if [ $? -eq $FOUND ]; then | ||
+ | part=`echo $filename | cut -d " | ||
+ | mv " | ||
+ | fi | ||
+ | |||
+ | done | ||
</ | </ | ||
===== D ===== | ===== D ===== | ||
+ | |||
+ | ==== debug ==== | ||
+ | |||
+ | Необходимо добавить параметр -x | ||
+ | Пример: | ||
+ | < | ||
+ | |||
+ | ==== dialog ==== | ||
+ | |||
+ | Представляет из себя интерфейс для библиотеки ncurses. И позволяет строить диалоги из скрипта. Альтернативой dialog может служить whiptail, который даже присутствует в некоторых системах по умолчанию. | ||
+ | |||
+ | [[system: | ||
+ | |||
+ | <code bash> | ||
+ | # | ||
+ | |||
+ | Choice=`$Dialog --stdout --clear --menu " | ||
+ | retval=$? | ||
+ | |||
+ | case $retval in | ||
+ | 0) | ||
+ | esac | ||
+ | </ | ||
===== E ===== | ===== E ===== | ||
===== F ===== | ===== F ===== | ||
Строка 78: | Строка 185: | ||
===== G ===== | ===== G ===== | ||
===== H ===== | ===== H ===== | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Choice=" | ||
+ | |||
+ | cat << EOF_CONFIG > $config | ||
+ | client | ||
+ | remote xxxxx | ||
+ | port 1194 | ||
+ | proto udp | ||
+ | dev tun | ||
+ | ns-cert-type server | ||
+ | tls-client | ||
+ | reneg-sec 60 | ||
+ | mtu-test | ||
+ | cipher AES-256-CBC | ||
+ | comp-lzo | ||
+ | persist-key | ||
+ | persist-tun | ||
+ | keysize 256 | ||
+ | nobind | ||
+ | explicit-exit-notify 2 | ||
+ | pkcs12 yyy/$Choice | ||
+ | EOF_CONFIG | ||
+ | |||
+ | echo $config | ||
+ | </ | ||
===== I ===== | ===== I ===== | ||
Строка 92: | Строка 226: | ||
- | * if | ||
- | * Синтаксис: | ||
- | * if | ||
- | * if else | ||
<code bash> | <code bash> | ||
if что-то | if что-то | ||
Строка 104: | Строка 234: | ||
fi | fi | ||
</ | </ | ||
- | *if []; then | + | |
<code bash> | <code bash> | ||
if что-то; | if что-то; | ||
Строка 112: | Строка 242: | ||
fi | fi | ||
</ | </ | ||
+ | |||
+ | === input === | ||
+ | |||
+ | Запрос символа от пользователя | ||
+ | |||
+ | <code bash> | ||
+ | echo -n " | ||
+ | |||
+ | read item | ||
+ | case " | ||
+ | y|Y) echo " | ||
+ | ;; | ||
+ | n|N) echo " | ||
+ | exit 0 | ||
+ | ;; | ||
+ | *) echo " | ||
+ | ;; | ||
+ | esac | ||
+ | </ | ||
+ | |||
===== J ===== | ===== J ===== | ||
===== K ===== | ===== K ===== | ||
Строка 118: | Строка 268: | ||
===== N ===== | ===== N ===== | ||
===== O ===== | ===== O ===== | ||
+ | |||
+ | ==== echo ==== | ||
+ | |||
+ | Вывод прогресс бара | ||
+ | <code bash> | ||
+ | $ echo -ne '##### | ||
+ | </ | ||
+ | |||
===== P ===== | ===== P ===== | ||
===== Q ===== | ===== Q ===== | ||
===== R ===== | ===== R ===== | ||
+ | |||
+ | <code bash> | ||
+ | $ IFS=' ' read -r -a DATABASES_SELECTED <<< | ||
+ | $ read str <<< | ||
+ | -x- | ||
+ | $ IFS="" | ||
+ | - x - | ||
+ | $ IFS= read str <<< | ||
+ | - x - | ||
+ | $ _ | ||
+ | </ | ||
+ | |||
+ | * IFS=";" | ||
+ | * set -- $line - разбиваем строку, | ||
===== S ===== | ===== S ===== | ||
+ | |||
+ | |||
+ | ==== select ==== | ||
+ | |||
+ | <code bash> | ||
+ | select action in " | ||
+ | do | ||
+ | echo $action | ||
+ | test $action = " | ||
+ | done | ||
+ | </ | ||
===== T ===== | ===== T ===== | ||
- | * test | + | ====== |
- | * Параметры: | + | |
- | * -f - Наличие файла | + | |
- | * -d - Наличие директории | + | * '' |
- | * -e - | + | * '' |
- | * -z - Наличие данных в строке | + | * '' |
- | * Сокращенный вариант [] | + | * '' |
- | * http:// | + | * '' |
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * Сокращенный вариант | ||
+ | |||
+ | |||
+ | ===== Применение в коде ===== | ||
+ | |||
+ | <code bash> | ||
+ | if [ $daynow != 1 ]; then | ||
+ | # .... | ||
+ | fi | ||
+ | |||
+ | if [ $daynow -ge 1 ] && [ $daynow -le 7 ]; then | ||
+ | # .... | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | Сравнение **-eq** с **==** | ||
+ | |||
+ | <code bash> | ||
+ | $ [ a == a ]; echo $? | ||
+ | 0 | ||
+ | |||
+ | $ [ a -eq a ]; echo $? | ||
+ | -bash: [: a: integer expression expected | ||
+ | 2 | ||
+ | </ | ||
+ | |||
+ | === status === | ||
+ | |||
+ | Проверка статуса выполнения программы | ||
+ | |||
+ | <code bash> | ||
+ | rm test_file | ||
+ | |||
+ | if [ $? -eq 0 ]; then | ||
+ | | ||
+ | echo | ||
+ | else | ||
+ | echo -n " | ||
+ | echo | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | ====== tput ====== | ||
+ | |||
+ | Команда tput инициализирует и управляет вашими сеансами работы с терминалом, | ||
+ | |||
+ | | ||
+ | * tput cols получает ширину окна терминала | ||
+ | * tput cub 6 — сдвигает курсор на 6 позиций влево | ||
+ | |||
+ | Также можно выставить цвет | ||
+ | |||
+ | * tput setaf 0..7 — цвет текста | ||
+ | * tput setab 0..7 — цвет фона | ||
+ | * tput sgr0 — сброс на дефолтный | ||
+ | |||
+ | Подробнее: | ||
===== U ===== | ===== U ===== | ||
===== V ===== | ===== V ===== | ||
Строка 138: | Строка 402: | ||
===== Y ===== | ===== Y ===== | ||
- | ====== Ссылки ====== | ||
- | |||
- | * [[: | ||
- | * [[: | ||
- | * [[system: | ||
- | * [[: | ||
- | * [[bash: | ||
- | * [[bash: | ||
- | * http:// | ||
- | * [[http:// | ||
- | * http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * http:// | ||
- | |||
- | ====== Видео уроки ====== | ||
- | * https:// | ||