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

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
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
Проверки файлов

-d file Проверяет, существует ли файл, и является ли он директорией.
-e file Проверяет, существует ли файл.
-f file Проверяет, существует ли файл, и является ли он файлом.
-r file Проверяет, существует ли файл, и доступен ли он для чтения.
-s file Проверяет, существует ли файл, и не является ли он пустым.
-w file Проверяет, существует ли файл, и доступен ли он для записи.
-x file Проверяет, существует ли файл, и является ли он исполняемым.
file1 -nt file2 Проверяет, новее ли file1, чем file2.
file1 -ot file2 Проверяет, старше ли file1, чем file2.
-O file Проверяет, существует ли файл, и является ли его владельцем текущий пользователь.
-G file Проверяет, существует ли файл, и соответствует ли его идентификатор группы идентификатору группы текущего пользователя.

if [ -d $mydir ]
then
echo "The $mydir directory exists"
cd $ mydir
ls
else
echo "The $mydir directory does not exist"
fi
👍29🔥7