Шпаргалка по bash
Что занимает место на диске:
du -a /home/ | sort -n -r | head -n 20
du -sh /vz/private/106/* | sort -h
Отправить данные по ssh через кастомный порт:
rsync -aOv -e 'ssh -p 3334' /root/ccd/ backupsync@my_domain.com:/mount_storage/
Посмотреть конфиг без комментариев (начинающихся не с начала строки в том числе) и пустых строк:
grep -v '^$\|^\s*\#' ../sites-available/default-ssl.conf
Просто без комментариев и пустых строк:
grep -v '^$\|^#' some-config.conf
#AWK
Примеры использования awk — https://www.opennet.ru/tips/1811_awk_shell.shtml
Основные linux-команды для новичка — https://habr.com/ru/post/501442/
Дюжина приемов в Linux, которые действительно сэкономят уйму времени — https://habr.com/ru/post/340544/
Перенаправление вывода в bash.

#Подсветка вывода текста в терминал
https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux
По ссылке описано много вариатов как что посмотреть по этому вопросу и реализовать.
Ascii art — https://askubuntu.com/questions/234678/how-to-show-ascii-art-at-the-top-of-the-terminal-when-its-opened
Bash. Чтение файла.
index=0
while read line; do
array[$index]="$line"
index=$(($index+1))
done < filename
проверяем:
for ((a=0; a < ${#array[*]}; a++))
do
echo "$a: ${array[$a]}"
done
Считывание файла построчно
#!/bin/bashfile="/var/log/file.log"while IFS= read -r linedoecho "$line"done <"$file" |
#!/bin/bashfile="/var/log/file.log"while read linedoecho "$line"done < $file |
Удаление файлов по шаблону:
find /var/log/ -type f -name "*.gz" -delete
#Удаление файлов старше 1000 дней
find . -mtime +1000 -delete
Удаление пустых каталогов:
find $DATADIR -mtime +1 -type d -empty -delete
#Работа над строками
pkgs = "foo" pkgs+ = "bar" pkgs+ = "bqaz"
#!/bin/bash
#
# Скрипт для разделения строки на основе разделителя
my_string="Ubuntu;Linux Mint;Debian;Arch;Fedora"
IFS=';' read -ra my_array <<< "$my_string"
# Печать разделенной строки
for i in "${my_array[@]}"
do
echo $i
done
string='Моя длинная строка'
if [[ $string == *"Моя длинная"* ]]; then
echo "Подстрока найдена!"
fi
#----------------------------------------------
string=Моя строка';
if [[ $string =~ "Моя" ]]
then
echo "Подстрока найдена!"
fi
#----------------------------------------------
case "$string" in
*foo*)
# Do stuff
;;
esac
Взять часть строки до точки.
user=${user%.*ovpn}
#Выполнение команды на удалённом сервере
check_repos=$(ssh sendman@servername.com ‘ls /home/svnrun/repos/ | wc -l’)
#Процессы
Убить процессы, имя которых содержит foo
pkill -f foo
#многострочная строка в одну переменную
$ sql=$(cat <<EOF
SELECT foo, bar FROM db
WHERE foo='baz'
EOF
)
#многострочная строка в файл Bash (создание файла скрипта)
$ cat <<EOF > print.sh
#!/bin/bash
echo \$PWD
echo $PWD
EOF
$ cat <<EOF | grep 'b' | tee b.txt
foo
bar
baz
EOF
The b.txt file contains bar and baz lines. The same output is printed to stdout.
read -r -p "Are you sure? [y/N] " response
case "$response" in
[yY][eE][sS]|[yY])
do_something
;;
*)
do_something_else
;;
esac
Использованный материал.
https://stackoverflow.com/questions/2500436/how-does-cat-eof-work-in-bash
Заметки с этого чудесного канала — https://t.me/bashdays
Поиск удалённого файла по содержимому:
grep -a -C 200 -F '<some_code_in_script>' /dev/sda1
-a = осуществляем поиск в бинарных файлах.
-C = сколько строк выводить ДО и ПОСЛЕ каждого совпадения строки.
Команда history
Посмотреть
# Посмотрите 5 команд после строки 42 history | tail -n +43 | head -n 5