Bash Советы
2.75K subscribers
193 photos
7 videos
94 links
🚀 Секреты и советы по Bash

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

По всем вопросам @evgenycarter
Download Telegram
Чтобы быстро проверить соединение с набором хостов, можно использовать след. скрипт


#!/bin/bash
for host in server1.example.com server2.example.com 8.8.8.8; do
if ping -c1 -W1 "$host" &>/dev/null; then
echo " $host доступен"
else
echo " $host недоступен"
fi
done


🔧 Можно добавить свои сервера в список и за пару секунд проверить доступность.

📲 Мы в MAX

👉@bash_srv
👍6
Если вам часто приходится искать файлы по содержимому, то для этого есть мощная связка grep + find 🔍

Например, чтобы найти все файлы с текстом "ERROR" в /var/log:


find /var/log -type f -exec grep -H "ERROR" {} \;


📌 А если хотите искать рекурсивно по каталогу проще, используйте grep -r:


grep -r "ERROR" /var/log


Добавим подсветку совпадений:


grep --color=always -r "ERROR" /var/log


Теперь нужные строки будут выделяться цветом

📲 Мы в MAX

👉@bash_srv
👍6🔥3
Как быстро найти и удалить пустые директории

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


find /path/to/search -type d -empty -delete


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

🛡 Важно:
Перед удалением рекомендую посмотреть, что именно будет удалено:


find /path/to/search -type d -empty


📲 Мы в MAX

👉@bash_srv
👍5
📁Как отрезать расширение у файла в 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


🧠 Под капотом:
- %.* — удаляет самую правую точку и всё после.
- %%.* — удаляет самую левую точку и всё после.

Мощно и без внешних команд! 🚀

📲 Мы в MAX

👉@bash_srv
👍6
🛡 Проверка 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 ))"


🔒 Полезно для автоматического мониторинга или проверки перед продлением сертификатов!

📲 Мы в MAX

👉@bash_srv
👍61
🚀 Утилита 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


📲 Мы в MAX

👉@bash_srv
👍61🔥1
Отключаем историю 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


💡Без истории сложнее откатить действия, иногда это нужно.

📲 Мы в MAX

👉@bash_srv
👍3🔥2
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин

Excel лайфхак 📌
https://t.me/Excel_lifehack Excel лайфхак

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика

Программирование React📌
https://max.ru/react_lib React

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
👎3🗿1
📌 Регулярки - ищем 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 выводит только совпадения, без строк целиком.

📲 Мы в MAX

👉@bash_srv
👍6🔥1
🧠 Логи — Самые частые 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-логов с классическим форматом.

📲 Мы в MAX

👉@bash_srv
👍4🔥1
🚀 Очистка кэша пакетного менеджера 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

📲 Мы в MAX

👉@bash_srv
👍5😁1💩1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин

Excel лайфхак 📌
https://t.me/Excel_lifehack Excel лайфхак

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика

Программирование React📌
https://max.ru/react_lib React

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌
https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП
💩3👍1
🚀 Bash-совет дня: Быстрый мониторинг TCP/UDP портов

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


sudo ss -tunlp


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

🔍 Хочешь отсортировать по порту или найти конкретный? Добавь grep:

sudo ss -tunlp | grep 8080


🎯 Альтернатива на случай, если нет ss:

sudo netstat -tunlp


Полезно для отладки фаервола, проверки работы сервисов или просто для уверенности, что сервер не слушает ничего лишнего 😉

📲 Мы в MAX

👉@bash_srv
👍2🔥1
⚠️ Хватит плодить хрупкие скрипты и оставлять дыры для троянов. Пора писать пуленепробиваемый инфраструктурный код.

🎥 Приглашаем на вебинар - Продвинутый Bash

На вебинаре вы узнаете:
- Связка set -euo pipefail навсегда исключит тихое проглатывание ошибок и потерю данных в конвейерах.
- Нативные подстановки Bash заменят тысячи ресурсоемких вызовов sed и сэкономят CPU.
- Регулярный мониторинг системных профилей защитит продакшен от перехвата команд троянами.
- Грамотный перехват сигналов через trap обеспечит безопасное сворачивание процессов при сбоях.

В результате вебинара вы:
- Замените многоуровневые костыли лаконичной логикой на базе ассоциативных массивов.
- Исключите утечки глобальных переменных через жесткую изоляцию областей видимости в функциях.
- Внедрите нативную построчную трассировку скриптов вместо примитивного дебага echo-принтами.
- Начнете напрямую пробрасывать переменные окружения в SystemD-юниты для надежного старта сервисов.

🧠 Открытый урок проходит в преддверии старта курса «Администратор Linux. Продвинутый уровень»

👉 Для участи зарегистрируйтесь: https://vk.cc/cYnpiY

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍1
🧹 Автоматическая очистка логов старше 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, чтобы забыть о рутине навсегда.

📲 Мы в MAX

👉@bash_srv
👍2🤡2🔥1