Bash

Шпаргалка по 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