К основному контенту

Примеры Bash скриптов

Существует достаточное количество оболочек, например - sh, zsh, ksh и другие. Но мы остановимся на Bash, ведь это самая популярная оболочка среди Linux. Теперь даже Microsoft добавила поддержку Bash.

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

Содержание статьи: Примеры Bash скриптов в Linux 1. Первая программа. Модификация команды 'rm' 2. Проверка наличия пути к программе в переменной PATH 3. Нормализация вывода даты 4. Создание библиотек сценариев Заключение Примеры Bash скриптов в Linux

Чтобы посмотреть какой интерпретатор команд у вас используется введите команду:

echo $SHELL



Как видите у меня установлен именно Bash.

1. Первая программа. Модификация команды 'rm'

#!/bin/bash dir="$HOME/.archive/" # directory for deleted files if [ -d $dir ]; then # check the directory .archive/ file="$1" null="" else mkdir $dir | chmod 700 $dir # if there is no, create fi if [ $file == $null ]; then # error, if not specified file # echo -e "/!\  No file.. Usage: $0 filename ;-) | archive directory - $dir  /!\ " exit 1 fi mv $file $dir$(date "+%H.%d.%m").$file # move file to .archive/



Все мы знаем что делает команда rm, она удаляет файлы. Эта программа создает папку ~/.archive. Далее проверяет задан ли аргумент. Без аргумента программа выдаст сообщение об ошибке и прекратит работу. Если ей передан путь к файлу, она помещает его в директорию ~/.archive и добавляет дату(час,день,месяц) в начало имя файла, чтобы мы могли понять когда удалили файл.

Далее я приведу еще несколько программ, но без обяснений. Эти программы можно модифицировать, улучшать как угодно. Попробуйте написать что-то свое.

2. Проверка наличия пути к программе в переменной PATH

#!/usr/bin/bash in_path() { cmd=$1 ourpath=$2 result=1 oldIFS=$IFS IFS=":" for directory in "$ourpath" do if [ -x $directory/$cmd ]; then result=0 fi done IFS=$oldFS return $result } ########## 4ck() { var=$1 if [ "$var" != "" ]; then if [ "${var:0:1}" = "/" ]; then if [ ! -x $var ];then return 1 fi elif ! in_path $var "$PATH" ; then return 2 fi fi } ############################## if [ $# -ne 1 ]; then echo "Usage: $0 command" >&2 exit 0 fi 4ck "$1" case $? in 0 ) echo "[$1] found in PATH" ;; 1 ) echo "[$1] not found or not executable" ;; 2 ) echo "[$1] not found in PATH" ;; esac exit 0 #############################

3. Нормализация вывода даты

#!/bin/bash monthto() { case $1 in 1 ) month="Jan" ;; 7 ) month="Jul" ;; 2 ) month="Feb" ;; 8 ) month="Aug" ;; 3 ) month="Mar" ;; 9 ) month="Sep" ;; 4 ) month="Apr" ;; 10 ) month="Oct" ;; 5 ) month="May" ;; 11 ) month="Nov" ;; 6 ) month="Jun" ;; 12 ) month="Dec" ;; * ) echo "$0: Unknown month value $1" >&2 exit 1 esac return 0 } ################# if [ $# -ne 3 ] ; then echo "Usage: $0 month day year" >&2 echo "Formats are August 3 1962 and 8 3 1962" >&2 exit 1 fi if [ $3 -le 99 ]; then echo "$O: expected 4-digit year value." >&2 exit 1 fi if [ -z $(echo $1|sed 's/[[:digit:]]//g') ]; then monthto $1 else month="$(echo $1 | cut -c1 | tr '[:lower:]' '[:upper:]')" month="$month$(echo $1 | cut -c2-3 | tr '[:upper:]' '[:lower:]')" fi echo $month $2 $3 exit 0

4. Создание библиотек сценариев

Библиотеки - это сценарии которые можно включать в другие сценарии.

colors() { esc="\033" ; # text blackf="${esc}[30m"; redf="${esc}[31m"; greenf="${esc}[32m"; yellowf="${esc}[33m"; bluef="${esc}[34m"; purplef="${esc}[35m"; cyanf="${esc}[36m"; whitef="${esc}[37m" ; # backg blackb="${esc}[40m"; redb="${esc}[41m"; greenb="${esc}[42m" ; yellowb="${esc}[43m"; blueb="${esc}[44m"; purpleb="${esc}[45m" ; cyanb="${esc}[46m"; whiteb="${esc}[47m" ; # bold, italic, etc... boldon="${esc}[1m"; boldoff="${esc}[22m"; italicson="${esc}[3m"; italicsoff="${esc}[23m" ; ulon="${esc}[4m"; uloff="${esc}[24m" ; invon="${esc}[7m"; invoff="${esc}[27m" ; reset="${esc}[0m" ; }



Такие сценари можно легко включить в другой файл командой source и вызвав нужную вам фунцию. Заключение

Сегодня мы разобрали несколько примеров Bash скриптов. Узнали как их исползовать в виде библиотечных сценариев. Очень много полезного можно написать на Bash, ограничение тому лишь ваше воображение. Но на самом деле, тема Bash скриптов велика и есть целые книги посвященные этой теме. Надеюсь статья была полезна. Про основы работы с Bash вы можете прочитать здесь.

Комментарии


Дистанционная компьтерная помощь, удаленная компьютерная помощь онлайн.

Популярные сообщения из этого блога

Лучшие плагины для OBS Studio

Open Broadcast Software или OBS - это свободное программное обеспечение с открытым исходным кодом для стриминга аудио и видео данных в сеть интернет. Программа полностью кроссплатформенная и может работать в Windows, Linux или MacOS. Это отличная альтернатива для таких программ, как Wirecast и XSplit. OBS использует для вещания стандартный протокол обмена сообщениями в реальном времени, а поэтому может транслировать данные в любой сервис, поддерживающий это, например, Yotube. Несмотря на широкие возможности OBS, программа поддерживает еще и множество плагинов. В этой статье мы рассмотрим лучшие плагины для OBS Studio, которые вы можете использовать. Содержание статьи: Лучшие плагины OBS Studio 1. Browser Source Plugin 2. Video Source Plugin 3. Simple Scene Switcher 4. DirectShow Audio Source 5. CLR Browser Source 6. OBS Remote 7. AMD Advanced Media Framework Encoder 8. Text Source Plugin Выводы Лучшие плагины OBS Studio Чтобы найти плагины OBS Studio для Video пользователям пр…

Лучшие аналоги Paint для Linux

Когда я работал в Windows, я часто использовал стандартную программу редактора изображений Windows - Paint. Не всегда нужен очень и многофункциональный инструмент вроде Photoshop или Gimp. Иногда, чтобы подправить ту или иную картинку, дорисовать на ней несколько фигур или вставить текст достаточно простого, легкого в освоении графического редактора вроде Paint. В Linux таких программ довольно много. В этой инструкции мы рассмотрим лучшие аналоги Paint для Linux. В этот список не будут включены такие программы, как Gimp и Krita, ведь это полнофункциональные графические редакторы, векторные редакторы, такие как Inkscape мы тоже рассматривать не будем. А теперь перейдем к списку. Содержание статьи: KolourPaint MyPaint Gnome Paint XPaint Pinta mtPaint GPaint Rassam-paint Выводы KolourPaint На первом месте в списке аналогов Piant для Linux будет KoloutPaint. Это стандартный графический редактор для окружения рабочего стола KDE. Он поддерживает множество форматов изображений PNG, J…

Подключение OneDrive в Linux

OneDrive (Ранее известный как SkyDrive) это популярное облачное хранилище файлов от Майкрософт. Сейчас OneDrive бесплатно предоставляет 7 гигабайт пространства новым пользователям. Как вы знаете OneDrive хорошо интегрирован с другими продуктами компании  Microsoft. В OneDrive Также есть официальный клиент который автоматически загружает ваши видео и фотографии с камеры в облако. Но к сожалению этот клиент недоступен для операционных систем семейства Linux. Но не все так плохо. Сообщество открытого программного обеспечения уже нашло решение. Это opedrive-d от Boilermaker. Запустившись как демон программа автоматически синхронизирует локальную папку с облаком OneDrive. Содержание статьи: Установка Onedrive-d в Linux Настройка Синхронизация локальной папки с OneDrive Установка Onedrive-d в Linux Несмотря на то что onedrive-d разрабатывается для Ubuntu/Debian, CentOs/Fedora/RHEL поддерживается тоже хорошо. Для установки достаточно набрать несколько команд: $ git clone https://gith…