Поиск по сайту:

Путешествуя по миру сценариев BASH для Linux. Часть III


Предыдущие статьи серии «Shell Scripting» получили высокую оценку, поэтому я пишу эту статью, чтобы продлить бесконечный процесс обучения.

  1. Основные советы по языку сценариев оболочки Linux. Часть I.
  2. 5 сценариев оболочки для новичков в Linux для изучения программирования оболочки – часть II
Ключевые слова Bash

Ключевое слово – это слово или символ, имеющий особое значение в компьютерном языке. Следующие символы и слова имеют особое значение для Bash, если они не заключены в кавычки и являются первым словом команды.

! 			esac 			select 		} 
case 			fi 			then 		[[ 
do 			for 			until 		]] 
done 			function 		while 		elif
if 			time 			else 		in 		{

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

Команда реализуется в оболочке как $(команда). Возможно, вам придется указать полный путь к команде. например, $ (/bin/date) для правильного выполнения.

Вы можете узнать путь к конкретной программе, используя команду «whereis». например, где дата

[root@tecmint /]# whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

На данный момент этого достаточно. Мы не будем сейчас много говорить об этой теории. Переходим к сценариям.

Переместить текущий рабочий каталог

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

#! /bin/bash 
LEVEL=$1 
for ((i = 1; i <= LEVEL; i++)) 
do 
CDIR=../$CDIR 
done 
cd $CDIR 
echo "You are in: "$PWD 
exec /bin/bash

Сохраните приведенные выше коды как «up.sh» на рабочем столе. Сделайте его исполняемым (chmod 755 up.sh). Бегать:

./up.sh 2 (переместит текущий рабочий каталог на два уровня выше).
./up.sh 4 (переместит текущий рабочий каталог на четвертый уровень выше).

Использование и область применения

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

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

Пример вывода
[root@tecmint /]# chmod 755 up
[root@tecmint /]# ./up.sh 2
You are in: /

[root@tecmint /]# ./up.sh 4 
You are in: / 

[root@tecmint /]#

Скачать up.sh

Создать случайный файл или папку

Создайте случайный файл (папку) без возможности дублирования.

#! /bin/bash

echo "Hello $USER";
echo "$(uptime)" >> "$(date)".txt
echo "Your File is being saved to $(pwd)"

Это простой скрипт, но работать с ним не так уж и просто.

  1. «echo»: печатает все, что написано в кавычках.
  2. $’: переменная оболочки.
  3. >>’: вывод перенаправляется на вывод команды date, за которым следует расширение txt.

Мы знаем, что вывод команды date — это дата и время в часах, минутах . второй и год. Следовательно, мы могли бы получить вывод в виде организованного имени файла без возможности дублирования имени файла. Это может быть очень полезно, когда пользователю нужен файл, созданный с отметкой времени, для дальнейшего использования.

Пример вывода
[root@tecmint /]# ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

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

[root@tecmint /]# nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt 
13:51:52 up  3:54,  1 user,  load average: 0.09, 0.12, 0.08

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

Скачать Randomfile.sh

Скрипт для сбора сетевой информации

Собирает сетевую информацию на сервере Linux. Скрипт слишком большой и разместить здесь весь код и вывод скрипта невозможно. Поэтому лучше скачать скрипт по ссылке ниже и протестировать его самостоятельно.

Примечание. Возможно, вам потребуется установить пакет lsb-core и другие необходимые пакеты и зависимости. Apt или Yum необходимые пакеты. Очевидно, что для запуска сценария вам необходимо иметь права root, поскольку большинство используемых здесь команд настроены на запуск от имени root.

Пример вывода
[root@tecmint /]# ./collectnetworkinfo.sh  

The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to your_name@service_provider.com. ktop

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

Скачать Collectnetworkinfo.sh

Скрипт для преобразования ВЕРХНЕГО регистра в нижний регистр

Скрипт, который преобразует ВЕРХНИЙ регистр в строчный регистр и перенаправляет вывод в текстовый файл «small.txt», который можно изменить по мере необходимости.

#!/bin/bash 

echo -n "Enter File Name : " 
read fileName 

if [ ! -f $fileName ]; then 
  echo "Filename $fileName does not exists" 
  exit 1 
fi 

tr '[A-Z]' '[a-z]' < $fileName >> small.txt

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

Пример вывода
[root@tecmint /]# ./convertlowercase.sh  
Enter File Name : a.txt 

Initial File: 
A
B
C
D
E
F
G
H
I
J
K
...

Вывод нового файла (small.txt):

a
b
c
d
e
f
g
h
i
j
k
...

Скачать Convertlowercase.sh

Простая программа-калькулятор

#! /bin/bash 
clear 
sum=0 
i="y" 

echo " Enter one no." 
read n1 
echo "Enter second no." 
read n2 
while [ $i = "y" ] 
do 
echo "1.Addition" 
echo "2.Subtraction" 
echo "3.Multiplication" 
echo "4.Division" 
echo "Enter your choice" 
read ch 
case $ch in 
    1)sum=`expr $n1 + $n2` 
     echo "Sum ="$sum;; 
        2)sum=`expr $n1 - $n2` 
     echo "Sub = "$sum;; 
    3)sum=`expr $n1 \* $n2` 
     echo "Mul = "$sum;; 
    4)sum=`expr $n1 / $n2` 
     echo "Div = "$sum;; 
    *)echo "Invalid choice";; 
esac 
echo "Do u want to continue (y/n)) ?" 
read i 
if [ $i != "y" ] 
then 
    exit 
fi 
done
Пример вывода
[root@tecmint /]# ./simplecalc.sh 

Enter one no. 
12 
Enter second no. 
14 
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
1 
Sum =26 
Do u want to continue (y/n)) ? 
y
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
3 
mul = 14812
Do u want to continue (y/n)) ? 
n

Скачать simplecalc.sh

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

На данный момент это все. Будучи читателем и лучшим критиком, не забудьте рассказать нам, что и как вам понравилось в этой статье и что вы хотите увидеть в следующей статье. Любой вопрос приветствуется в комментариях. А до тех пор оставайтесь здоровым, безопасным и настроенным. Нравится и Поделитесь нами и помогите нам распространиться.