Ż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ę.
- Zapoznaj się z podstawowymi wskazówkami dotyczącymi języka skryptowego powłoki systemu Linux — część I
- 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.
- „echo”: drukuje wszystko, co jest zapisane w cudzysłowie.
- „$”: jest zmienną powłoki.
- „>>”: 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ć.