Отправка сообщений в терминал пользователя
Команда отправки сообщений,
Займёмся решением данной задачи, напишем bash-скрипт:
https://telegra.ph/Otpravka-soobshchenij-v-terminal-polzovatelya-05-31
Команда отправки сообщений,
write
, довольно проста. Для того, чтобы ей воспользоваться, достаточно знать имя пользователя и имя его терминала. Однако, для успешной отправки сообщения, помимо актуальных данных о пользователе и терминале, надо знать, вошёл ли пользователь в систему, не запретил ли он запись в свой терминал. В результате, перед отправкой сообщения нужно выполнить несколько проверок.Займёмся решением данной задачи, напишем bash-скрипт:
https://telegra.ph/Otpravka-soobshchenij-v-terminal-polzovatelya-05-31
This media is not supported in your browser
VIEW IN TELEGRAM
nohup для создания "бессмертных" процессов
nohup - это команда для создания долгоживущих процессов без зависимости от терминала. Когда вы запускаете программу из командной строки, она обычно завершается при закрытии терминала. Однако, если вы добавите символ
Это полезно, например, для запуска долгих задач или серверов, которые должны работать в фоновом режиме.
nohup - это команда для создания долгоживущих процессов без зависимости от терминала. Когда вы запускаете программу из командной строки, она обычно завершается при закрытии терминала. Однако, если вы добавите символ
&
и используете команду nohup
, программа будет продолжать работу даже после закрытия терминала. Это полезно, например, для запуска долгих задач или серверов, которые должны работать в фоновом режиме.
nohup firefox https://freecodecamp.org &
This media is not supported in your browser
VIEW IN TELEGRAM
Переменные среды
Иногда в командах оболочки нужно работать с некими системными данными. Вот, например, как вывести домашнюю директорию текущего пользователя
Обратите внимание на то, что мы можем использовать системную переменную $HOME в двойных кавычках, это не помешает системе её распознать.
Иногда в командах оболочки нужно работать с некими системными данными. Вот, например, как вывести домашнюю директорию текущего пользователя
Обратите внимание на то, что мы можем использовать системную переменную $HOME в двойных кавычках, это не помешает системе её распознать.
echo "Home for the current user is: $HOME"
Уроки Linux для начинающих / Изучение Linux Ubuntu и Bash с нуля
В этом плейлисте вы научитесь устанавливать VirtualBox с Ubuntu, изучите основы пользовательского интерфейса и командной строки Linux, научитесь работать с файлами и директориями, изучите пакетный менеджер, работу с памятью, сжатие файлов и редакторы текста, разберёте команды поиска FIND и GREP.
📹 Плейлист YouTube
Если вы уже имеете эти навыки и знания, поделитесь ими со своими друзьями ;)
В этом плейлисте вы научитесь устанавливать VirtualBox с Ubuntu, изучите основы пользовательского интерфейса и командной строки Linux, научитесь работать с файлами и директориями, изучите пакетный менеджер, работу с памятью, сжатие файлов и редакторы текста, разберёте команды поиска FIND и GREP.
Если вы уже имеете эти навыки и знания, поделитесь ими со своими друзьями ;)
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Установка разрешений для файла сценария
Сохранив файл bash-скрипта, необходимо сделать этот файл исполняемым, иначе, попытавшись его запустить, вы столкнётесь с ошибкой
Сохранив файл bash-скрипта, необходимо сделать этот файл исполняемым, иначе, попытавшись его запустить, вы столкнётесь с ошибкой
Permission denied
.chmod +x ./myscript
./myscript
Пользовательские переменные
Подобные переменные хранят значение до тех пор, пока не завершится выполнение сценария.
Как и в случае с системными переменными, к пользовательским переменным можно обращаться, используя знак доллара:
Подобные переменные хранят значение до тех пор, пока не завершится выполнение сценария.
Как и в случае с системными переменными, к пользовательским переменным можно обращаться, используя знак доллара:
grade=5
person="Adam"
echo "$person is a good boy, he is in grade $grade"
Подстановка команд
Bash-скрипты позволяют извлекать информацию из вывода команд и сохранять её в переменных для дальнейшего использования.
Сделать это можно двумя способами:
• С помощью значка обратного апострофа «
• С помощью конструкции
Bash-скрипты позволяют извлекать информацию из вывода команд и сохранять её в переменных для дальнейшего использования.
Сделать это можно двумя способами:
• С помощью значка обратного апострофа «
`
»• С помощью конструкции
$()
mydir=$(pwd)
echo $mydir
Сравнение чисел
В скриптах можно сравнивать числовые значения. Ниже приведён список соответствующих команд.
В скриптах можно сравнивать числовые значения. Ниже приведён список соответствующих команд.
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
Управляющая конструкция if-then
Управление потоком исполнения команд может быть достигнуто с помощью конструкции
Управление потоком исполнения команд может быть достигнуто с помощью конструкции
if-then
. Например, можно использовать ее для поиска пользователя в /etc/passwd
и, в случае успешного нахождения, вывести сообщение о его существовании.user=likegeeks
if grep $user /etc/passwd
then
echo "The user $user Exists"
fi
Математические операции
Для выполнения математических операций в файле скрипта можно использовать конструкцию вида
Для выполнения математических операций в файле скрипта можно использовать конструкцию вида
$((a+b))
var1=$(( 5 + 5 ))
echo $var1
var2=$(( $var1 * 2 ))
echo $var2
Проверки файлов
-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
Сравнение строк
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
Обход файлов, содержащихся в директории
Один из самых распространённых вариантов использования циклов for в bash-скриптах заключается в обходе файлов, находящихся в некоей директории, и в обработке этих файлов.
Например, вот как можно вывести список файлов и папок:
Один из самых распространённых вариантов использования циклов 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
Перебор простых значений
Пожалуй, самый простой пример цикла
Хорошо видно, что в переменную
Пожалуй, самый простой пример цикла
for
в bash-скриптах — это перебор списка простых значений.Хорошо видно, что в переменную
$var
последовательно попадают элементы из списка. Происходит так до тех пор, пока цикл не дойдёт до последнего из них.for var in first second third fourth fifth
do
echo The $var item
done
Перебор сложных значений
В списке, использованном при инициализации цикла
В списке, использованном при инициализации цикла
for
, могут содержаться не только простые строки, состоящие из одного слова, но и целые фразы, в которые входят несколько слов и знаков препинания.for var in first "the second" "the third" "I’ll do it"
do
echo "This is: $var"
done
Циклы for
Циклы for в оболочке bash позволяют перебирать последовательности значений. Они имеют следующую структуру:
Циклы for в оболочке bash позволяют перебирать последовательности значений. Они имеют следующую структуру:
for var in listВ каждой итерации цикла значение из списка присваивается переменной var. Цикл выполняется для каждого элемента списка по порядку.
do
команды
done
Циклы for в стиле C
В bash-скриптах можно использовать циклы for, описание которых выглядит очень похожим на циклы в стиле C, правда, без некоторых отличий тут не обошлось.
В bash-скриптах можно использовать циклы for, описание которых выглядит очень похожим на циклы в стиле C, правда, без некоторых отличий тут не обошлось.
for (( i=1; i <= 10; i++ ))
do
echo "number is $i"
done
Цикл while
В цикле можно проверять условие и выполнять тело цикла, пока условие возвращает ноль. Когда условие вернет ненулевое значение, цикл остановится.
В цикле можно проверять условие и выполнять тело цикла, пока условие возвращает ноль. Когда условие вернет ненулевое значение, цикл остановится.
var1=5
while [ $var1 -gt 0 ]
do
echo $var1
var1=$[ $var1 - 1 ]
done
Посты про инфобезопасность в нашем отдельном канале:
https://t.me/+J34Lc_hJnb02ZmRi
https://t.me/+J34Lc_hJnb02ZmRi
Вложенные циклы
В теле цикла можно использовать любые команды, в том числе — запускать другие циклы. Такие конструкции называют вложенными циклами.
В теле цикла можно использовать любые команды, в том числе — запускать другие циклы. Такие конструкции называют вложенными циклами.
for (( a = 1; a <= 3; a++ ))
do
echo "Start $a:"
for (( b = 1; b <= 3; b++ ))
do
echo " Inner loop: $b"
done
done
Обработка содержимого файла
Чаще всего вложенные циклы используют для обработки файлов. Так, внешний цикл занимается перебором строк файла, а внутренний уже работает с каждой строкой.
Такой подход можно использовать при обработке файлов формата CSV, или любых подобных файлов, записывая, по мере надобности, в переменную окружения
Чаще всего вложенные циклы используют для обработки файлов. Так, внешний цикл занимается перебором строк файла, а внутренний уже работает с каждой строкой.
Такой подход можно использовать при обработке файлов формата CSV, или любых подобных файлов, записывая, по мере надобности, в переменную окружения
IFS
символ-разделитель.IFS=$'\n'
for entry in $(cat /etc/passwd)
do
echo "Values in $entry –"
IFS=:
for value in $entry
do
echo " $value"
done
done