Короткие команды и однострочники, которые использую каждый день. Без воды - только то, что реально работает.
Найти большие файлы
# Топ-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"
}
Сохраните эти команды - они точно пригодятся!