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

Реклама: @Kone4noVasya

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

str1 = str2 Проверяет строки на равенство, возвращает истину, если строки идентичны.
str1 != str2 Возвращает истину, если строки не идентичны.
str1 < str2 Возвращает истину, если str1 меньше, чем str2.
str1 > str2 Возвращает истину, если str1 больше, чем str2.
-n str1 Возвращает истину, если длина str1 больше нуля.
-z str1 Возвращает истину, если длина str1 равна нулю.

user ="likegeeks"
if [$user = $USER]
then
echo "The user $user is the current logged in user"
fi
🔥8👍5
Обход файлов, содержащихся в директории

Один из самых распространённых вариантов использования циклов for в bash-скриптах заключается в обходе файлов, находящихся в некоей директории, и в обработке этих файлов.

Например, вот как можно вывести список файлов и папок:

for file in /home/likegeeks/*
do
if [ -d "$file" ]
then
echo "$file is a directory"
elif [ -f "$file" ]
then
echo "$file is a file"
fi
done
👍18🔥82
Перебор простых значений

Пожалуй, самый простой пример цикла for в bash-скриптах — это перебор списка простых значений.

Хорошо видно, что в переменную $var последовательно попадают элементы из списка. Происходит так до тех пор, пока цикл не дойдёт до последнего из них.

for var in first second third fourth fifth
do
echo The $var item
done
🔥9👍7😐41
Перебор сложных значений

В списке, использованном при инициализации цикла for, могут содержаться не только простые строки, состоящие из одного слова, но и целые фразы, в которые входят несколько слов и знаков препинания.

for var in first "the second" "the third" "I’ll do it"
do
echo "This is: $var"
done
🔥116👍2😐2
Циклы for

Циклы for в оболочке bash позволяют перебирать последовательности значений. Они имеют следующую структуру:

for var in list
do
команды
done

В каждой итерации цикла значение из списка присваивается переменной var. Цикл выполняется для каждого элемента списка по порядку.
👍13😐31