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

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Зачем использовать симлинки

Символическая ссылка – это специальный файл, который на самом деле не содержит данных, а является указанием реального местоположения другого файла или папки.

В обычной жизни такие ссылки вам особо не помогут, но например при деплое веб-приложения на сервер вы можете вынести хранилище загружаемых посетителями файлов из папки приложения в другое место файловой системы.

Например, создать такую ссылку можно командой:
ln -s /data/uploads /app/public/uploads

Приложение обращаясь к загрузкам в папке ./public/uploads фактически будет обращаться к /data/uploads.
👍37🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Фигурные скобки в аргументах

С помощью фигурных скобок можно быстро размножить аргументы по шаблону. Например создать несколько файлов, изменить расширение, вывести последовательность:

echo {a..z}
touch {01,02,05..10}_data.txt
mv .env{.example,}
🔥29👍15
This media is not supported in your browser
VIEW IN TELEGRAM
test для быстрой проверки условий

Когда неохота писать условную команду if для выполнения короткого действия воспользуйтесь test с условными связками && и ||.
Например, создать файл, если его еще нет:

test -f ./etc/nginx.conf || touch ./etc/nginx.conf


Если вы используете проверку И, то не забудьте в конце дописать || true, иначе test оборвет ваш скрипт с провалом:

test "$RESULT" && echo "Success" || true
🔥20👍11👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Сортировка в консоли

Интуитивным перебором можно найти команду консоли почти на любой случай жизни.

Отсортировать файл можно конечно же командой sort. С флагом -r сортировка произойдет в обратном порядке.

Кстати можно сортировать еще и вывод через конвеер |.

sort data.txt
./app fetch-names | sort
👍22🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Как сохранить вывод команды в файл

Вывод любой консольной команды можно перенаправить в файл. Для этого используйте модификаторы >> чтобы добавить результат в конец файла и >, чтобы перезаписать файл.

sort data.txt > sorted.txt
cat nginx/access.log | grep 127.0.0.1 >> filtered_by_ip.log
👍32🔥6👎1
This media is not supported in your browser
VIEW IN TELEGRAM
TAB для автодополнения

Если во время ввода названия файла или папки в команде вы нажмете TAB, то консоль допишет искомое название.

Но TAB также умеет дополнять любые аргументы: подкоманды, названия веток, контейнеров, ssh хостов и так далее. Поэкспериментируйте сами.

Вообще autocomplete для различных команд можно устанавливать, поэтому если TAB для вашего приложения не сработал – попробуйте поискать нужный пакет автодополнений для этой программы.
👍19🔥5👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Как увидеть команды, которые выполняются внутри bash скрипта

Иногда хочется понять, правильно ли вы написали скрипт, или отлаживаете CI/CD джобу. Но как увидеть, какие именно команды выполняются, какие переменные передаются и так далее?

В этом вам точно поможет встроенная функция set -x. Все команды, которые будут идти после выполнения set -x будут отображены в консоли.

Эту функцию можно вызывать как в самом начале скрипта, так и окружить ей необходимый участок: set -x / set +x
👍36🔥20
This media is not supported in your browser
VIEW IN TELEGRAM
Калькулятор в консоли

Вы можете вычислять математические выражения в bash, если заключите их в комбинацию $(( )). Значение можно сразу вывести, записать в переменную или использовать еще как угодно.


echo $((2 * (30 - 19) / 5))
MATH=$((2**8 + 1))
👍41🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Парсниг JSON в консоли

Если вам требуется просто спарсить единственное поле объекта JSON, полученного например из API-эндпоинта, тогда вы можете обойтись sed.

Если же нужно, предположим, выбрать определенный ключ массива вложенного в глубину объекта, используйте утилиту jq (документация). Как минимум, jq выведет ваш JSON отформатированно и в цвете.
🔥22👍10👎1
Какой ваш уровень знаний в bash?
Anonymous Poll
76%
Начинающий
20%
Продвинутый
4%
Профессионал
Шпаргалка по Bash для начинающих

Часто забываете команды bash или другие возможности оболочки? Мы нашли для вас полезную статью-шпаргалку.

В ней вы найдёте шпаргалки на такие темы: введение в оболочку, навигация, основные команды, переменные окружения, коннекторы, конвейеры, перенаправление ввода/вывода, права доступа и комбинации клавиш.

Забыли, открыли, вспомнили и продолжили работу 👌
🔥22👍10
Отправка сообщений в терминал пользователя

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

Займёмся решением данной задачи, напишем bash-скрипт:

https://telegra.ph/Otpravka-soobshchenij-v-terminal-polzovatelya-05-31
👍14👎1
This media is not supported in your browser
VIEW IN TELEGRAM
nohup для создания "бессмертных" процессов

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

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

nohup firefox https://freecodecamp.org &
🔥24👍9
This media is not supported in your browser
VIEW IN TELEGRAM
Переменные среды

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

Обратите внимание на то, что мы можем использовать системную переменную $HOME в двойных кавычках, это не помешает системе её распознать.

echo "Home for the current user is: $HOME"
👍17🔥1
Уроки Linux для начинающих / Изучение Linux Ubuntu и Bash с нуля

В этом плейлисте вы научитесь устанавливать VirtualBox с Ubuntu, изучите основы пользовательского интерфейса и командной строки Linux, научитесь работать с файлами и директориями, изучите пакетный менеджер, работу с памятью, сжатие файлов и редакторы текста, разберёте команды поиска FIND и GREP.

📹 Плейлист YouTube

Если вы уже имеете эти навыки и знания, поделитесь ими со своими друзьями ;)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Установка разрешений для файла сценария

Сохранив файл bash-скрипта, необходимо сделать этот файл исполняемым, иначе, попытавшись его запустить, вы столкнётесь с ошибкой Permission denied.

chmod +x ./myscript
./myscript
👍20👎2🔥2
Пользовательские переменные

Подобные переменные хранят значение до тех пор, пока не завершится выполнение сценария.

Как и в случае с системными переменными, к пользовательским переменным можно обращаться, используя знак доллара:

grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"
👍11🔥4👎1
Подстановка команд

Bash-скрипты позволяют извлекать информацию из вывода команд и сохранять её в переменных для дальнейшего использования.

Сделать это можно двумя способами:

• С помощью значка обратного апострофа «`»
• С помощью конструкции $()

mydir=$(pwd)
echo $mydir
👍10🔥4👎1
Сравнение чисел

В скриптах можно сравнивать числовые значения. Ниже приведён список соответствующих команд.

n1 -eq n2 Возвращает истинное значение, если n1 равно n2.
n1 -ge n2 Возвращает истинное значение, если n1 больше или равно n2.
n1 -gt n2 Возвращает истинное значение, если n1 больше n2.
n1 -le n2 Возвращает истинное значение, если n1 меньше или равно n2.
n1 -lt n2 Возвращает истинное значение, если n1 меньше n2.
n1 -ne n2 Возвращает истинное значение, если n1 не равно n2.

val1=6
if [ $val1 -gt 5 ]
then
echo "The test value $val1 is greater than 5"
else
echo "The test value $val1 is not greater than 5"
fi
👍21🔥4👎2
Управляющая конструкция if-then

Управление потоком исполнения команд может быть достигнуто с помощью конструкции if-then. Например, можно использовать ее для поиска пользователя в /etc/passwd и, в случае успешного нахождения, вывести сообщение о его существовании.

user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi
👍13🔥7👎2
Математические операции

Для выполнения математических операций в файле скрипта можно использовать конструкцию вида $((a+b))

var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2
👍16🔥3