Wyszukiwanie w witrynie

Żeglowanie po świecie skryptów Linux BASH - część III


Poprzednie artykuły z serii „Skrypty powłoki” spotkały się z dużym uznaniem i dlatego piszę ten artykuł, aby przedłużyć niekończący się proces uczenia się.

  1. Zapoznaj się z podstawowymi wskazówkami dotyczącymi języka skryptowego powłoki systemu Linux — część I
  2. 5 skryptów powłoki dla początkujących w Linuksie do nauki programowania w powłoce – część II
Słowa kluczowe Basha

Słowo kluczowe to słowo lub symbol, który ma specjalne znaczenie w języku komputerowym. Poniższe symbole i słowa mają specjalne znaczenie dla Bash, gdy nie są cytowane i stanowią pierwsze słowo polecenia.

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

W przeciwieństwie do większości języków komputerowych, Bash umożliwia używanie słów kluczowych jako nazw zmiennych, nawet jeśli może to utrudniać czytanie skryptów. Aby skrypty były zrozumiałe, w nazwach zmiennych nie należy używać słów kluczowych.

Polecenie jest zaimplementowane w powłoce jako $(polecenie). Może być konieczne podanie pełnej ścieżki polecenia. np. &36 (/bin/data), aby zapewnić prawidłowe wykonanie.

Możesz znać ścieżkę konkretnego programu za pomocą polecenia „whereis”. np. gdzie jest data

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

To na razie wystarczy. Nie będziemy teraz dużo mówić o tych teoriach. Dochodzimy do Skryptów.

Przenieś bieżący katalog roboczy

Przejdź z bieżącego katalogu roboczego na dowolny poziom wyżej, po prostu podając wartość liczbową na końcu skryptu podczas wykonywania.

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

Zapisz powyższe kody jako „up.sh” na swoim pulpicie. Ustaw go jako wykonywalny (chmod 755 up.sh). Uruchomić:

./up.sh 2 (przeniesie bieżący katalog roboczy o dwa poziomy wyżej).
./up.sh 4 (przeniesie bieżący katalog roboczy o cztery poziomy wyżej).

Zastosowanie i obszar zastosowania

W większych skryptach, które zawierają folder w folderze wewnątrz… zawierającym biblioteki, pliki binarne, ikony, pliki wykonywalne itp. w różnych lokalizacji. Jako programista możesz zaimplementować ten skrypt, aby przenieść się do wybranej lokalizacji w bardzo zautomatyzowany sposób.

Uwaga: For jest pętlą w powyższym skrypcie i będzie wykonywana, dopóki wartości pętli nie będą prawdziwe.

Przykładowe wyjście
[root@tecmint /]# chmod 755 up
[root@tecmint /]# ./up.sh 2
You are in: /

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

[root@tecmint /]#

Pobierz up.sh

Utwórz losowy plik lub folder

Utwórz losowy plik (folder) bez ryzyka duplikacji.

#! /bin/bash

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

To jest prosty skrypt, ale jego działanie nie jest takie proste.

  1. echo”: drukuje wszystko, co jest zapisane w cudzysłowie.
  2. $”: jest zmienną powłoki.
  3. >>”: Dane wyjściowe są przekierowywane do danych wyjściowych polecenia date, po którym następuje rozszerzenie txt.

Wiemy, że wynikiem polecenia data jest data, a godzina w godzinie, minutie drugi wraz z rokiem. W związku z tym moglibyśmy uzyskać dane wyjściowe dotyczące zorganizowanej nazwy pliku bez ryzyka duplikacji nazwy pliku. Może to być bardzo przydatne, gdy użytkownik potrzebuje pliku utworzonego z znacznikiem czasu do wykorzystania w przyszłości.

Przykładowe wyjście
[root@tecmint /]# ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

Możesz wyświetlić plik utworzony na komputerze z dzisiejszą datą i bieżącym czasem.

[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

Poniżej znajduje się bardziej szczegółowa implementacja powyższego skryptu, który działa na powyższej zasadzie i jest bardzo przydatny przy zbieraniu informacji o sieci serwera Linux.

Pobierz plikrandomfile.sh

Skrypt zbierający informacje o sieci

Zbiera informacje o sieci na serwerze Linux. Skrypt jest za duży i nie ma możliwości opublikowania tutaj całego kodu i wyników działania skryptu. Lepiej więc pobrać skrypt, korzystając z poniższego linku do pobrania i przetestować go samodzielnie.

Uwaga: może być konieczne zainstalowanie pakietu lsb-core oraz innych wymaganych pakietów i zależności. Apt lub Mniam wymagane pakiety. Oczywiście, aby uruchomić skrypt, musisz być rootem, ponieważ większość użytych tutaj poleceń jest skonfigurowana do uruchamiania jako root.

Przykładowe wyjście
[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

Możesz zmienić powyższy adres e-mail w swoim skrypcie, aby otrzymać wiadomość e-mail. Można wyświetlić automatycznie wygenerowany plik.

Pobierz plikcollectnetworkinfo.sh

Skrypt konwertujący WIELKIE litery na małe

Skrypt konwertujący WIELKIE LITERY na małe i przekierowujący dane wyjściowe do pliku tekstowego „small.txt”, który można modyfikować według potrzeb.

#!/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

Powyższy skrypt może za pomocą jednego kliknięcia przekonwertować wielkość liter w pliku o dowolnej długości z wielkich na małe litery i odwrotnie, jeśli to konieczne, z niewielkimi modyfikacjami.

Przykładowe wyjście
[root@tecmint /]# ./convertlowercase.sh  
Enter File Name : a.txt 

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

Dane wyjściowe nowego pliku (small.txt):

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

Pobierz konwerterlowercase.sh

Prosty program do obliczania

#! /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
Przykładowe wyjście
[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

Pobierz Simplecalc.sh

Czy widziałeś, jak łatwo było stworzyć potężny program, wykonując obliczenia w tak prosty sposób. To nie koniec. Będziemy przygotowywać jeszcze co najmniej jeden artykuł z tej serii, obejmujący szeroką perspektywę z punktu widzenia administracji.

To wszystko na teraz. Będąc czytelnikiem i najlepszym krytykiem, nie zapomnij powiedzieć nam, jak bardzo i co Ci się podobało w tym artykule oraz co chcesz zobaczyć w przyszłym artykule. Wszelkie pytania są bardzo mile widziane w komentarzu. Do tego czasu bądźcie zdrowi, bezpieczni i dostrojeni. Polub i Udostępnij nas i pomóż nam się rozprzestrzeniać.