Bash Советы
1.86K subscribers
54 photos
8 videos
4 links
🚀 Секреты и советы по Bash

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

💻 Прокачивай терминал вместе с нами! 👇
Download Telegram
🎯 Мониторинг загрузки процессора и уведомление в Telegram 🎯

Сервер начал тормозить, а вы не знаете почему? 🤔 Напишите скрипт, который мониторит загрузку CPU и при превышении порога отправляет уведомление в Telegram!

📌 Скрипт для мониторинга CPU и отправки уведомлений


#!/bin/bash

# Порог загрузки CPU в процентах
THRESHOLD=80

# Токен бота и ID чата в Telegram
TELEGRAM_BOT_TOKEN="your_bot_token"
CHAT_ID="your_chat_id"

# Получаем среднюю загрузку CPU за 1 минуту
CPU_LOAD=$(awk '{print $1}' /proc/loadavg | awk '{print int($1)}')

# Проверяем, превышен ли порог
if [ "$CPU_LOAD" -ge "$THRESHOLD" ]; then
MESSAGE="⚠️ Внимание! Высокая загрузка CPU: ${CPU_LOAD}%"
curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \
-d chat_id="$CHAT_ID" \
-d text="$MESSAGE"
fi


🔹 Как использовать?
1️⃣ Сохраните скрипт в файл, например, cpu_monitor.sh.
2️⃣ Дайте права на выполнение:

chmod +x cpu_monitor.sh

3️⃣ Добавьте в cron для проверки каждые 5 минут:

crontab -e

Добавьте строку:

*/5 * * * * /path/to/cpu_monitor.sh


Теперь при высокой нагрузке процессора вы получите уведомление в Telegram и сможете быстро принять меры! 🚀

👉@bash_srv
🛠 Мониторинг использования диска с автоматическим уведомлением 🛠

Если у вас есть сервер, важно следить за свободным местом на диске, чтобы избежать неожиданного отказа. Нижн скрипт, который проверяет использование диска и отправляет уведомление, если свободное место падает ниже заданного порога.

📜 Скрипт:


#!/bin/bash

THRESHOLD=20 # Установите порог (в процентах)
EMAIL="admin@example.com" # Замените на свой email

# Получаем процент использования корневого раздела
USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

# Проверяем, превышает ли использование порог
if [ "$USAGE" -ge "$THRESHOLD" ]; then
echo " Внимание! Свободное место на диске заканчивается. Использование: ${USAGE}%" | mail -s "Диск почти заполнен" "$EMAIL"
fi


🛠 Как использовать:
1️⃣ Сохраните скрипт, например, в файл disk_check.sh.
2️⃣ Сделайте его исполняемым:

chmod +x disk_check.sh

3️⃣ Добавьте в cron для автоматического выполнения, например, каждые 10 минут:

*/10 * * * * /path/to/disk_check.sh


Теперь сервер будет сам следить за местом на диске и предупреждать вас! 🚀

👉@bash_srv
🔥 Bash-скрипт для мониторинга дискового пространства 🔥

Системные администраторы часто сталкиваются с проблемой нехватки места на диске. Этот скрипт поможет отслеживать свободное пространство и отправлять уведомления, если оно падает ниже заданного порога. 📉💾

🖥 Скрипт для мониторинга:

#!/bin/bash

THRESHOLD=20 # Порог в % (измените по необходимости)
EMAIL="admin@example.com" # Укажите свой email

df -h | awk 'NR>1 {print $5 " " $6}' | while read output; do
usep=$(echo $output | awk '{print $1}' | sed 's/%//')
partition=$(echo $output | awk '{print $2}')

if [ "$usep" -ge "$THRESHOLD" ]; then
echo "Внимание! Диск $partition заполнен на $usep%!" | mail -s "Предупреждение: мало места на $partition" $EMAIL
fi
done


🔹 Как использовать:
1️⃣ Сохраните скрипт в файл, например disk_monitor.sh
2️⃣ Дайте ему права на выполнение:

chmod +x disk_monitor.sh

3️⃣ Добавьте в crontab для автоматического запуска:

crontab -e

Добавьте строку, чтобы скрипт запускался каждый час:

0 * * * * /path/to/disk_monitor.sh


Теперь вы всегда будете в курсе, если место на сервере заканчивается! 🚀

👉@bash_srv
📌 Очистка кэша памяти в Linux 🧹

Если сервер начинает тормозить из-за большого количества кешированной памяти, можно её сбросить без перезагрузки. Вот простой скрипт:


#!/bin/bash

# Освобождаем PageCache, dentries и inodes
sync; echo 3 > /proc/sys/vm/drop_caches

# Очищаем swap (необязательно)
swapoff -a && swapon -a

echo "Кэш памяти очищен!"


🔹 Как использовать?
Сохраните скрипт, например, как clear_cache.sh, сделайте его исполняемым:

chmod +x clear_cache.sh

И запустите:

sudo ./clear_cache.sh


Можно добавить его в cron, чтобы очищать кэш автоматически, например, раз в день:

0 4 * * * /path/to/clear_cache.sh


🚀 Используй, если сервер начинает работать медленнее после долгой работы!

👉@bash_srv
📌 Автоматическое удаление старых логов в Linux

При администрировании серверов со временем накапливается много лог-файлов, которые занимают место. Этот простой скрипт автоматически удаляет файлы старше 30 дней в указанной директории.


#!/bin/bash

LOG_DIR="/var/log/myapp" # Укажите путь к логам
DAYS=30 # Количество дней, после которых логи удаляются

find "$LOG_DIR" -type f -mtime +$DAYS -exec rm -f {} \;

echo "Удаление логов старше $DAYS дней завершено."


🔹 Как использовать?
1️⃣ Сохраните скрипт в файл, например, clean_logs.sh
2️⃣ Дайте ему права на выполнение:

chmod +x clean_logs.sh

3️⃣ Добавьте в cron для автоматического выполнения раз в день:

crontab -e

Добавьте строку:

0 3 * * * /path/to/clean_logs.sh

Это запустит скрипт каждый день в 3 утра.

🎯 Теперь ваши логи не будут засорять дисковое пространство!

👉@bash_srv
📌 Сортировка данных в консоли

🔹Основные команды сортировки

1️⃣ sort – основная утилита для сортировки строк в файле или потоке вывода.


sort файл.txt

🔹Сортирует строки в алфавитном порядке.

2️⃣ sort -r – сортировка в обратном порядке.


sort -r файл.txt


3️⃣ sort -n – сортировка чисел.


sort -n числа.txt

🔹Работает корректно с числами, учитывает их величину.

4️⃣ sort -h – сортировка с учётом суффиксов (K, M, G).


sort -h размер.txt

🔹Полезно для файловых размеров: 10K, 2M, 5G.

5️⃣ sort -k – сортировка по колонке.


sort -k2,2 -n данные.txt

🔹Здесь сортировка идёт по 2-й колонке (числовая).

6️⃣ sort | uniq – удаление дубликатов после сортировки.


sort файл.txt | uniq

🔹Показывает только уникальные строки.

🔥 Полезный трюк: сортировка процессов по использованию памяти


ps aux --sort=-%mem | head -10

🔹 Выводит топ-10 процессов по потреблению памяти.

Используйте эти команды для эффективной работы в консоли! 🚀

👉@bash_srv
📌 Типовые операции в Bash: Ввод-вывод и перенаправление 🎯

В Bash-скриптах важно уметь работать с вводом-выводом и перенаправлением потоков. Давайте разберём основные конструкции.

📥 Ввод
Читаем данные от пользователя:

read -p "Введите имя: " name
echo "Привет, $name!"


Читаем несколько переменных:

read -p "Введите имя и возраст: " name age
echo "$name, вам $age лет."


Читаем из файла построчно:

while read line; do
echo "Строка: $line"
done < файл.txt


📤 Вывод
Вывод в стандартный поток (stdout):

echo "Это сообщение отобразится в консоли"


Вывод без новой строки:

echo -n "Введите пароль: "


Форматированный вывод:

printf "Имя: %s\nВозраст: %d\n" "Алиса" 25


🔄 Перенаправление

Вывод в файл (перезапись)

echo "Привет, мир!" > output.txt


Вывод в файл (добавление)

echo "Новая строка" >> output.txt


Перенаправление ошибок

команда 2> error.log


Перенаправление вывода и ошибок

команда > output.log 2>&1

или

команда &> output.log


Передача данных через конвейер (pipeline)

ls -l | grep ".sh"


Использование /dev/null (отбрасывание вывода)

команда > /dev/null 2>&1


🎯 Эти операции помогут вам лучше управлять вводом-выводом в скриптах! 🚀

👉 @bash_srv
📌 Работа с FTP 🌐📂

Работа с FTP в Bash-скриптах упрощает автоматизированную передачу файлов. Разберём основные команды!

🔹 1. Загрузка файла на FTP

#!/bin/bash

HOST="ftp.example.com"
USER="your_username"
PASS="your_password"
FILE="localfile.txt"

ftp -inv $HOST <<EOF
user $USER $PASS
put $FILE
bye
EOF

📌 Как это работает?
🔹 ftp -inv $HOST — Открываем FTP-соединение (без интерактивного режима)
🔹 user $USER $PASS — Логинимся
🔹 put $FILE — Загружаем файл
🔹 bye — Завершаем сеанс



🔹 2. Загрузка всех файлов из папки

#!/bin/bash

HOST="ftp.example.com"
USER="your_username"
PASS="your_password"
LOCAL_DIR="/path/to/local/files"

ftp -inv $HOST <<EOF
user $USER $PASS
lcd $LOCAL_DIR
mput *
bye
EOF

📌 Команда mput * загружает все файлы из указанной локальной директории.



🔹 3. Скачивание файла с FTP

#!/bin/bash

HOST="ftp.example.com"
USER="your_username"
PASS="your_password"
FILE="remotefile.txt"

ftp -inv $HOST <<EOF
user $USER $PASS
get $FILE
bye
EOF

📌 Команда get загружает файл с FTP на локальную машину.



🔹 4. Удаление файлов на FTP

ftp -inv $HOST <<EOF
user $USER $PASS
delete oldfile.txt
bye
EOF

📌 Удаляет файл oldfile.txt на сервере.



🚀 Автоматизируйте работу с FTP, добавляя скрипты в cron!

👉@bash_srv
🔐 Шифруем файлы в Linux с GPG!

Данный Bash-скрипт 🔒 шифрует файл и предлагает удалить оригинал после успешного шифрования.

📌 Как работает скрипт:
Проверяет, существует ли файл
Шифрует его с помощью gpg -c
Просит подтверждение перед удалением оригинала
Выводит понятные сообщения

📜 Код скрипта:

#!/usr/bin/env bash

echo "🔐 GPG File Encryption Script"
echo "📂 Make sure this script is in the same directory as the file you want to encrypt."

read -rp "Enter the exact file name (with extension): " file

# Проверяем, существует ли файл
if [[ ! -f "$file" ]]; then
echo " Error: File '$file' not found!"
exit 1
fi

# Шифруем файл
gpg -c "$file"

# Проверяем, успешно ли создан зашифрованный файл
if [[ -f "$file.gpg" ]]; then
echo " File successfully encrypted: $file.gpg"
read -rp "Do you want to delete the original file? (y/N): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
rm -f "$file"
echo "🗑 Original file removed."
else
echo "🔄 Original file kept."
fi
else
echo " Encryption failed!"
fi


🚀 Как использовать?
1️⃣ Запустите скрипт в той же папке, где находится файл
2️⃣ Введите имя файла
3️⃣ Укажите пароль для шифрования
4️⃣ Выберите, удалять ли оригинал

💡 Дешифровать файл можно командой:

gpg -d файл.gpg > файл


🔥 Теперь ваши файлы под защитой! 🔐

👉@bash_srv
Как увидеть команды, которые выполняются внутри bash скрипта

В Bash есть несколько способов увидеть команды, которые выполняются внутри скрипта. Это может быть полезно для отладки и понимания логики выполнения.


1️⃣ Включение режима отладки с set
Добавьте в начало скрипта строку:

set -x

Это включает режим трассировки, и Bash будет выводить команды перед их выполнением.

Чтобы отключить трассировку, используйте:

set +x


Пример:

#!/bin/bash
set -x # Включаем отладку

echo "Начало скрипта"
ls /etc
pwd

set +x # Отключаем отладку
echo "Конец скрипта"


2️⃣ Запуск скрипта с параметром -x
Можно включить отладку при запуске скрипта:

bash -x script.sh

Это аналогично set -x, но без необходимости изменять сам скрипт.

3️⃣ Использование PS4
Можно изменить переменную PS4, чтобы видеть, например, время выполнения команд:

export PS4='+ $(date "+%T") '
set -x

Теперь трассировка будет включать метки времени.

4️⃣ Логирование вывода в файл
Если хотите записать трассировку в файл:

bash -x script.sh &> debug.log

Так весь вывод (и команды, и их результат) запишется в debug.log.

Эти методы помогут вам анализировать выполнение скриптов и находить ошибки! 🚀

👉@bash_srv
Автоочистка памяти RAM в Linux 🧹

Если сервер начинает тормозить из-за перегруженной оперативной памяти, можно использовать скрипт для её очистки.

🛠️ Скрипт:

#!/bin/bash

echo "Освобождение памяти..."
sync && echo 3 > /proc/sys/vm/drop_caches
echo "Готово! Свободная память увеличена."


📌 Как использовать:
1. Сохраните скрипт в файл, например clear_ram.sh
2. Дайте права на выполнение:

chmod +x clear_ram.sh

3. Запустите от root:

sudo ./clear_ram.sh


🕒 Автоматизация через cron
Можно настроить автоматический запуск, например, раз в час:

sudo crontab -e

Добавьте строку:

0 * * * * /path/to/clear_ram.sh


Теперь сервер будет поддерживать оперативную память в чистоте без вашего участия! 🚀

👉@bash_srv
📌 Калькулятор в консоли Bash

В Bash можно выполнять простые математические вычисления с помощью встроенной конструкции $(( )). Это позволяет быстро выполнять арифметические операции прямо в терминале. Давайте разберёмся подробнее.



🔹 Основные операции
+ Сложение, - Вычитание, * Умножение, / Деление (целочисленное), % Остаток от деления, ** Возведение в степень



🔹 Примеры использования

📍 Простые вычисления
Просто вводим выражение в echo:

echo $((2 + 3))

💡 Вывод: 5

Умножение:

echo $((6 * 7))

💡 Вывод: 42

Деление (целочисленное!):

echo $((10 / 3))

💡 Вывод: 3 (без дробной части)

Остаток от деления:

echo $((10 % 3))

💡 Вывод: 1



📍 Сохранение результата в переменную

result=$((15 - 7))
echo "Результат: $result"

💡 Вывод: Результат: 8



📍 Использование с переменными

a=5
b=10
sum=$((a + b))
echo "Сумма: $sum"

💡 Вывод: Сумма: 15



📍 Возведение в степень

echo $((2 ** 3))

💡 Вывод: 8



🔹 Учитываем важные моменты

Целочисленное деление
В bash при делении берётся только целая часть. Для получения дробного результата используйте bc:

echo "10 / 3" | bc -l

💡 Вывод: 3.3333333333

Отрицательные числа
Нужно ставить пробел перед минусом:

echo $((-5 + 3))

💡 Вывод: -2



🔹 Комплексные выражения
Можно вычислять сложные выражения с приоритетом операций:

echo $(((10 + 5) * 2 - 3))

💡 Вывод: 27



🔹 Инкремент и декремент
Можно увеличивать или уменьшать переменные:

x=5
((x++)) # Увеличить на 1
echo $x # 6

((x--)) # Уменьшить на 1
echo $x # 5




🔹 Альтернативный способ: expr
Можно использовать команду expr:

expr 5 + 3

💡 Вывод: 8

Но тут важно ставить пробелы между числами и операциями.



🏁 Итог
Использование $(( )) — это удобный и быстрый способ выполнять математические операции прямо в терминале. Если нужны дробные числа или более сложные вычисления, можно использовать bc.

Попробуйте сами! 🚀

👉 @bash_srv
🔥 Nohup — создаём "бессмертные" процессы в Linux

Когда запускаешь команду в терминале, она обычно завершается при его закрытии. Но если нужно, чтобы процесс жил дальше, даже после выхода из сеанса, на помощь приходит nohup!

💡 Как это работает?
Просто добавляем nohup перед командой и & в конце:


nohup your_command &


Теперь процесс не будет зависеть от терминала и продолжит работу даже после выхода.

📌 Пример: Запускаем браузер Firefox, который не закроется при выходе из терминала:


nohup firefox https://freecodecamp.org &


📂 Куда попадает вывод?
По умолчанию весь вывод команды записывается в файл nohup.out в текущей директории. Если нужно изменить путь, можно сделать так:


nohup myscript.sh > mylog.log 2>&1 &


🚀 Используйте nohup, чтобы запускать долгие процессы без привязки к терминалу!

👉 @bash_srv
🔍 Проверки файлов в Bash

Работая с файлами и директориями в Bash, часто необходимо проверять их существование, права доступа и другие атрибуты. Для этого используются встроенные проверки:

📂 Проверка существования и типа файла:
- -d file — файл существует и является директорией
- -e file — файл существует (не важно, что это)
- -f file — файл существует и является обычным файлом

🔑 Проверка прав доступа:
- -r file — файл существует и доступен для чтения
- -w file — файл существует и доступен для записи
- -x file — файл существует и является исполняемым

📏 Проверка размера и времени модификации:
- -s file — файл существует и не пуст
- file1 -nt file2file1 новее file2
- file1 -ot file2file1 старше file2

👤 Проверка владельца и группы:
- -O file — файл существует и принадлежит текущему пользователю
- -G file — файл существует и принадлежит группе текущего пользователя

📝 Пример использования:

mydir="/path/to/directory"

if [ -d "$mydir" ]; then
echo "Директория $mydir существует"
cd "$mydir"
ls
else
echo "Директория $mydir не существует"
fi

Эти проверки помогут вам создавать надежные скрипты для автоматизации задач в Linux! 🚀

👉 @bash_srv
📌 Сравнение строк в Bash

В Bash можно сравнивать строки разными способами.


🔹 Операторы сравнения строк

| Оператор| Описание
|-----------|---------------------------------|
| == | Строки равны
| != | Строки не равны
| < | Меньше по ASCII (нужен [[ )
| > | Больше по ASCII (нужен [[ )
| -z | Строка пустая
| -n | Строка не пустая



🔹 Примеры использования

1️⃣ Проверка равенства строк:

str1="hello"
str2="world"

if [[ "$str1" == "$str2" ]]; then
echo "Строки равны"
else
echo "Строки разные"
fi


2️⃣ Проверка, что строка непустая:

if [[ -n "$str1" ]]; then
echo "Переменная str1 содержит: $str1"
fi


3️⃣ Проверка, что строка пустая:

if [[ -z "$str1" ]]; then
echo "Переменная str1 пустая"
fi


4️⃣ Сравнение строк по алфавиту (ASCII-кодам):

if [[ "apple" < "banana" ]]; then
echo "apple идёт раньше banana"
fi


5️⃣ Сравнение строк с case:

case "$str1" in
"hello") echo "Привет!";;
"bye") echo "Пока!";;
*) echo "Неизвестная команда";;
esac


6️⃣ Игнорируем регистр при сравнении:

str1="Hello"
str2="hello"

if [[ "${str1,,}" == "${str2,,}" ]]; then
echo "Строки равны (без учёта регистра)"
fi

🔹 ${str,,} — приводит строку к нижнему регистру (работает в Bash 4+).

👉@bash_srv
🔍 Обработка содержимого файла в Bash

Часто при работе с файлами в Bash применяют вложенные циклы. Внешний цикл перебирает строки файла, а внутренний — обрабатывает каждую строку по отдельности.

Этот метод особенно полезен для работы с CSV-файлами или другими текстовыми файлами с разделителями. Для правильной обработки данных можно использовать переменную окружения IFS (Internal Field Separator), задавая нужный символ-разделитель.

📌 Пример кода:


IFS=$'\n' # Устанавливаем разделитель строк
for entry in $(cat /etc/passwd) # Читаем файл построчно
do
echo "Значения в строке: $entry"
IFS=: # Меняем разделитель для обработки полей
for value in $entry # Разбираем строку по полям
do
echo " -> $value"
done
done


📌 Что делает этот скрипт?
- Читает файл /etc/passwd построчно
- Для каждой строки разбивает данные по ":" (разделителю в файле)
- Выводит каждое поле строки отдельно

⚠️ Важно!
При обработке больших файлов такой способ может быть неэффективным из-за использования подстановки команд $(cat file). Лучше применять while read, например:


while IFS=: read -r user pass uid gid info home shell
do
echo "Пользователь: $user, UID: $uid, Домашняя папка: $home"
done < /etc/passwd


Такой вариант работает быстрее и не создает проблем с пробелами в строках! 🚀

👉 @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
Трюки терминала 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-скриптах

Собрал для вас полезные кусочки 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
🚀 Быстрый просмотр размера всех подкаталогов

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


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.
Основы BASH | Условия
Основы Bash | Циклы
Основы BASH | for, let, trap
Основы BASH | Функции, рекурсия, модули, массивы
Основы терминала | GNU awk
Основы BASH | expect, who, mesg, autoexpect

🖤 Автор: bugsandfeatures

👉@bash_srv
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM