Короткие команды и однострочники, которые использую каждый день. Без воды - только то, что реально работает.

Найти большие файлы

# Топ-10 больших файлов
find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -10

# Или через ncdu (нужно установить)
ncdu /

Быстрый бэкап перед правками

# Бэкап с датой в имени
cp nginx.conf{,.bak.$(date +%Y%m%d_%H%M%S)}

# Результат: nginx.conf.bak.20240724_143022

Мониторинг в реальном времени

# Следить за логом и подсвечивать ERROR
tail -f /var/log/app.log | grep --color=auto -E "ERROR|$"

# Обновляющийся вывод команды
watch -n 1 'docker ps'
watch -d 'kubectl get pods'  # -d подсветит изменения

Массовое переименование

# Убрать пробелы из имён файлов
for f in *\ *; do mv "$f" "${f// /_}"; done

# Изменить расширение
for f in *.txt; do mv "$f" "${f%.txt}.md"; done

Работа с процессами

# Найти процесс по части имени
pgrep -f "part_of_name"

# Убить все процессы пользователя
pkill -u username

# Дерево процессов
ps auxf
# или красивее
pstree -p

Сетевая магия

# Кто слушает порт
ss -tlnp | grep :80
lsof -i :80

# Проверить доступность порта
nc -zv hostname 443
timeout 2 bash -c "</dev/tcp/google.com/443" && echo "Port open"

# Простой веб-сервер для тестов
python3 -m http.server 8080

Git лайфхаки

# Отменить последний коммит (оставить изменения)
git reset --soft HEAD~1

# Исправить сообщение последнего коммита
git commit --amend

# Показать изменения в последнем коммите
git show --stat

# Удалить все локальные ветки кроме main
git branch | grep -v "main" | xargs git branch -D

Docker однострочники

# Удалить все остановленные контейнеры
docker container prune -f

# Логи с таймстампами
docker logs -t --since 30m container_name

# Выполнить команду во всех контейнерах
docker ps -q | xargs -I {} docker exec {} df -h

# Размер образов и контейнеров
docker system df

Быстрый анализ логов

# Топ IP адресов в access.log
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20

# Количество 4xx и 5xx ошибок
awk '$9 ~ /^[45]/ {print $9}' access.log | sort | uniq -c

# Запросы медленнее 1 секунды (nginx)
awk '$NF > 1' access.log | wc -l

Полезные алиасы

# Добавить в ~/.bashrc
alias ll='ls -alh'
alias ..='cd ..'
alias ...='cd ../..'
alias ports='netstat -tulanp'
alias myip='curl -s ifconfig.me'
alias serve='python3 -m http.server'

# Docker алиасы
alias dps='docker ps'
alias dpsa='docker ps -a'
alias dex='docker exec -it'
alias dlog='docker logs -f'

# K8s алиасы
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get svc'
alias kdp='kubectl describe pod'

Проверка ресурсов

# CPU и память топ процессов
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10

# Использование диска по директориям
du -h --max-depth=1 / 2>/dev/null | sort -hr

# iostat для дисков
iostat -x 1

Работа с текстом

# Удалить пустые строки
sed '/^$/d' file.txt

# Заменить во всех файлах
find . -type f -name "*.conf" -exec sed -i 's/old/new/g' {} +

# Посчитать строки кода (без пустых)
find . -name "*.py" -exec cat {} + | sed '/^$/d' | wc -l

Безопасность

# Генерация паролей
openssl rand -base64 32
# или
tr -dc 'A-Za-z0-9!@#$%' < /dev/urandom | head -c 20

# Проверить SSL сертификат
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

Дебаг и тестирование

# HTTP запрос с заголовками
curl -I https://example.com
curl -H "Host: example.com" http://localhost

# DNS lookup
dig +short example.com
# Все записи
dig example.com ANY

# Трассировка системных вызовов
strace -e open,read,write -p PID

Бонус: полезные функции для .bashrc

# Распаковать любой архив
extract() {
  if [ -f $1 ]; then
    case $1 in
      *.tar.bz2)   tar xjf $1   ;;
      *.tar.gz)    tar xzf $1   ;;
      *.tar.xz)    tar xJf $1   ;;
      *.bz2)       bunzip2 $1   ;;
      *.rar)       unrar x $1   ;;
      *.gz)        gunzip $1    ;;
      *.tar)       tar xf $1    ;;
      *.tbz2)      tar xjf $1   ;;
      *.tgz)       tar xzf $1   ;;
      *.zip)       unzip $1     ;;
      *.Z)         uncompress $1;;
      *.7z)        7z x $1      ;;
      *)           echo "'$1' cannot be extracted" ;;
    esac
  else
    echo "'$1' is not a valid file"
  fi
}

# Создать директорию и перейти в неё
mkcd() {
  mkdir -p "$1" && cd "$1"
}

Сохраните эти команды - они точно пригодятся!