service:bash
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| service:bash [23.08.2024 05:53] – [IFS] viacheslav | service:bash [07.10.2025 21:29] (текущий) – [Удалить все файлы, кроме самого нового] viacheslav | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | command1 ; command2 - выполнить последовательно две команды\\ | ||
| + | command1 & command2 & - выполнить две команды, | ||
| + | command1 && command2 - вторая команда выполняется, | ||
| + | command1 || command2 - вторая команда выполняется, | ||
| + | Виктор Костромин - [[http:// | ||
| + | |||
| + | ==== Проверка даты истечения сертификата SSL ==== | ||
| + | <code bash> | ||
| + | URL=' | ||
| + | EXP=$(date -d " | ||
| + | # или | ||
| + | # EXP=$(date -d " | ||
| + | echo $(((`echo $EXP` - `date +%s`) / 86400)) | ||
| + | </ | ||
| + | https:// | ||
| + | https:// | ||
| + | https:// | ||
| + | ==== IFS ==== | ||
| + | Спец. переменная - разделитель полей. | ||
| + | <code bash> | ||
| + | # Стандартное значение - < | ||
| + | IFS=$' \t\n' | ||
| + | |||
| + | # В скриптах перед изменением значения IFS лучше сохранить старое значение, | ||
| + | # 1. Save old $IFS | ||
| + | oldIFS=" | ||
| + | # 2. Now set up a new value to: | ||
| + | IFS=":" | ||
| + | # 3. Search for the user named ' | ||
| + | result=" | ||
| + | echo " | ||
| + | # 4. Print user ' | ||
| + | set -- $result | ||
| + | echo "DIR: $6" | ||
| + | echo " | ||
| + | # 5. Try bash for loop | ||
| + | for i in $result; do echo " | ||
| + | # 6. Restore $IFS | ||
| + | IFS=" | ||
| + | </ | ||
| + | |||
| + | Пример с '' | ||
| + | <code bash> | ||
| + | # Содержимое файла / | ||
| + | cyberciti.biz|202.54.1.1|/ | ||
| + | nixcraft.com|202.54.1.2|/ | ||
| + | |||
| + | # Скрипт | ||
| + | file=/ | ||
| + | IFS=' | ||
| + | while read -r domain ip webroot ftpusername | ||
| + | do | ||
| + | printf "*** Adding %s to httpd.conf...\n" | ||
| + | printf " | ||
| + | printf " | ||
| + | printf " | ||
| + | |||
| + | done < " | ||
| + | </ | ||
| + | |||
| + | Есть другие варианты, | ||
| + | <code bash> | ||
| + | # Search for the user named vivek and print home directory | ||
| + | # The -F':' | ||
| + | awk -F':' | ||
| + | |||
| + | # Search for the user named vivek and print home directory | ||
| + | # The -d':' | ||
| + | grep -w " | ||
| + | </ | ||
| + | [[https:// | ||
| + | |||
| + | Ещё вариант | ||
| + | <code bash> | ||
| + | p=" | ||
| + | # Замена "/" | ||
| + | a=($(tr '/' | ||
| + | # Извлечение " | ||
| + | sed -E ' | ||
| + | </ | ||
| + | ==== Добавление строки $PATH в файл без дублей ==== | ||
| + | FIXME Недоделано | ||
| + | |||
| + | Задача была добавить некую строку к '' | ||
| + | <code bash> | ||
| + | if grep -q ^PATH var.txt | ||
| + | then | ||
| + | if [[ $(grep ^PATH var.txt) == *"/ | ||
| + | then | ||
| + | grep ^PATH var.txt |sed ' | ||
| + | else | ||
| + | sed -i " | ||
| + | fi | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | ==== Удалить все файлы, кроме самого нового ==== | ||
| + | <code bash> | ||
| + | # здесь исходные файлы уже с нормальными именами по порядку | ||
| + | rm $(stat -c %n / | ||
| + | # или (c Ansible-модулем shell не работает) | ||
| + | stat -c '%Y %n' foo* | sort -n | head -n -1 | cut -d " " -f 2- | xargs rm | ||
| + | # или (кол-во оставляемых файлов указывается в шаге head. C Ansible shell работает нормально) | ||
| + | find / | ||
| + | </ | ||
| + | https:// | ||
