Просмотр содержимого текущей папки

ls -l

Поиск по тексту в файлах (регулярка)

grep -iR 'hello,? world' *.txt

Найти файлы по маске

find . -type f -name "*.php"
find . -type f -regex '.*\.\(gif\|png\|jpg\|jpeg\)'

Найти картинки по маске с размером менее, чем 1024x768

find . -iname "*.jpg" -type f -exec identify -format '%w %h %i' '{}' \; | awk '$1<1024 || $2<768'

Найти и удалить файлы по маске

find . -type f -name "*.php" -print -delete

Найти и удалить пустые директории

find . -type d -empty -print -delete

Найти и удалить .svn папки

find -name ".svn" | xargs /bin/rm -rf

Рекурсивное выставление прав доступа на файлы

find . -type f -exec chmod 644 {} \;

Рекурсивное выставление прав доступа на директории

find . -type d -exec chmod 755 {} \;

Удалить содержимое директории

rm -rf ./somedir/*

Удалить директорию со всем содержимым

rm -rf ./somedir

Просмотр и фильтрация логов на лету

tail -n0 -f /var/log/httpd/access.log | grep --line-buffered -E '"GET [^"]+" [45][0-9]+'

Замена текста регулярным выражением (по строкам)

cat some-file.txt | sed -E 's/man.+ger/manAger/'

Замена текста регулярным выражением (во всем текст целиком и без учета регистра)

cat some-file.txt | perl -p0e 's/man.+ger/manAger/si'

Работа с таблицами (получить первую и последнюю колонку таблицы, пронумеровав при этом строки)

awk '{print NR " - " $1 "\t- " $NF}' some-file.txt

Получить строки с третьей по шестую

awk 'NR==3, NR==6 {print NR,$0}' some-file.txt

Посчитать количество строк в файле

awk 'END { print NR }' some-file.txt

Распаковать zip архив в текущую директорию

unzip package.zip -d .

Распаковать gz архив в текущую директорию (архив будет удален)

gunzip *.gz

Получить размер директории

du -shm
# -s — просуммировать размеры всех файлов в директории
# -h — показать результат в человекопонятном формате
# -m — показать результат в мегабайтах

Запуск заданной команды каждую 1 секунду

watch -n 1 'ps aux | grep grep'

Условия

if [ "foo" = "foo" ]; then
    echo true
else
    echo false
fi

Зациклить выполнение команды (с интервалом в 1 секунду между запусками)

while :; do echo `date`; sleep 1; done

# или тоже самое в несколько строк
while true; do
    echo `date`
    sleep 1
done

Ждать запуска сервиса на определенном порту

until $(curl --output /dev/null --silent --head --fail http://localhost:3000); do
    printf '.'
    sleep 1
done

Выполнить одну комманд по ssh

ssh -T -i user-key.ssh user@${s} date

Выполнить несколько комманд по ssh

ssh -T -i user-key.ssh user@server << ENDSSH
    date
ENDSSH

Аналог pause из windows (источник)

# Any key solution (with -n 1)
read -rsp $'Press any key to continue...\n' -n 1 key

# Enter solution
read -rsp $'Press enter to continue...\n'

# Escape solution (with -d $'\e')
read -rsp $'Press escape to continue...\n' -d $'\e'

# Question with preselected choice (with -ei $'Y')
read -rp $'Are you sure (Y/n): ' -ei $'Y' key;
# echo $key

# Timeout solution (with -t 5)
read -rsp $'Press any key or wait 5 seconds to continue...\n' -n 1 -t 5;

Спрашиваем разрешение для продолжения выполнения

echo
read -rp "Are you sure you want to continue? " confirmed
echo
if [[ $confirmed =~ ^[Yy]$ ]]
then
    echo "Okay. Let's get started..."
else
    echo "Okay. Maybe next time..."
    exit 1
fi