Шпаргалка по bash
Что занимает место на диске:
du -a /home/ | sort -n -r | head -n 20
Основные linux-команды для новичка — https://habr.com/ru/post/501442/
Дюжина приемов в Linux, которые действительно сэкономят уйму времени — https://habr.com/ru/post/340544/
Перенаправление вывода в bash.
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/bash file = "/var/log/file.log" while IFS= read -r line do echo "$line" done < "$file" |
#!/bin/bash file = "/var/log/file.log" while read line do echo "$line" done < $ file |
Удаление файлов по шаблону:
find /var/log/ -type f -name "*.gz" -delete
#Удаление файлов старше 1000 дней
find . -mtime +1000 -delete
#Работа над строками
Взять часть строки до точки.
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