fa
Feedback
Bash Советы

Bash Советы

رفتن به کانال در Telegram

🚀 Секреты и советы по Bash 🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале. 🔹 Автоматизация, скрипты и оптимизация работы в Linux. 🔹 Стать мастером Bash легко – просто подпишись! По всем вопросам @evgenycarter

نمایش بیشتر
2 748
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+27 روز
-1130 روز
آرشیو پست ها
🖥 Bash скрипт перекодировки всех файлов в директории #!/bin/bash #===================================== # скрипт изменения к
🖥 Bash скрипт перекодировки всех файлов в директории

#!/bin/bash
#=====================================
# скрипт изменения кодировки файлов.
#=====================================
# суть для одного файла: iconv -f Исходная_кодировка -t В_какую_кодировку > выходной_файл
# CONFIG:
TYPES="*.txt"; # на случай поиска по расширению. напр. "*.log"
FROM='cp1251'; # из какой кодировки.
TO='utf8'; # в какую кодировку.
FILEPREFIX='.utf8'; # к названию перекодированного файла добавится.
 
# START:
if [ -z $1 ]
then
        echo "Encoding all $TYPES in directory From $FROM To $TO";
        echo "use $0 /Path_to_recoding_directory/"; echo;
        exit 1;
else
        echo "Encoding all $TYPES in directory $1 From $FROM To $TO";
        echo;
        find $1 -name "$TYPES" -type f -print0|while read -d '' SOURCE; do
                echo "========== SOURCE: $SOURCE FROM: $FROM TO: $TO ==========";
                cat "$SOURCE"|iconv -f $FROM -t $TO > "$SOURCE$FILEPREFIX";
                wait;
        done;
        exit 0;
fi
# end
👉@bash_srv

В чем разница между объявлением переменной export VAR="VALUE" и VAR="VALUE" в bash? В bash (и других оболочках Unix) разница
В чем разница между объявлением переменной export VAR="VALUE" и VAR="VALUE" в bash? В bash (и других оболочках Unix) разница между командами export VAR="VALUE" и VAR="VALUE" связана с областью видимости переменной: 1. VAR="VALUE": - Это обычное объявление переменной в текущей оболочке (сессии). - Переменная VAR будет доступна только внутри текущей сессии, и не будет передаваться дочерним процессам, запущенным этой сессией. - Например, если вы запустите новую команду или скрипт из текущей оболочки, VAR не будет доступна в этом дочернем процессе. 2. export VAR="VALUE": - Команда export делает переменную VAR доступной для всех дочерних процессов текущей оболочки. - То есть, VAR будет установлена и доступна не только в текущей сессии, но и во всех процессах, запущенных из этой сессии. - Это полезно, когда необходимо передать значение переменной в другие программы или скрипты, запущенные из текущей оболочки. Для примера

# Присвоение переменной без export
VAR="Hello"
bash -c 'echo $VAR'  # Ничего не выведет, так как VAR не экспортирована

# Присвоение переменной с export
export VAR="Hello"
bash -c 'echo $VAR'  # Выведет "Hello", так как VAR экспортирована
Таким образом, export используется для того, чтобы переменная была доступна в дочерних процессах, тогда как обычное присвоение без export ограничивает переменную только текущей сессией. 👉@bash_srv

🧹 Автоматическая очистка логов старше N дней Если логи разрастаются, а места становится всё меньше — пора автоматизировать и
🧹 Автоматическая очистка логов старше N дней Если логи разрастаются, а места становится всё меньше — пора автоматизировать их очистку! Вот простой способ удалить файлы старше, скажем, 14 дней:

find /var/log -type f -name "*.log" -mtime +14 -exec rm -f {} \;
🔧 Объяснение: - /var/log — каталог с логами (можно заменить на нужный путь); - -type f — только файлы; - -name "*.log" — ищем только .log-файлы; - -mtime +14 — которым больше 14 дней; - -exec rm -f {} — удаляем. 🛡️ Сухой запуск перед удалением:

find /var/log -type f -name "*.log" -mtime +14
Так ты увидишь, что будет удалено, прежде чем запускать rm. 📌 Добавь в cron, чтобы забыть о рутине навсегда. 👉@bash_srv

🚀 Bash-совет дня: Быстрый мониторинг TCP/UDP портов Иногда нужно оперативно узнать, какие порты слушает сервер и какие подкл
🚀 Bash-совет дня: Быстрый мониторинг TCP/UDP портов Иногда нужно оперативно узнать, какие порты слушает сервер и какие подключения активны. Вот простой однострочник, который поможет:

sudo ss -tunlp
📌 Пояснение ключей: - -t — TCP - -u — UDP - -n — не разрешать имена хостов и портов (быстрее) - -l — только слушающие сокеты - -p — показать PID и имя процесса 🔍 Хочешь отсортировать по порту или найти конкретный? Добавь grep:

sudo ss -tunlp | grep 8080
🎯 Альтернатива на случай, если нет ss:

sudo netstat -tunlp
Полезно для отладки фаервола, проверки работы сервисов или просто для уверенности, что сервер не слушает ничего лишнего 😉 👉@bash_srv

🚀 Полезный Bash-скрипт: Очистка кэша пакетного менеджера APT 🧹 Иногда кэш пакетов APT разрастается и занимает лишнее место. Ниже написал простой скрипт, который поможет автоматизировать очистку и освободить дисковое пространство 💾

#!/bin/bash

# Очищаем кэш APT
echo "🧼 Очистка кэша APT..."
sudo apt clean
sudo apt autoclean

# Удаляем неиспользуемые пакеты
echo "🗑 Удаление неиспользуемых пакетов..."
sudo apt autoremove -y

# Отчёт о свободном месте
echo "📊 Свободное место после очистки:"
df -h /
📌 Как использовать: 1. Сохрани как clean_apt.sh 2. Сделай исполняемым: chmod +x clean_apt.sh 3. Запускай по необходимости или добавь в cron Полезно для серверов с ограниченным дисковым пространством или если хочется держать систему в чистоте 😎 👉@bash_srv

🚀 Полезный Bash-скрипт: Уведомление о перезагрузке сервера 🔔 Иногда нужно предупредить пользователей, что сервер будет перезагружен, особенно если они работают в терминале. Ниже скрипт, который отправит им сообщение и задаст таймер на перезагрузку:

#!/bin/bash

TIMEOUT=5  # Через сколько минут будет перезагрузка
MESSAGE="⚠️ Внимание! Сервер будет перезагружен через $TIMEOUT минут. Пожалуйста, сохраните свою работу."

# Оповестим всех пользователей
wall "$MESSAGE"

# Поставим таймер на перезагрузку
shutdown -r +$TIMEOUT "Плановая перезагрузка сервера через $TIMEOUT минут"
📌 wall рассылает сообщение всем, у кого открыт терминал, а shutdown -r запланирует перезагрузку. Всё просто и эффективно. 💡Можно обернуть это в cron или systemd-таймер — и будет готовый инструмент для автоматических уведомлений и перезагрузок. 👉@bash_srv

🧠 Логи — Самые частые IP-адреса в access.log Когда нужно быстро понять, кто чаще всего лупит по серверу — вот простой одност
🧠 Логи — Самые частые IP-адреса в access.log Когда нужно быстро понять, кто чаще всего лупит по серверу — вот простой однострочник:

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head
🔍 Что делает: 1. awk '{print $1}' — вытаскивает IP из первой колонки. 2. sort и uniq -c — считает повторы. 3. sort -nr | head — выводит топ-10 по частоте. 📊 Вывод будет примерно такой:
  152 192.168.1.10
  103 203.0.113.45
   87 172.16.0.5
🔥 Подходит для NGINX, Apache и других web-логов с классическим форматом. 👉@bash_srv

📌 Регулярки — Ищем email-адреса в тексте Надо быстро вытащить email-адреса из логов или текстов? Лови универсальное регулярн
📌 Регулярки — Ищем email-адреса в тексте Надо быстро вытащить email-адреса из логов или текстов? Лови универсальное регулярное выражение:

grep -Eo '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
📦 Примеры использования:

cat файл.txt | grep -Eo '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
🎯 Оно находит валидные email'ы вроде: - support@domain.com - test.user+admin@sub.domain.co ⚙️ Флаг -o в grep выводит только совпадения, без строк целиком. 📥 Используй для анализа логов, дампов или выгрузок из баз. 👉@bash_srv

🔥 Убиваем процесс по порту в один клик Когда нужно быстро освободить занятый порт, но неохота копаться в lsof и kill, вот пр
🔥 Убиваем процесс по порту в один клик Когда нужно быстро освободить занятый порт, но неохота копаться в lsof и kill, вот простой и мощный однострочник:

fport() { fuser -k "$1"/tcp; }
Теперь можно просто вызвать:

fport 8080
💡 Этот алиас использует fuser, чтобы найти и завершить все процессы, прослушивающие указанный TCP-порт. ⚠️ Убедись, что fuser установлен (обычно он входит в пакет psmisc):

sudo apt install psmisc  # для Debian/Ubuntu
sudo yum install psmisc  # для RHEL/CentOS
🚀 Удобно для Dev-серверов, где постоянно перезапускаешь сервисы и ловишь ошибку "Address already in use". 👉@bash_srv

🧯Как отключить историю Bash — навсегда и без следов Иногда не хочется, чтобы команды сохранялись в истории (~/.bash_history)
🧯Как отключить историю Bash — навсегда и без следов Иногда не хочется, чтобы команды сохранялись в истории (~/.bash_history). Особенно при работе с конфиденциальными данными. 🔒 Отключение истории в текущей сессии Просто обнуляем переменные истории:

unset HISTFILE
export HISTSIZE=0
export HISTFILESIZE=0
💥 После этого Bash не будет сохранять историю вообще. Даже после выхода из сессии. 🧼 Стереть историю прямо сейчас

history -c    # очистить историю из памяти
> ~/.bash_history  # стереть файл истории
🔁 Отключить навсегда (для пользователя) Добавь в ~/.bashrc или ~/.bash_profile:

export HISTFILE=
export HISTSIZE=0
export HISTFILESIZE=0
📌 После перезапуска оболочки история вестись не будет. 🧙 Дополнительно (опционально) Чтобы Bash не пытался писать историю на выходе:

unset HISTFILE
trap "" EXIT
🛑 Будь осторожен! Без истории сложнее откатить действия. Но иногда это нужно: безопасность превыше всего 🔐 👉@bash_srv

🚀 Утилита timeout: автоматическое завершение зависших команд Когда ты запускаешь какую-то команду, и она может зависнуть — это беда. Особенно в скриптах. На помощь приходит утилита timeout из пакета coreutils. 🛠 Пример использования:

timeout 30s ./backup.sh
Эта команда завершит ./backup.sh, если она не завершится за 30 секунд. 📌 Можно задать время в секундах (s), минутах (m), часах (h) и даже днях (d). 🔄 Что произойдёт при превышении тайм-аута? По умолчанию timeout отправляет сигнал SIGTERM, а через 5 секунд — SIGKILL, если процесс всё ещё жив. ☠️ Изменение сигнала:

timeout -s SIGINT 10s ./script.sh
📋 Проверка кода возврата:

if timeout 5s ./some_command; then
  echo "Успешно"
else
  echo "Команда завершена по таймауту или с ошибкой"
fi
👉@bash_srv

🛡 Проверка SSL-сертификатов с помощью Bash Иногда нужно быстро проверить срок действия SSL-сертификата удалённого сайта. Вот
🛡 Проверка SSL-сертификатов с помощью Bash Иногда нужно быстро проверить срок действия SSL-сертификата удалённого сайта. Вот удобный однострочник на Bash, который покажет дату окончания действия сертификата:

echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -dates | grep notAfter
📆 Чтобы получить только оставшиеся дни до окончания:

end_date=$(echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -enddate | cut -d= -f2)

end_ts=$(date -d "$end_date" +%s)
now_ts=$(date +%s)
echo "Осталось дней: $(( (end_ts - now_ts) / 86400 ))"
🔒 Полезно для автоматического мониторинга или проверки перед продлением сертификатов! 👉@bash_srv

📁Как отрезать расширение у файла в Bash filename="example.txt" name="${filename%.*}" echo "$name" 📌 Что тут происходит: - $
📁Как отрезать расширение у файла в Bash

filename="example.txt"
name="${filename%.*}"
echo "$name"
📌 Что тут происходит: - ${filename%.*} — удаляет последнюю точку и всё после неё, то есть расширение. 👀 Примеры:

filename="backup.tar.gz"
name="${filename%.*}"  # Результат: backup.tar
Если хочешь убрать все расширения (в т.ч. .tar.gz), можно использовать вот так:

filename="backup.tar.gz"
name="${filename%%.*}"  # Результат: backup
🧠 Под капотом: - %.* — удаляет самую правую точку и всё после. - %%.* — удаляет самую левую точку и всё после. Мощно и без внешних команд! 🚀 👉@bash_srv

🚀 Bash-совет дня: Как быстро найти и удалить пустые директории Иногда в системах с большим количеством файлов и директорий накапливаются пустые папки. Вот простой способ найти и удалить их одним махом:

find /path/to/search -type d -empty -delete
🔍 Разбор: - /path/to/search — укажи директорию, где искать. - -type d — ищем только директории. - -empty — фильтруем только пустые. - -delete — удаляем найденные. 🛡 Важно: Перед удалением рекомендую посмотреть, что именно будет удалено:

find /path/to/search -type d -empty
Так ты убедишься, что ничего лишнего не затронешь 😉 👉@bash_srv

👩‍💻 Считаем количество файлов в указанной директории

#!/usr/bin/env bash

# Script Name: count_files.sh
# Description: Counts the number of directories, files, and total count in a specified directory,
#              with options to filter by extension and set traversal depth.
# Usage: count_files.sh [--directory <dir>] [--depth <depth>] [--extension <ext>] [--help]
#        --directory <dir>   (optional) - the directory to count files in (default: current directory)
#        --depth <depth>     (optional) - the maximum depth of directory traversal (default: unlimited)
#        --extension <ext>   (optional) - only count files with the specified extension
#        --help              (optional) - display this help message
# Example:
#   ./count_files.sh
#   ./count_files.sh --directory /path/to/dir --depth 2 --extension txt

set -euo pipefail

show_help() {
    cat << EOF
Usage: $0 [OPTIONS]

Options:
  -d, --directory DIR     The directory to count files in (default: current directory)
  -p, --depth DEPTH       The maximum depth of directory traversal (default: unlimited)
  -e, --extension EXT     Only count files with the specified extension
  -h, --help              Display this help message

Examples:
  $0
  $0 --directory /path/to/dir --depth 2 --extension txt
EOF
    exit 0
}

count_files() {
    local dir="$1"
    local depth="$2"
    local extension="$3"

    if [[ ! -d "$dir" ]]; then
        echo "Error: Directory '$dir' does not exist."
        exit 1
    fi

    echo -e "\nCounting files in directory: $dir"
    [[ -n "$depth" ]] && echo "Depth: $depth"
    [[ -n "$extension" ]] && echo "Filtering by extension: .$extension"

    local find_cmd=(find "$dir")
    [[ -n "$depth" ]] && find_cmd+=(-maxdepth "$depth")
    [[ -n "$extension" ]] && find_cmd+=(-name "*.$extension")
    find_cmd+=(-type f)

    local num_files
    num_files=$( "${find_cmd[@]}" | wc -l )

    local num_dirs
    num_dirs=$( find "$dir" ${depth:+-maxdepth "$depth"} -type d | wc -l )

    local total_count=$((num_dirs + num_files))

    echo "Number of directories: $num_dirs"
    echo "Number of files: $num_files"
    echo "Total count: $total_count"
}

main() {
    local dir="$(pwd)"
    local depth=""
    local extension=""

    # Parse options
    options=$(getopt -o d:p:e:h --long directory:,depth:,extension:,help -n "$0" -- "$@")
    eval set -- "$options"

    while true; do
        case "$1" in
            -d|--directory)
                dir="$2"
                shift 2
                ;;
            -p|--depth)
                depth="$2"
                shift 2
                ;;
            -e|--extension)
                extension="$2"
                shift 2
                ;;
            -h|--help)
                show_help
                ;;
            --)
                shift
                break
                ;;
            *)
                echo "Invalid option: $1"
                show_help
                ;;
        esac
    done

    count_files "$dir" "$depth" "$extension"
}

main "$@"
👉@bash_srv

+6
Основы работы с терминалом и BASH Основные команды терминала. Первый скрипт на BASH. Основы BASH | Условия Основы Bash | Циклы Основы BASH | for, let, trap Основы BASH | Функции, рекурсия, модули, массивы Основы терминала | GNU awk Основы BASH | expect, who, mesg, autoexpect 🖤 Автор: bugsandfeatures 👉@bash_srv

🚀 Быстрый просмотр размера всех подкаталогов Если нужно быстро узнать, какие директории в текущем каталоге занимают больше всего места — этот однострочник тебе поможет:

du -h --max-depth=1 | sort -hr
📌 Разбор: - du -h --max-depth=1 — показывает размер каждого подкаталога (в человекочитаемом формате, только на 1 уровень вглубь). - sort -hr — сортирует результат по размеру в обратном порядке (от большего к меньшему). 👀 Полезно, когда: - Хочешь быстро найти, где “утекает” место. - Проверяешь домашние директории пользователей. - Мониторишь var, log или tmp на переполнение. 🔧 Пример использования:

cd /var && du -h --max-depth=1 | sort -hr
💡 Добавь алиас в .bashrc, чтобы использовать как команду:

alias dusort='du -h --max-depth=1 | sort -hr'
👉@bash_srv

🎯 Примеры типовых операций в bash-скриптах Собрал для вас полезные кусочки Bash-кода, которые часто нужны при написании скриптов: арифметика, проверки, FTP, Telnet, циклы и т.д. 👇 📌 Арифметика и цикл по количеству раз:

#!/bin/bash
A="10"
B="5"
C=`expr $A + $B`
printf "A=10 B=5 C=expr \$A + \$B C=%d \n" "$C"

# Цикл по числам от 0 до 14 (в 16-ричном формате)
I=0
while [ $I -lt 15 ]
do
    printf "0x%02x " "$I"
    I=`expr $I + 1`
done
echo
📌 Проверки файлов:

#!/bin/bash
# Создаем файл
touch test1

# Проверка существования файла
if [ -f test1 ]; then
    echo "файл test1 существует"
fi

# Проверка отсутствия файла
if ! [ -f test2 ]; then
    echo "файл test2 не существует"
fi

# Краткая шпаргалка:
# -d file   — директория
# -f file   — обычный файл
# -L file   — символьная ссылка
# -r/-w/-x  — права: чтение/запись/выполнение
# -s file   — файл существует и не пустой
# f1 -nt f2 — f1 новее, чем f2
# f1 -ot f2 — f1 старше, чем f2
📌 Работа с FTP (без интерактива):

#!/bin/bash
ADDRESS=192.168.1.150
USER=root
PASSWORD=root

ftp -n -p $ADDRESS <<EoF
user $USER $PASSWORD
cd /usr/bin
put my_cool_program
quit
EoF
exit 0
📌 Работа с Telnet:

#!/bin/bash
(
  sleep 1
  echo "root"
  echo "cd /tmp"
  echo "ls"
  sleep 1
  echo "quit"
) | telnet 192.168.1.150
⚠️ Если требуется пароль — добавь ещё echo "mypassword" сразу после echo "root" 📌 Цикл по множеству значений:

#!/bin/bash
for A in раз два три четыре пять
do
    echo "$A,"
done
echo "вышел заяц погулять"
🔐 Не забудь дать права на исполнение скрипта:

chmod a+x script.sh
👉@bash_srv

Трюки терминала Bash Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной. Горячие клавиши" Bash с Ctrl Ctrl + n — то же самое, что и стрелка вниз. Ctrl + p — то же самое, что и стрелка вверх. Ctrl + r — поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r, чтобы искать дальше. Ctrl + Shift + r — поиск в другую сторону. Ctrl + s — остановить вывод в терминал. Ctrl + q — восстановить вывод в терминал после Ctrl + s. Ctrl + a — перейти к началу строки (аналог клавиши Home). Ctrl + e — перейти к концу строки (аналог клавиши End). Ctrl + d — если вы ввели что-то, то Ctrl + d удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash. Ctrl + k — удалить весь текст от курсора до конца строки. Ctrl + x + backspace — удалить весь текст от начала строки до курсора. Ctrl + t — переставить символ до курсора на символ под курсором. Нажмите Esc + t для перестановки двух слов до курсора. Ctrl + w — удалить слово до курсора; затем Ctrl + y, чтобы вставить его. Ctrl + u — удалить строку перед курсором; Ctrl + y для вставки его. Ctrl + _ — отменить ввод. Ctrl + l — очищает окно терминала. То же самое, что и clear. Ctrl + x + Ctrl + e — запускает редактор, определённый в переменной $EDITOR, для ввода команды. Полезно для многострочных команд. Изменить заглавные на строчные и наоборот Esc + u — преобразовать буквы от курсора до конца строки в заглавные буквы. Esc + l — преобразовать буквы от курсора до конца строки в нижний регистр. Esc + c — заменить букву под курсором на заглавную. Запустить предыдущую команду ещё раз Запустить команду из истории по номеру (например, 53) !53 !! — запуск последней команды. sudo !! — запустить предыдущую команду с sudo. Запускает последнюю команду и меняет какой-то параметр. Например, меняем "aaa" на "bbb": # Последняя команда: echo 'aaa' $ ^aaa^bbb $ echo 'bbb' bbb Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте :&: ^aaa^bbb^:& # или !!:gs/aaa/bbb/ Запустить последнюю команду, которая начинается с... Например, до этого в истории команд была команда cat filename: !cat # или !c — запускает cat filename ещё раз. Указание файлов по шаблону в Bash /etc/pa*wd/etc/passwd — символ * означает "несколько любых символов". /b?n/?at/bin/cat — символ ? означает "один любой символ". ls -l [a-z]* — вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках [] перечисляются символы, которые будут искаться. А символ * после [] означает "хоть сколько раз". ls {*.sh,*.py} — вывести все .sh и .py файлы. {} используется для группировки нескольких шаблонов по принципу "или". Полезные переменные окружения Bash Короткие переменные: $0 — оболочка командной строки или путь до запускаемого файла. $1, $2, $3, ... — аргументы запуска скрипта. $# — число аргументов, переданных в скрипт из терминала. $? — код завершения последней команды. $- — текущие опции, установленные для оболочки. $$ — идентификатор текущего процесса. $! — идентификатор процесса, завершённого последним. Более длинные, но тоже полезные переменные: $DESKTOP_SESSION — текущий менеджер дисплеев. $EDITOR — редактор текста по умолчанию. $LANG — используемый системой язык. $PATH — список директорий, в которых будут искаться исполняемые файлы. $PWD — текущая директория. $SHELL — текущая оболочка командной строки. $USER — имя текущего пользователя. $HOSTNAME — имя текущего хоста (компьютера). 👉 @bash_srv

🖥 Базовая шпаргалка по Bash (CLI) 📂 Работа с файлами и каталогами

ls -l             # Подробный список файлов  
ls -a             # Показать скрытые файлы  
cd /path/to/dir   # Перейти в каталог  
pwd               # Показать текущий каталог  
mkdir new_dir     # Создать каталог  
rm file.txt       # Удалить файл  
rm -rf dir/       # Удалить каталог с файлами  
cp file1 file2    # Копировать файл  
mv file1 file2    # Переместить/переименовать файл  
🔍 Просмотр содержимого файлов

cat file.txt      # Вывести весь файл  
less file.txt     # Просмотр файла постранично  
head -n 10 file.txt  # Первые 10 строк  
tail -n 10 file.txt  # Последние 10 строк  
tail -f log.txt   # Смотреть файл в реальном времени  
📌 Поиск

find /dir -name "*.log"    # Найти файлы по имени  
grep "pattern" file.txt    # Найти строку в файле  
grep -r "error" /var/log   # Рекурсивный поиск  
ps aux | grep nginx        # Найти процесс  
📜 Управление процессами

top                 # Мониторинг процессов  
htop                # Улучшенный top (установите: apt install htop)  
kill -9 PID        # Убить процесс  
pkill -9 nginx     # Убить все процессы по имени  
nohup script.sh &  # Запустить в фоне  
jobs               # Показать фоновые задачи  
fg %1              # Вернуть процесс в передний план  
🌐 Сеть

ip a               # Показать IP-адреса  
netstat -tulnp     # Список портов и процессов  
ss -tulnp          # Альтернатива netstat  
ping 8.8.8.8       # Проверить соединение  
curl -I google.com # Проверить заголовки сайта  
wget URL           # Скачать файл  
📋 Управление пользователями

whoami             # Кто я?  
who               # Кто в системе?  
id user           # Информация о пользователе  
passwd            # Сменить пароль  
useradd user      # Создать пользователя  
usermod -aG sudo user  # Добавить в sudo  
deluser user      # Удалить пользователя  
📜 Полезные команды

history           # История команд  
clear             # Очистить терминал  
alias ll='ls -lah'  # Создать алиас  
df -h             # Место на дисках  
du -sh *          # Размер каталогов  
💡 Запомни: - man <команда> — открыть справку по команде - Ctrl+C — остановить выполнение - Ctrl+Z — приостановить выполнение 📌 Сохраните эту шпаргалку и используйте для быстрого доступа! 🚀 👉 @bash_srv