logo

Shell skriptu piemēri

Visiem Linux izplatījumiem čaulas skripts ir kā burvju nūjiņa, kas automatizē procesu, ietaupa lietotāju laiku un palielina produktivitāti. Šī skriptēšanas apmācība iepazīstinās jūs ar 25 plus skriptu piemēriem.

Bet pirms mēs pārejam pie tēmas čaulas skriptēšana piemērus, sapratīsim čaulas skriptu un čaulas skriptu faktiskos lietošanas gadījumus.



Kas ir Shell skripts?

Nu, apvalks ir a CLI ( komandrindas tulks ), kas darbojas teksta logā, kurā lietotāji var pārvaldīt un izpildīt čaulas komandas. No otras puses, Linux sistēmā izpildāmo komandu kopas rakstīšanas process. Fails, kas ietver šādas instrukcijas, tiek saukts par bash skriptu.

Shell skriptu lietojumi

Tālāk ir norādīti daži bieži sastopami Shell skripta lietojumi:

  • Uzdevumu automatizācija - To var izmantot, lai automatizētu atkārtotus uzdevumus, piemēram, regulārus dublējumus un programmatūras instalēšanas uzdevumus.
  • Pielāgošana - Var izmantot čaulas skriptus, lai izstrādātu komandrindas vidi un viegli veiktu uzdevumu atbilstoši vajadzībām.
  • Failu pārvaldība - Apvalka skriptus var izmantot arī, lai pārvaldītu un manipulētu ar failiem un direktorijiem, piemēram, failu pārvietošanai, kopēšanai, pārdēvēšanai vai dzēšanai.

Shell skriptu piemēri operētājsistēmā Linux

1) Ko norāda shebang (#!) čaulas skripta sākumā?

The shebang (#!) skripta sākumā norāda tulku, kas jāizmanto skripta izpildei. Tas norāda sistēmai, kuram apvalkam vai tulkam jāinterpretē skripta komandas.



Piemēram: Pieņemsim, ka mums ir skripts ar nosaukumu myscript.sh rakstīts Bash čaulā:

klēpjdatora ievietošanas atslēga
Shebang

Shebang

Šajā piemērā:



  • #!/bin/bash skripta sākumā norāda, ka skripts jāinterpretē, izmantojot Bash apvalku.
  • Echo komandas tiek izmantotas, lai drukātu ziņojumus uz termināli.

2) Kā palaist čaulas skriptu no komandrindas?

Lai palaistu čaulas skriptu no komandrindas, mums ir jāveic šādas darbības:

  • Pārliecinieties, vai skripta failam ir izpildāmās atļaujas, izmantojot chmod komanda :
chmod +x myscript.sh>
  • Izpildiet skriptu, izmantojot tā faila nosaukumu:
./myscript.sh>

Šeit jums ir jāaizstāj myscript.sh ar savu skripta nosaukumu.

3) Uzrakstiet čaulas skriptu, kas terminālī izdrukā techcodeview.com.

Izveidojiet skripta nosaukumu `myscript.sh` (mēs izmantojam ` jo ` redaktors, jūs varat izvēlēties jebkuru redaktoru)

vim myscript.sh>

#!/bin/bash
# Šis skripts terminālī izdrukā techcodeview.com
echo techcodeview.com

drukas nosaukums

drukas nosaukums

Mēs padarām savu skriptu izpildāmu, izmantojot `chmod +x`, pēc tam izpildām ar `./myscipt.sh` un iegūstam vēlamo izvadi techcodeview.com.

4) Izskaidrojiet echo komandas mērķi čaulas skriptēšanā.

The atbalss komanda tiek izmantots, lai terminālī parādītu tekstu vai mainīgos. To parasti izmanto ziņojumu, mainīgo vērtību drukāšanai un programmas izvades ģenerēšanai.

434

atbalss komanda

Šajā piemērā mēs esam tieši izpildījuši 'echo' terminālī, jo tā darbojas tāpat čaulas skriptā.

5) Kā čaulas skriptā mainīgajam var piešķirt vērtību?

Mainīgajiem tiek piešķirtas vērtības, izmantojot piešķiršanas operatoru =.

Piemēram:

#!/bin/bash
# Vērtības piešķiršana mainīgajam
vārds = Džeišs
vecums = 21
atbalss $name $vecums

Paskaidrojums:

  • Nosaukuma mainīgajam ir piešķirta vērtība Jayesh.
  • Vecuma mainīgajam tiek piešķirta vērtība 21.
  • echo tiek izmantots drukāšanai, un `$name` `$age` tiek izmantots, lai izsauktu mainīgajos saglabāto vērtību.

435

6) Uzrakstiet čaulas skriptu, kas izmanto lietotāja vārdu un sveicina viņu.

Izveidojiet skripta nosaukumu “example.sh”.

#!/bin/bash
# Jautājiet lietotājam viņa vārdu
echo Kā tevi sauc?
lasīt vārdu
# Sveiciniet lietotāju
echo Sveiks, $name! Prieks iepazīties.

Paskaidrojums:

  • #!/bin/bash: šī ir shebang līnija. Tas liek sistēmai izmantot Bash tulku, lai izpildītu skriptu.
  • # Pajautājiet lietotājam viņa vārdu: Šis ir komentārs. Tas nodrošina kontekstu par gaidāmo kodu. Tulks komentārus ignorē.
  • echo Kāds ir jūsu vārds?: Echo komanda tiek izmantota, lai terminālī parādītu tekstu dubultpēdiņās.
  • lasīšanas nosaukums: lasīšanas komanda gaida, līdz lietotājs ievadīs tekstu, un saglabā to mainīgā nosaukumā.
  • echo Sveiks, $name! Prieks iepazīties.: šajā rindā tiek izmantota komanda echo, lai izdrukātu sveiciena ziņojumu, kurā ir iekļauta nosaukuma mainīgā vērtība, kas tika savākta no lietotāja ievades.

436

7) Kā čaulas skriptam pievieno komentārus?

Komentāri čaulas skriptēšanā tiek izmantoti, lai sniegtu koda paskaidrojumus vai kontekstu. Tulks tos ignorē, un tie ir paredzēti tikai cilvēkiem, kas lasa skriptu. Varat pievienot komentārus, izmantojot simbolu #.

#!/bin/bash
# Šis ir komentārs, kas izskaidro skripta mērķi
echo gfg

8) Izveidojiet čaulas skriptu, kas pārbauda, ​​vai fails pastāv pašreizējā direktorijā.

Šis ir skripts, kas pārbauda, ​​vai pašreizējā direktorijā pastāv fails ar nosaukumu example.txt:

#!/bin/bash
file=example.txt
# Pārbaudiet, vai fails pastāv
if [ -e $fails ]; tad
echo Fails pastāv: $file
cits
echo Fails nav atrasts: $file
būt

Paskaidrojums:

  1. #!/bin/bash: šī ir shebang rinda, kas norāda tulku (/bin/bash), kas jāizmanto skripta palaišanai.
  2. file=example.txt: šī rinda definē mainīgo failu un piešķir tam vērtību example.txt. Varat to aizstāt ar tā faila nosaukumu, kuru vēlaties pārbaudīt.
  3. if [ -e $fails ]; then: šī rindiņa sāk if paziņojumu. Nosacījums [ -e $file] pārbauda, ​​vai fails, kas norādīts ar faila mainīgā vērtību, pastāv. Karodziņu -e izmanto, lai pārbaudītu faila esamību.
  4. echo Fails pastāv: $file: ja nosacījums ir patiess (t.i., fails eksistē), šajā rindā tiek izdrukāts ziņojums, kas norāda, ka fails eksistē, kopā ar faila nosaukumu.
  5. else: ja nosacījums ir nepatiess (t.i., fails neeksistē), skripts izpilda kodu zem zara else.
  6. echo Fails nav atrasts: $file: šajā rindā tiek izdrukāts kļūdas ziņojums, kas norāda, ka norādītais fails nav atrasts, kā arī faila nosaukums.
  7. fi: šī rinda iezīmē if priekšraksta beigas.
Faila atrašana

Faila atrašana

9) Kāda ir atšķirība starp vienpēdiņām (') un dubultpēdiņām () čaulas skriptēšanā?

Vienpēdiņas (') un dubultpēdas () tiek izmantotas, lai iekļautu virknes čaulas skriptos, taču tām ir atšķirīga darbība:

  • Atsevišķas pēdiņas: viss, kas atrodas starp pēdiņām, tiek uzskatīts par burtisku virkni. Mainīgo nosaukumi un lielākā daļa īpašo rakstzīmju netiek izvērsti.
  • Dubultās pēdiņas: tiek izvērsti mainīgie un noteiktas speciālās rakstzīmes dubultpēdiņās. Saturs ir pakļauts mainīgai aizstāšanai un komandu aizstāšanai.

#!/bin/bash

abcd=Sveiki
echo ‘$abcd’ # Izvade: $abcd
echo $abcd # Izvade: Sveiki

10) Kā čaulas skriptā var izmantot komandrindas argumentus?

Komandrindas argumenti ir vērtības, kas tiek nodrošinātas skriptam, kad tas tiek izpildīts. Tiem var piekļūt skriptā, izmantojot īpašus mainīgos, piemēram, , utt., kur apzīmē pirmo argumentu, apzīmē otro argumentu un tā tālāk.

Piemēram: Ja mūsu skripta nosaukums ir “example.sh”.

#!/bin/bash

echo Skripta nosaukums:

Visiem Linux izplatījumiem čaulas skripts ir kā burvju nūjiņa, kas automatizē procesu, ietaupa lietotāju laiku un palielina produktivitāti. Šī skriptēšanas apmācība iepazīstinās jūs ar 25 plus skriptu piemēriem.

Bet pirms mēs pārejam pie tēmas čaulas skriptēšana piemērus, sapratīsim čaulas skriptu un čaulas skriptu faktiskos lietošanas gadījumus.

Kas ir Shell skripts?

Nu, apvalks ir a CLI ( komandrindas tulks ), kas darbojas teksta logā, kurā lietotāji var pārvaldīt un izpildīt čaulas komandas. No otras puses, Linux sistēmā izpildāmo komandu kopas rakstīšanas process. Fails, kas ietver šādas instrukcijas, tiek saukts par bash skriptu.

Shell skriptu lietojumi

Tālāk ir norādīti daži bieži sastopami Shell skripta lietojumi:

  • Uzdevumu automatizācija - To var izmantot, lai automatizētu atkārtotus uzdevumus, piemēram, regulārus dublējumus un programmatūras instalēšanas uzdevumus.
  • Pielāgošana - Var izmantot čaulas skriptus, lai izstrādātu komandrindas vidi un viegli veiktu uzdevumu atbilstoši vajadzībām.
  • Failu pārvaldība - Apvalka skriptus var izmantot arī, lai pārvaldītu un manipulētu ar failiem un direktorijiem, piemēram, failu pārvietošanai, kopēšanai, pārdēvēšanai vai dzēšanai.

Shell skriptu piemēri operētājsistēmā Linux

1) Ko norāda shebang (#!) čaulas skripta sākumā?

The shebang (#!) skripta sākumā norāda tulku, kas jāizmanto skripta izpildei. Tas norāda sistēmai, kuram apvalkam vai tulkam jāinterpretē skripta komandas.

Piemēram: Pieņemsim, ka mums ir skripts ar nosaukumu myscript.sh rakstīts Bash čaulā:

Shebang

Shebang

Šajā piemērā:

  • #!/bin/bash skripta sākumā norāda, ka skripts jāinterpretē, izmantojot Bash apvalku.
  • Echo komandas tiek izmantotas, lai drukātu ziņojumus uz termināli.

2) Kā palaist čaulas skriptu no komandrindas?

Lai palaistu čaulas skriptu no komandrindas, mums ir jāveic šādas darbības:

  • Pārliecinieties, vai skripta failam ir izpildāmās atļaujas, izmantojot chmod komanda :
chmod +x myscript.sh>
  • Izpildiet skriptu, izmantojot tā faila nosaukumu:
./myscript.sh>

Šeit jums ir jāaizstāj myscript.sh ar savu skripta nosaukumu.

3) Uzrakstiet čaulas skriptu, kas terminālī izdrukā techcodeview.com.

Izveidojiet skripta nosaukumu `myscript.sh` (mēs izmantojam ` jo ` redaktors, jūs varat izvēlēties jebkuru redaktoru)

vim myscript.sh>

#!/bin/bash
# Šis skripts terminālī izdrukā techcodeview.com
echo techcodeview.com

drukas nosaukums

drukas nosaukums

Mēs padarām savu skriptu izpildāmu, izmantojot `chmod +x`, pēc tam izpildām ar `./myscipt.sh` un iegūstam vēlamo izvadi techcodeview.com.

4) Izskaidrojiet echo komandas mērķi čaulas skriptēšanā.

The atbalss komanda tiek izmantots, lai terminālī parādītu tekstu vai mainīgos. To parasti izmanto ziņojumu, mainīgo vērtību drukāšanai un programmas izvades ģenerēšanai.

434

atbalss komanda

Šajā piemērā mēs esam tieši izpildījuši 'echo' terminālī, jo tā darbojas tāpat čaulas skriptā.

5) Kā čaulas skriptā mainīgajam var piešķirt vērtību?

Mainīgajiem tiek piešķirtas vērtības, izmantojot piešķiršanas operatoru =.

Piemēram:

#!/bin/bash
# Vērtības piešķiršana mainīgajam
vārds = Džeišs
vecums = 21
atbalss $name $vecums

Paskaidrojums:

  • Nosaukuma mainīgajam ir piešķirta vērtība Jayesh.
  • Vecuma mainīgajam tiek piešķirta vērtība 21.
  • echo tiek izmantots drukāšanai, un `$name` `$age` tiek izmantots, lai izsauktu mainīgajos saglabāto vērtību.

435

6) Uzrakstiet čaulas skriptu, kas izmanto lietotāja vārdu un sveicina viņu.

Izveidojiet skripta nosaukumu “example.sh”.

#!/bin/bash
# Jautājiet lietotājam viņa vārdu
echo Kā tevi sauc?
lasīt vārdu
# Sveiciniet lietotāju
echo Sveiks, $name! Prieks iepazīties.

Paskaidrojums:

  • #!/bin/bash: šī ir shebang līnija. Tas liek sistēmai izmantot Bash tulku, lai izpildītu skriptu.
  • # Pajautājiet lietotājam viņa vārdu: Šis ir komentārs. Tas nodrošina kontekstu par gaidāmo kodu. Tulks komentārus ignorē.
  • echo Kāds ir jūsu vārds?: Echo komanda tiek izmantota, lai terminālī parādītu tekstu dubultpēdiņās.
  • lasīšanas nosaukums: lasīšanas komanda gaida, līdz lietotājs ievadīs tekstu, un saglabā to mainīgā nosaukumā.
  • echo Sveiks, $name! Prieks iepazīties.: šajā rindā tiek izmantota komanda echo, lai izdrukātu sveiciena ziņojumu, kurā ir iekļauta nosaukuma mainīgā vērtība, kas tika savākta no lietotāja ievades.

436

7) Kā čaulas skriptam pievieno komentārus?

Komentāri čaulas skriptēšanā tiek izmantoti, lai sniegtu koda paskaidrojumus vai kontekstu. Tulks tos ignorē, un tie ir paredzēti tikai cilvēkiem, kas lasa skriptu. Varat pievienot komentārus, izmantojot simbolu #.

#!/bin/bash
# Šis ir komentārs, kas izskaidro skripta mērķi
echo gfg

8) Izveidojiet čaulas skriptu, kas pārbauda, ​​vai fails pastāv pašreizējā direktorijā.

Šis ir skripts, kas pārbauda, ​​vai pašreizējā direktorijā pastāv fails ar nosaukumu example.txt:

#!/bin/bash
file=example.txt
# Pārbaudiet, vai fails pastāv
if [ -e $fails ]; tad
echo Fails pastāv: $file
cits
echo Fails nav atrasts: $file
būt

Paskaidrojums:

  1. #!/bin/bash: šī ir shebang rinda, kas norāda tulku (/bin/bash), kas jāizmanto skripta palaišanai.
  2. file=example.txt: šī rinda definē mainīgo failu un piešķir tam vērtību example.txt. Varat to aizstāt ar tā faila nosaukumu, kuru vēlaties pārbaudīt.
  3. if [ -e $fails ]; then: šī rindiņa sāk if paziņojumu. Nosacījums [ -e $file] pārbauda, ​​vai fails, kas norādīts ar faila mainīgā vērtību, pastāv. Karodziņu -e izmanto, lai pārbaudītu faila esamību.
  4. echo Fails pastāv: $file: ja nosacījums ir patiess (t.i., fails eksistē), šajā rindā tiek izdrukāts ziņojums, kas norāda, ka fails eksistē, kopā ar faila nosaukumu.
  5. else: ja nosacījums ir nepatiess (t.i., fails neeksistē), skripts izpilda kodu zem zara else.
  6. echo Fails nav atrasts: $file: šajā rindā tiek izdrukāts kļūdas ziņojums, kas norāda, ka norādītais fails nav atrasts, kā arī faila nosaukums.
  7. fi: šī rinda iezīmē if priekšraksta beigas.
Faila atrašana

Faila atrašana

9) Kāda ir atšķirība starp vienpēdiņām (') un dubultpēdiņām () čaulas skriptēšanā?

Vienpēdiņas (') un dubultpēdas () tiek izmantotas, lai iekļautu virknes čaulas skriptos, taču tām ir atšķirīga darbība:

  • Atsevišķas pēdiņas: viss, kas atrodas starp pēdiņām, tiek uzskatīts par burtisku virkni. Mainīgo nosaukumi un lielākā daļa īpašo rakstzīmju netiek izvērsti.
  • Dubultās pēdiņas: tiek izvērsti mainīgie un noteiktas speciālās rakstzīmes dubultpēdiņās. Saturs ir pakļauts mainīgai aizstāšanai un komandu aizstāšanai.

#!/bin/bash

abcd=Sveiki
echo ‘$abcd’ # Izvade: $abcd
echo $abcd # Izvade: Sveiki

10) Kā čaulas skriptā var izmantot komandrindas argumentus?

Komandrindas argumenti ir vērtības, kas tiek nodrošinātas skriptam, kad tas tiek izpildīts. Tiem var piekļūt skriptā, izmantojot īpašus mainīgos, piemēram, $1, $2 utt., kur $1 apzīmē pirmo argumentu, $2 apzīmē otro argumentu un tā tālāk.

Piemēram: Ja mūsu skripta nosaukums ir “example.sh”.

#!/bin/bash

echo Skripta nosaukums: $0
echo Pirmais arguments: $1
echo Otrais arguments: $2

Ja palaižam skriptu ar `.example.sh hello_1 hello_2`, tas izvadīs:

cli argumenti

cli argumenti

11) Kā izmantot cilpu for, lai atkārtotu vērtību sarakstu?

Izveidojiet skripta nosaukumu “example.sh”.

#!/bin/bash

augļi = (ābolu banānu ķiršu datums)
augļiem ${fruits[@]}; darīt
echo Pašreizējais auglis: $auglis
darīts

Paskaidrojums:

Rinda `fruits=` izveido masīvu ar nosaukumu augļi ar četriem elementiem: ābols, banāns, ķirsis un datums.

  • augļiem ${fruits[@]}; do: šī rinda sāk for cilpu. Lūk, ko nozīmē katra daļa:
  • augļiem: tas deklarē cilpas mainīgo, ko sauc par augļiem. Katrā cilpas iterācijā augļi saglabās pašreizējā augļu masīva elementa vērtību.
  • ${fruits[@]}: šis ir masīva paplašinājums, kas paņem visus augļu masīva elementus. ${…} sintakse nodrošina, ka katrs elements tiek uzskatīts par atsevišķu vienumu.
  • do: šis atslēgvārds iezīmē cilpas pamatteksta sākumu.
  • echo Pašreizējais auglis: $fruit: cilpas iekšpusē šī rinda izmanto echo komandu, lai parādītu cilpas mainīgā augļa pašreizējo vērtību. Tas izdrukā ziņojumu, piemēram, Pašreizējais auglis: ābols katram auglim masīvā.
  • darīts: šis atslēgvārds apzīmē cilpas pamatteksta beigas. Tas norāda skriptam, ka cilpa ir pabeigta.
cilpai

cilpai

12) Uzrakstiet čaulas skriptu, kas aprēķina veselu skaitļu summu no 1 līdz N, izmantojot cilpu.

Izveidojiet skripta nosaukumu “example.sh”.

#!/bin/bash

echo Ievadiet skaitli (N):
lasīt N
summa=0
for ((i=1; i<=$N; i++ )); darīt
summa=$((summa + i))
darīts
echo Veselu skaitļu summa no 1 līdz $N ir: $sum

Paskaidrojums:
Skripts sākas ar lūgumu ievadīt skaitli (N), izmantojot lasīšanu. Šis skaitlis noteiks, cik reižu cilpa darbojas.

  1. Mainīgā summa tiek inicializēta uz 0. Šis mainīgais sekos veselu skaitļu summai.
  2. For cilpa sākas ar for (( i=1; i<=$N; i++ )). Šo cilpas struktūru izmanto, lai noteiktu darbību kopu atkārtotu noteiktu skaitu reižu, šajā gadījumā no 1 līdz N vērtībai.
  3. Cilpas ietvaros notiek šādas lietas:
    • i=1 iestata cilpas mainīgo i uz 1 katras iterācijas sākumā.
    • Cilpas nosacījums i<=$N pārbauda, ​​vai i joprojām ir mazāks vai vienāds ar doto skaitli N.
    • Ja nosacījums ir patiess, tiek izpildīts cilpas pamatteksts.
    • summa=$((summa + i)) aprēķina summas jauno vērtību, pievienojot tai pašreizējo i vērtību. Tas saskaita veselus skaitļus no 1 līdz pašreizējai i vērtībai.
  4. Pēc katras iterācijas i++ palielina i vērtību par 1.
  5. Cilpa turpina darboties, līdz nosacījums i<=$N kļūst nepatiess (kad i kļūst lielāks par N).
  6. Kad cilpa ir pabeigta, skripts parāda veselu skaitļu summu no 1 līdz ievadītajam skaitlim N.

439

13) Izveidojiet skriptu, kas meklē konkrētu vārdu failā un skaita tā gadījumus.

Izveidojiet skripta nosaukumu vārdu_skaits.sh

#!/bin/bash

echo Ievadiet meklējamo vārdu:
lasīt mērķa_vārdu
echo Ievadiet faila nosaukumu:
lasīt faila nosaukumu
count=$(grep -o -w $mērķa_vārds $faila nosaukums | wc -l)
echo Vārds '$target_word' tiek parādīts $count reizes failā '$filename'.

Paskaidrojums:

  • atbalss Ievadiet meklējamo vārdu:: Šajā rindā tiek parādīts ziņojums, kurā lietotājam tiek lūgts failā ievadīt vārdu, kuru viņš vēlas meklēt.
  • lasīt mērķa_vārdu: šī rinda nolasa lietotāja sniegto ievadi un saglabā to mainīgajā ar nosaukumu target_word.
  • echo Ievadiet faila nosaukumu:: Šajā rindā tiek parādīts ziņojums, kurā lietotājam tiek lūgts ievadīt faila nosaukumu, kurā viņš vēlas meklēt.
  • lasīt faila nosaukumu: šī rinda nolasa lietotāja sniegto ievadi un saglabā to mainīgajā ar nosaukumu faila nosaukums.
  • count=$(grep -o -w $ mērķa_vārds $ faila nosaukums | wc -l): šī rinda veic galveno skripta darbu. Sadalīsim to sīkāk:
    • grep -o -w $mērķa_vārds $faila nosaukums: šī komandas daļa meklē mērķa_vārda gadījumus norādītajā faila nosaukumā. Opcijas -o un -w nodrošina, ka tiek skaitītas tikai veselu vārdu atbilstības.
    • |: Šī ir caurule, kas ņem iepriekšējās komandas izvadi un nosūta to kā ievadi nākamajai komandai.
    • wc -l: šī komandas daļa izmanto wc komandu, lai saskaitītu rindu skaitu ievadē. Opcija -l īpaši saskaita rindas.
    • Visa komanda aprēķina mērķa_vārda gadījumu skaitu failā un piešķir to skaitu mainīgajam count

441

14) Izskaidrojiet atšķirības starp standarta izvadi (stdout) un standarta kļūdu (stderr).

Galvenā atšķirība starp standarta izvadi (stdout) un standarta kļūdu (stderr) ir šāda:

  • Standarta izvade (stdout): Šī ir noklusējuma izvades straume, uz kuru tiek nosūtīta komandas parastā izvade. Pēc noklusējuma tas tiek parādīts terminālī. Varat to novirzīt uz failu, izmantojot>.
  • Standarta kļūda (stderr): Šī ir kļūdu ziņojumu un brīdinājumu izvades plūsma. Tas tiek parādīts arī terminālī pēc noklusējuma. Varat to novirzīt uz failu, izmantojot 2>.

15) Izskaidrojiet nosacījumu priekšrakstu jēdzienu čaulas skriptēšanā.

Nosacītie paziņojumi čaulas skriptēšanā ļauj mums pieņemt lēmumus un kontrolēt mūsu skripta plūsmu, pamatojoties uz noteiktiem nosacījumiem. Tie ļauj mūsu skriptam izpildīt dažādas komandu kopas atkarībā no tā, vai konkrētais nosacījums ir patiess vai nepatiess. Galvenie nosacījuma priekšraksti čaulas skriptēšanā ir priekšraksts if, priekšraksts elif (neobligāts) un priekšraksts else (neobligāts).

Tālāk ir norādīta nosacījuma priekšraksta pamatstruktūra čaulas skriptēšanā:

ja [nosacījums]; tad
# Komandas, kas jāizpilda, ja nosacījums ir patiess
elif [cits_nosacījums]; tad
# Komandas, kas jāizpilda, ja other_condition ir patiess (neobligāti)
cits
# Komandas, kas jāizpilda, ja neviens no nosacījumiem nav patiess (neobligāti)
būt

Paskaidrojums:

  • [ nosacījums ] = komanda, kas novērtē nosacījumu un atgriež patiesu (0) vai nepatiesu (kas nav nulle) izejas statusu.
  • then = Tas ir atslēgvārds, kas norāda, ka tam sekojošās komandas tiks izpildītas, ja nosacījums tiks novērtēts kā patiess.
  • elif = (saīsinājums no else if) Tā ir sadaļa, kas ļauj norādīt papildu nosacījumus, ko pārbaudīt.
  • else = tā ir sadaļa, kurā ir komandas, kuras tiks izpildītas, ja neviens no nosacījumiem nav patiess.
  • fi = Tas ir atslēgvārds, kas iezīmē nosacījumu bloka beigas.

16) Kā čaulas skriptā nolasāt rindiņas no faila?

Uz lasīt rindas no faila čaulas skriptā, mēs varam izmantot dažādas metodes, taču viena izplatīta pieeja ir izmantot while cilpu kopā ar lasīšanas komandu. Lūk, kā mēs to varam izdarīt:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Pārbaudiet, vai fails pastāv
if [ -e $fails ]; tad
kamēr IFS= lasīt -r līniju; darīt
echo Line lasāma: $line
# Šeit pievienojiet savu apstrādes loģiku
pabeigts <$file
cits
echo Fails nav atrasts: $file
būt

Paskaidrojums:

  1. #!/bin/bash: šī ir shebang rinda, kas norāda tulku (/bin/bash), kas jāizmanto skripta palaišanai.
  2. file=/home/jayeshkumar/jayesh.txt: šī rinda definē mainīgo failu un piešķir pilnu ceļu failam jayesh.txt direktorijā /home/jayeshkumar. Mainiet šo ceļu, lai tas atbilstu tā faila faktiskajam ceļam, kuru vēlaties lasīt.
  3. if [ -e $fails ]; then: šī rindiņa sāk if paziņojumu. Tā pārbauda, ​​vai pastāv mainīgā $file norādītais fails. Karogs -e pārbauda faila esamību.
  4. kamēr IFS= lasīt -r līniju; do: šī rindiņa uzsāk kamēr cilpu, kas nolasa rindas no faila.
    • IFS=: IFS (iekšējais lauka atdalītājs) ir iestatīts uz tukšu vērtību, lai saglabātu sākuma un beigu atstarpes.
    • read -r line: šī nolasa pašreizējo rindiņu no faila un saglabā to mainīgā rindā.
  5. echo Line read: $line: šī rinda drukā tās rindas saturu, kas tika nolasīta no faila. Mainīgais $line satur pašreizējās rindas saturu.
  6. # Pievienojiet savu apstrādes loģiku šeit: Šis ir viettura komentārs, kurā varat pievienot savu loģiku, lai apstrādātu katru rindiņu. Piemēram, varat analizēt līniju, iegūt informāciju vai veikt noteiktas darbības, pamatojoties uz saturu.
  7. done <$file: tas iezīmē while cilpas beigas. <$fails novirza faila saturu, kas jālasa cilpai.
  8. else: ja fails neeksistē (nosacījums if paziņojumā ir nepatiess), skripts izpilda kodu sadaļā else.
  9. echo Fails nav atrasts: $file: Šajā rindā tiek izdrukāts kļūdas ziņojums, kas norāda, ka norādītais fails nav atrasts.
  10. fi: šī rinda iezīmē if priekšraksta beigas.
lasīšanas fails

lasīšanas fails

Šeit mēs izmantojām ` pwd ` komandu, lai iegūtu pašreizējā direktorija ceļu.

17) Uzrakstiet čaulas skriptā funkciju, kas aprēķina dotā skaitļa faktoriālu.

Šeit ir skripts, kasaprēķināt faktoriāluno dotā numura.

#!/bin/bash
# Definējiet funkciju faktoriāla aprēķināšanai
aprēķināt_faktoriāls() {
skaits = 1 ASV dolārs
fakts=1
for ((i=1; i<=num; i++)); darīt
fakts=$((fakts * i))
darīts
atbalss $fakts
}
# Lūdziet lietotājam ievadīt numuru
echo Ievadiet numuru:
lasīt ievades_numurs
# Izsauciet funkciju Calculation_factorial ar ievades numuru
factorial_result=$(aprēķināt_faktoriālu $input_num)
# Parādīt koeficientu rezultātu
$input_num echo Faktoriāls ir: $factorial_result

Paskaidrojums:

  1. Skripts sākas ar shebang rindiņu #!/bin/bash, lai norādītu tulku.
  2. Calculation_factorial() ir definēts kā funkcija. Tam nepieciešams viens arguments, num, kas ir skaitlis, kuram jāaprēķina faktoriāls.
  3. Funkcijā fakts tiek inicializēts uz 1. Šis mainīgais saglabās faktoriālo rezultātu.
  4. For cilpa atkārtojas no 1 līdz norādītajam skaitlim (num). Katrā iterācijā tas reizina fakta pašreizējo vērtību ar cilpas indeksu i.
  5. Kad cilpa ir pabeigta, faktu mainīgais satur aprēķināto faktoriālu.
  6. Skripts liek lietotājam ievadīt numuru, izmantojot lasīšanu.
  7. Funkcija Calculation_factorial tiek izsaukta ar lietotāja norādīto numuru, un rezultāts tiek saglabāts mainīgajā factorial_result.
  8. Visbeidzot, skripts parāda aprēķināto faktoru rezultātu.
Faktoriāls

Faktoriāls

18) Kā čaulas skriptā apstrādājat tādus signālus kā Ctrl+C?

Apvalka skriptā varat apstrādāt tādus signālus kā Ctrl+C (pazīstams arī kā SIGINT), izmantojot komandu trap. Ctrl+C ģenerē SIGINT signālu, kad lietotājs to nospiež, lai pārtrauktu darbojošos skriptu vai programmu. Izmantojot trap komandu, varat norādīt darbības, kas jāveic, kad tiek saņemts konkrēts signāls. Tālāk ir norādīts, kā čaulas skriptā apstrādājat tādus signālus kā Ctrl+C.

#!/bin/bash
satīrīt() {
echo Script pārtraukts. Notiek tīrīšana…
# Šeit pievienojiet tīrīšanas darbības
izeja 1
}
# Iestatiet slazdu, lai izsauktu tīrīšanas funkciju, kad tiek saņemts Ctrl+C (SIGINT).
lamatas tīrīšana SIGINT
# Pārējais jūsu skripts
atbalss darbojas…
gulēt 10
atbalss Pabeigts.

Signālu apstrāde ir svarīga, lai padarītu skriptus stabilus un nodrošinātu, ka tie graciozi izturas pret negaidītiem pārtraukumiem. Varat pielāgot tīrīšanas funkciju, lai tā atbilstu jūsu īpašajām vajadzībām, piemēram, aizvērt failus, apturēt procesus vai reģistrēt informāciju pirms skripta iziešanas.

Paskaidrojums:

  1. #!/bin/bash: šī shebang rinda norāda tulku, kas jāizmanto skripta palaišanai.
  2. cleanup() { … }: tas definē funkciju ar nosaukumu cleanup. Šajā funkcijā varat iekļaut visas darbības, kas jāveic, kad skripts tiek pārtraukts, piemēram, failu aizvēršana, resursu atbrīvošana vai citu tīrīšanas uzdevumu veikšana.
  3. Trap tīrīšana SIGINT: Trap komanda tiek izmantota, lai iestatītu signālu apstrādātāju. Šajā gadījumā tas norāda, ka, saņemot SIGINT signālu (Ctrl+C), ir jāizpilda tīrīšanas funkcija.
  4. echo Darbojas…, miega režīms 10, echo Pabeigts.: šīs ir tikai komandu paraugi, lai simulētu skripta izpildi.

446

19) Izveidojiet skriptu, kas pārbauda un noņem teksta faila rindiņu dublikātus.

Šeit ir mūsu Linux scipt, kurā mēs noņemsim dublētās rindas no teksta faila.

#!/bin/bash
input_file=input.txt
output_file=output.txt
kārtot $input_file | uniq> $izejas_fails
echo Dublētas līnijas ir veiksmīgi noņemtas.

Paskaidrojums:

  1. Skripts sākas ar shebang (#!/bin/bash), kas norāda, ka skripts jāinterpretē, izmantojot Bash apvalku.
  2. Mainīgais ievades_fails ir iestatīts uz tā ievades faila nosaukumu, kurā ir rindiņu dublikāti (mainiet to uz faktisko ievades faila nosaukumu).
  3. Mainīgais output_file ir iestatīts uz tā izvades faila nosaukumu, kurā tiks noņemti dublikāti (mainiet to uz vēlamo izvades faila nosaukumu).
  4. Skripts izmanto kārtošanas komandu, lai kārtotu ievades faila rindas. Līniju kārtošana nodrošina dublēto rindu sagrupēšanu.
  5. Pēc tam sakārtotās rindas tiek nodotas komandai uniq, kas noņem secīgas dublētās rindas. Šī procesa izvade tiek novirzīta uz izvades failu.
  6. Pēc dublikātu noņemšanas skripts izdrukā veiksmes ziņojumu.
dublikāta rindas noņemšana

dublikāta rindas noņemšana

Šeit mēs izmantojam ` kaķis ` lai parādītu tekstu teksta failā.

20) Uzrakstiet skriptu, kas ģenerē drošu nejaušu paroli.

Šeit ir mūsu skripts drošas nejaušas paroles ģenerēšanai.

#!/bin/bash
# Funkcija, lai ģenerētu nejaušu paroli
gener_password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Izsauciet funkciju un saglabājiet ģenerēto paroli
parole=$(ģenerēt_paroli)
echo Ģenerētā parole: $password

Piezīme: Lietotājs var attiecīgi mainīt tur paroles garumu, aizstājot skaitli `12`.

Paskaidrojums:

  1. Skripts sākas ar shebang (#!/bin/bash), kas norāda, ka tas jāinterpretē, izmantojot Bash apvalku.
  2. Funkcija generate_password ir definēta, lai ģenerētu nejaušu paroli. Lūk, kā tas darbojas:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 sadala filtrētos nejaušos datus rindās, kuru platums ir 12 rakstzīmes.
    • Head -n 1 atlasa pirmo rindiņu, faktiski dodot mums nejaušu rakstzīmju secību, kuras garums ir 12.
  3. Paroles mainīgajam tiek piešķirts funkcijas generate_password izsaukšanas rezultāts.
  4. Visbeidzot, ģenerētā parole tiek parādīta, izmantojot echo.

448

21) Uzrakstiet čaulas skriptu, kas aprēķina visu direktorijā esošo failu kopējo lielumu.

Šeit ir čaulas skripts, lai aprēķinātu visu direktorijā esošo failu kopējo lielumu.

#!/bin/bash
directory=/ceļš/uz/jūsu/direktoriju
total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
echo Kopējais failu lielums $direktorijā: $total_size

Paskaidrojums:

  1. Skripts sākas ar #!/bin/bash shebang, norādot, ka tas jāinterpretē, izmantojot Bash apvalku.
  2. Direktorija mainīgais ir iestatīts uz tā direktorija ceļu, kuram vēlaties aprēķināt kopējo faila lielumu. Aizstāt /path/to/your/directory ar faktisko ceļu.
  3. Komanda du tiek izmantota, lai novērtētu faila vietas izmantošanu. Izmantotās iespējas ir:
    • -c: izveidojiet kopējo summu.
    • -s: parāda tikai norādītā direktorija kopējo izmēru.
    • -h: drukas izmēri cilvēkiem lasāmā formātā (piemēram, KB, MB, GB).
  4. Du izvade tiek nosūtīta uz grep total, lai filtrētu rindu, kurā ir kopējais izmērs.
  5. awk “{print $1}” tiek izmantots, lai no rindas izvilktu pirmo lauku (kopējo izmēru).
  6. Aprēķinātais kopējais izmērs tiek saglabāts mainīgajā total_size.
  7. Visbeidzot, skripts parāda kopējo izmēru, izmantojot atbalsi.
Kopējais failu lielums

Kopējais failu lielums

Šeit mēs izmantojām ` pwd ` komandu, lai redzētu pašreizējo direktorijas ceļu.

22) Izskaidrojiet atšķirību starp if un elif paziņojumiem čaulas skriptēšanā.

Funkcija `ja`Staiftement `elif` Paziņojums
Mērķis Izskaidrojiet atšķirību starp if un elif priekšrakstiem čaulas skriptēšanā. Nodrošina alternatīvus nosacījumus, lai pārbaudītu, kad sākotnējais nosacījums ir nepatiess.
lietojums Lietots sākotnējam stāvoklim. Izmanto pēc sākotnējā if nosacījuma, lai pārbaudītu papildu nosacījumus.
bloku skaits Var būt tikai viens ja bloks. Var būt vairāki elif bloki, bet tikai viens cits bloks (pēc izvēles).
Izpilde Izpilda koda bloku, kas saistīts ar priekšrakstu if, ja nosacījums ir patiess. Ja nosacījums ir nepatiess, tiek izpildīts cits bloks (ja tāds ir) (neobligāti). Pārbauda katru elif stāvokli kārtībā. Ja viens elif nosacījums ir patiess, tiek izpildīts atbilstošais koda bloks, un skripts iziet no visa nosacījuma bloka. Ja neviens no elif nosacījumiem nav patiess, tiek izpildīts else bloks (ja tāds ir).
Ligzdotas struktūras Var ligzdot citos if, elif vai else blokos. Nevar ligzdot citā elif blokā, bet var izmantot if vai else blokā.

Sapratīsim to ar piemēru.

#!/bin/bash
skaitlis=5
ja [ $skaitlis -gt 10 ]; tad
echo $skaitlis ir lielāks par 10
cits
echo $skaitlis nav lielāks par 10
būt
atbalss ———
ja [ $skaitlis -gt 10 ]; tad
echo $skaitlis ir lielāks par 10
elif [ $skaitlis -eq 10 ]; tad
echo $skaitlis ir vienāds ar 10
cits
echo $skaitlis ir mazāks par 10
būt

Paskaidrojums:

Šajā piemērā pirmais if bloks pārbauda, ​​vai skaitlis ir lielāks par 10. Ja nē, tas izdrukā ziņojumu, kas norāda, ka skaitlis nav lielāks par 10. Otrais bloks ar elif priekšrakstiem pārbauda vairākus nosacījumus secīgi, līdz viens no tiem ir patiess. Šajā gadījumā, tā kā skaitļa vērtība ir 5, izvade būs:

if_elif atšķirība

if_elif atšķirība

23) Kā izmantot cilpu while, lai atkārtoti izpildītu komandas?

Shell skriptēšanā tiek izmantota while cilpa, lai atkārtoti izpildītu komandu kopu, ja vien norādītais nosacījums ir patiess. Cilpa turpina izpildīt komandas, līdz nosacījums kļūst nepatiess.

Lūk, kāda laika cilpas pamata sintakse:

kamēr [nosacījums]; darīt
# Komandas, kas jāizpilda
darīts

Paskaidrojums:

  1. Cilpa 'while' sākas ar atslēgvārdu 'while', kam seko nosacījums kvadrātiekavās '[ ]'.
  2. Cilpas pamatteksts, kurā ir izpildāmās komandas, ir ietverts atslēgvārdos 'do' un 'done'.
  3. Cilpa vispirms pārbauda stāvokli. Ja nosacījums ir patiess, tiek izpildītas komandas cilpas pamattekstā. Kad cilpas pamatteksts ir izpildīts, nosacījums tiek pārbaudīts vēlreiz, un process atkārtojas, līdz nosacījums kļūst nepatiess.

Piemērs: Ja vēlamies izdrukāt skaitļus no 1 līdz 5

#!/bin/bash
skaitītājs=1
while [ $counter -le 5 ]; darīt
atbalss Skaitlis: $skaitītājs
skaitītājs=$((skaitītājs + 1))
darīts

Paskaidrojums:

  • Skaitītāja mainīgais ir iestatīts uz 1.
  • Cikla while pārbauda, ​​vai skaitītāja vērtība ir mazāka vai vienāda ar 5. Kamēr šis nosacījums ir patiess, cilpa turpina izpildīt.
  • Cilpas iekšpusē pašreizējā skaitītāja vērtība tiek izdrukāta, izmantojot atbalsi.
  • Skaitītājs tiek palielināts par 1, izmantojot izteiksmi $((skaitītājs + 1)).
kamēr cilpa

kamēr cilpa

24) Izveidojiet čaulas skriptu, kas atrod un uzskaita visus tukšos failus direktorijā.

Shell skripts, ko varat izmantot, lai atrastu un uzskaitītu visus tukšos failus direktorijā, izmantojot komandas 'find' un 'stat':

#!/bin/bash
directory=$1″
ja [ -z $direktorijs ]; tad
echo Lietojums: 0 USD
izeja 1
būt

ja [ ! -d $direktorijs ]; tad
echo Kļūda: “$ directory” nav derīgs direktorijs.
izeja 1
būt
echo Tukši faili $ direktorijā:
atrodiet $ directory -type f -tukšu

Paskaidrojums:

  1. ` #!/bin/bash `: To sauc par shebang, un tas liek operētājsistēmai izmantot Bash apvalku, lai interpretētu un izpildītu skriptu.
  2. ` directory=$1″ `: šī rinda piešķir pirmo komandrindas argumentu (apzīmēts ar $1) mainīgajam ` direktoriju `.
  3. ` ja [ -z $direktorijs ]; tad `: šī rinda sāk if priekšrakstu, kas pārbauda, ​​vai ` direktoriju ` mainīgais ir tukšs (-z pārbauda tukšu virkni).
  4. ` echo Lietojums: 0 USD `: ja direktorijs ir tukšs, šajā rindā tiek izdrukāts lietošanas ziņojums, kur ` 0 $ ` apzīmē skripta nosaukumu.
  5. ` izeja 1 `: šī rinda iziet no skripta ar izejas kodu ` 1 `, kas norāda uz kļūdu.
  6. ` būt `: šī rinda iezīmē ` beigas ja ` paziņojums.
  7. ` ja [ ! -d $direktorijs ]; tad `: Tas sāk citu if priekšrakstu, lai pārbaudītu, vai norādītais direktorijs eksistē (` -d ` pārbauda direktoriju).
  8. ` echo Kļūda: “$ directory” nav derīgs direktorijs. `: ja norādītais direktorijs neeksistē, šī rinda izdrukā kļūdas ziņojumu.
  9. ` izeja 1 `: iziet no skripta ar izejas kodu ` 1 `.
  10. ` būt `: atzīmē otrās beigas ja` paziņojums, apgalvojums.
  11. ` echo Tukši faili $ direktorijā: `: Ja viss līdz šim ir derīgs, šajā rindā tiek izdrukāts ziņojums, kas norāda, ka skripts norādītajā direktorijā uzskaitīs tukšus failus.
  12. ` atrodiet $ directory -type f -tukšu `: šajā rindā tiek izmantots ` atrast ` komandu, lai meklētu tukšus failus (` - tukšs `) parastie faili (` - tipa f `) norādītajā direktorijā. Pēc tam tiek uzskaitīti šie tukšie faili.
Tukšu failu atrašana

Tukšu failu atrašana

Piezīme : mums ir jānorāda direktorijs kā arguments, izpildot skriptu. Šeit mēs esam izmantojuši pašreizējā direktorija home/jayeshkumar/ ceļu

25) Kāds ir lasīšanas komandas mērķis čaulas skriptēšanā?

Lasīšanas komanda čaulas skriptēšanā ļauj skriptam lūgt jums informāciju. Tas ir tāpat kā tad, kad dators uzdod jums jautājumu un gaida jūsu atbildi. Tas ir noderīgi skriptiem, kuros kaut kas jāievada, vai gadījumos, kad skriptam ir jāstrādā ar informāciju no failiem. Lasīšanas komanda palīdz skriptam apstāties un gaidīt, ko rakstāt, un pēc tam tā var izmantot šo informāciju, lai skriptā veiktu vairāk darbību.

Lasīšanas komandas sintakse:

read variable_name>

Piemērs : Ja mēs vēlamies lietot vārdu kā ievadi no lietotāja, lai to izdrukātu.

#!/bin/bash
echo Lūdzu, ievadiet savu vārdu:
lasīt vārdu
echo Sveiks, $name!

453

lasīt nam

Rezumējot, lasīšanas komanda tiek izmantota, lai tvertu lietotāja ievadi vai datus no failiem čaulas skriptos, padarot skriptus interaktīvākus un daudzpusīgākus.

26) Uzrakstiet čaulas skriptu, kas pārvērš visus direktorijā esošo failu nosaukumus uz mazajiem burtiem.

Šeit ir čaulas skripts, kas pārvērš visus direktorijā esošo failu nosaukumus uz mazajiem burtiem.

#!/bin/bash
directory=$1″
ja [ -z $direktorijs ]; tad
echo Lietojums: 0 USD
izeja 1
būt

ja [ ! -d $direktorijs ]; tad

echo Kļūda: “$ directory” nav derīgs direktorijs.
izeja 1
būt

cd $direktorijs || izeja 1

failam *; darīt
if [ -f $fails ]; tad
newname=$(echo $file | tr ‘A-Z’ ‘a-z’)
[ $file != $newname ] && mv $fails $jaunsaukums
būt
darīts

Paskaidrojums:

  1. #!/bin/bash : Šis ir shebang, kas norāda, ka skripts ir jāinterpretē, izmantojot Bash apvalku.
  2. directory=$1″ : šī rinda piešķir pirmo komandrindas argumentu mainīgo direktorijam.
  3. ja [ -z $direktorijs ]; tad : šī rinda pārbauda, ​​vai direktorija mainīgais ir tukšs (palaižot skriptu, nav norādīts arguments).
  4. echo Lietojums: 0 USD : ja direktorijs ir tukšs, šajā rindā tiek izdrukāts lietošanas ziņojums ar skripta nosaukumu ($0).
  5. izeja 1 : šī rindiņa iziet no skripta ar izejas kodu 1, norādot, ka ir radusies kļūda.
  6. f i: tas iezīmē pirmā if paziņojuma beigas.
  7. ja [ ! -d $direktorijs ]; tad : šī rinda pārbauda, ​​vai norādītais direktorijs neeksistē (-d pārbauda direktoriju).
  8. echo Kļūda: “$ directory” nav derīgs direktorijs. : ja norādītais direktorijs nepastāv, šī rinda izdrukā kļūdas ziņojumu.
  9. izeja 1 : iziet no skripta ar izejas kodu 1.
  10. būt : atzīmē otrā if paziņojuma beigas.
  11. cd $direktorijs || izeja 1 : maina pašreizējo darba direktoriju uz norādīto direktoriju. Ja direktorija maiņa neizdodas (piem., neesošs direktorijs), skripts tiek izvadīts ar kļūdas kodu.
  12. failam *; darīt: es failam *; darīt: izveido cilpu, kas atkārtojas pār visiem pašreizējā direktorija vienumiem (* atbilst visiem failu nosaukumiem).
  13. if [ -f $fails ]; tad : pārbauda, ​​vai pašreizējās cilpas iterācijas vienums ir parasts fails (-f pārbauda parastu failu).
  14. newname=$(echo $file | tr ‘A-Z’ ‘a-z’) : pārvērš pašreizējo faila nosaukumu ($file) par mazajiem burtiem, izmantojot komandu tr, un saglabā rezultātu mainīgajā newname.
  15. [ $file != $newname ] && mv $fails $jaunsaukums : salīdzina sākotnējo faila nosaukumu ar jauno faila nosaukumu ar mazajiem burtiem. Ja tie atšķiras, tas pārdēvē failu, izmantojot komandu mv.
  16. būt : atzīmē iekšējā if paziņojuma beigas.
  17. darīts : atzīmē cilpas beigas.

454

Piezīme : mums ir jānorāda direktorijs kā arguments, izpildot skriptu. Šeit mēs esam izmantojuši pašreizējā direktorija home/jayeshkumar/test ceļu

27) Kā čaulas skriptā var izmantot aritmētiskās darbības?

Aritmētiskās darbības var veikt čaulas skriptā, izmantojot dažādas iebūvētās metodes. Apvalks nodrošina mehānismus vienkāršiem aritmētiskiem aprēķiniem, izmantojot aritmētisko izvēršanu, piemēram:

  1. Aritmētiskā izvēršana ($((…)))
  2. Izmantojot komandu expr
  3. Izmantojot Let Command

Šeit ir mūsu Shell skripts, kas izskaidro visas trīs aritmētisko darbību metodes.

#!/bin/bash
num1=10
num2=5

#Aritmētiskā izvēršana ($((…)))

rezultāts=$((num1 + num2))
atbalss Summa: $rezultāts

#Izmantojot komandu expr

summa=$(ekspr $num1 + $num2)
atbalss Summa: $ summa

#Izmantojot Let Command

lai summa = num1 + num2
atbalss Summa: $ summa

Paskaidrojums:

  1. #!/bin/bash : Šis ir shebang, kas norāda, ka skripts ir jāinterpretē, izmantojot Bash apvalku.
  2. `num1=10` un ` cipars2=5` : šīs rindas piešķir mainīgajiem ` vērtības 10 un 5 num1 ` un ` num2 `, attiecīgi.
  3. `#Aritmētiskā izvēršana ($((…)))` : Šis ir komentārs, kas norāda tās sadaļas sākumu, kurā parādīta aritmētiskā izvēršana.
  4. `rezultāts=$((num1 + num2))' : šajā rindā tiek izmantota aritmētiskā izvēršana, lai aprēķinātu ` summu num1 ` un ` num2 ` un saglabā rezultātu mapē ` rezultāts ` mainīgais.
  5. `atbalss Summa: $rezultāts` : šajā rindā tiek drukāta aprēķinātā summa, izmantojot vērtību, kas saglabāta laukā ` rezultāts ` mainīgais.
  6. #Izmantojot komandu expr : Šis ir komentārs, kas norāda tās sadaļas sākumu, kurā parādīta ` ekspr ` komanda aritmētiskām darbībām.
  7. `sum=$(ekspr $num1 + $num2)` : šajā rindā tiek izmantots ` ekspr ` komandu, lai aprēķinātu ` summu num1 ` un ` num2 ` un saglabā rezultātu mapē ` summa ` mainīgais. Ņemiet vērā, ka ` ekspr ` komanda prasa atstarpes ap operatoriem.
  8. `echo Sum: $sum` : šajā rindā tiek drukāta aprēķinātā summa, izmantojot vērtību, kas saglabāta laukā ` summa ` mainīgais.
  9. `#Izmantojot Let Command` : Šis ir komentārs, kas norāda tās sadaļas sākumu, kurā parādīta ` ļaut ` komanda aritmētiskām darbībām.
  10. 'atļaut summu = num1 + num2'. : šajā rindā tiek izmantots ` ļaut ` komandu, lai aprēķinātu ` summu num1 ` un ` num2 ` un piešķir rezultātu ` summa ` mainīgais. ` ļaut ` komanda neprasa atstarpes ap operatoriem.
  11. `echo Sum: $sum` : šajā rindā tiek drukāta aprēķinātā summa, izmantojot vērtību, kas saglabāta laukā ` summa ` mainīgais.
aritmētika

aritmētika

28) Izveidojiet skriptu, kas pārbauda, ​​vai tīkla resursdators ir sasniedzams.

Šeit ir vienkāršs čaulas skripts, kas izmanto ping komandu, lai pārbaudītu, vai tīkla resursdators ir sasniedzams:

#!/bin/bash
saimniekdators = 1 $
ja [ -z $host ]; tad
echo Lietojums: 0 USD
izeja 1
būt
ping -c 4 $host

ja [ $? -ekv 0]; tad
echo $host ir sasniedzams.
cits
echo $host nav sasniedzams.
būt

Paskaidrojums:

  1. Tas izmanto resursdatora nosaukumu vai IP adresi kā argumentu un pārbauda, ​​vai arguments ir sniegts.
  2. Ja nav norādīts neviens arguments, tas parāda lietošanas ziņojumu un iziet.
  3. Tas izmanto ping komandu ar opciju -c 4, lai nosūtītu četrus ICMP atbalss pieprasījumus norādītajam resursdatoram.
  4. Pēc ping komandas palaišanas tā pārbauda izejas statusu ($?). Ja izejas statuss ir 0, tas nozīmē, ka resursdators ir sasniedzams un skripts izdrukā veiksmes ziņojumu. Pretējā gadījumā tas izdrukā kļūdas ziņojumu.

456

Piezīme : mums ir jānorāda saimniekdatora nosaukums kā arguments, palaižot skriptu. Šeit mēs esam izmantojuši google.com

29) Uzrakstiet čaulas skriptu, lai atrastu lielāko masīva elementu:

Šeit ir čaulas skripts, lai atrastu lielāko elementu masīvā.

#!/bin/bash
# Deklarējiet masīvu
masīvs=(3 56 24 89 67)

# Inicializējiet mainīgo, lai saglabātu maksimālo vērtību, sākot ar pirmo elementu

max=${masīvs[0]}

# Atkārtojiet caur masīvu

par num in ${array[@]}; darīt

# Salīdziniet katru elementu ar pašreizējo maksimumu

if ((skaits> max)); tad
max=$num
būt
darīts

# Drukājiet maksimālo vērtību

echo Maksimālais elements masīvā ir: $max

Paskaidrojums:

  1. ` #!/bin/bash `: līnija shebang norāda, ka skripts ir jāinterpretē, izmantojot Bash čaulu.
  2. ` masīvs=(3 56 24 89 67) `: masīvs tiek deklarēts un inicializēts ar vērtībām.
  3. ` max=${masīvs[0]} `: “max” tiek inicializēts ar pirmo masīva elementu.
  4. ` par num in ${masīvs[@]}; darīt `: cilpa 'for' tiek izmantota, lai atkārtotu masīva elementus.
  5. ` if ((skaits> max)); tad `: paziņojums “if” pārbauda, ​​vai pašreizējais elements “num” ir lielāks par pašreizējo maksimālo “max”.
  6. ` max=$num`: If`num “ir lielāks par “max”, “max” tiek atjaunināts ar vērtību num.
  7. ` darīts `: “for” cilpa ir aizvērta.
  8. ` echo Maksimālais elements masīvā ir: $max `: Visbeidzot, skripts izdrukā maksimālo masīvā atrasto vērtību.
461

lielākais skaitlis

30) Uzrakstiet skriptu, lai aprēķinātu masīva elementu summu.

#!/bin/bash

# Deklarējiet masīvu

masīvs=(1 65 22 19 94)

# Inicializējiet mainīgo, lai saglabātu summu

summa=0

# Atkārtojiet masīvu un pievienojiet katru elementu summai

par num in ${array[@]}; darīt
am=$((am + am))
darīts

# Izdrukājiet summu

echo Elementu summa masīvā ir: $summa

Paskaidrojums:

` #!/bin/bash `: līnija shebang norāda, ka skripts ir jāinterpretē, izmantojot Bash čaulu.

` masīvs=(1 65 22 19 94) `: masīvs tiek deklarēts un inicializēts ar vērtībām.

` summa=0 `:` summa ` tiek inicializēts uz nulli, lai saglabātu elementu summu.

` par num in ${masīvs[@]}; darīt `: A ` priekš ` cilpa tiek izmantota, lai atkārtotu masīva elementus.

` am=$((am + am)) `: cilpas iekšpusē katrs elements ` uz viena ` tiek pievienots ` summa ` mainīgais.

` darīts `: ` priekš ` cilpa ir aizvērta.

`echo Elementu summa masīvā ir: $sum`: Visbeidzot, skripts izdrukā visu masīva elementu summu.

462

Elementu summa

Uzziniet vairāk par Shell skriptiem

Secinājums

Mēs visi gudrinieki zinām, ka čaulas skripts ir ļoti noderīgs, lai palielinātu darba produktivitāti, kā arī ietaupītu laiku. Tātad, šajā rakstā mēs esam aplūkojuši 30 ļoti noderīgi un visvairāk conman čaulas skriptu piemēri . Mēs ceram, ka šī pilnīga rokasgrāmata par čaulas skriptu piemēru palīdzēs jums saprast visu par čaulas skriptiem.




echo Pirmais arguments:
echo Otrais arguments:

Ja palaižam skriptu ar `.example.sh hello_1 hello_2`, tas izvadīs:

cli argumenti

cli argumenti

11) Kā izmantot cilpu for, lai atkārtotu vērtību sarakstu?

Izveidojiet skripta nosaukumu “example.sh”.

#!/bin/bash

augļi = (ābolu banānu ķiršu datums)
augļiem ${fruits[@]}; darīt
echo Pašreizējais auglis: $auglis
darīts

Paskaidrojums:

Rinda `fruits=` izveido masīvu ar nosaukumu augļi ar četriem elementiem: ābols, banāns, ķirsis un datums.

  • augļiem ${fruits[@]}; do: šī rinda sāk for cilpu. Lūk, ko nozīmē katra daļa:
  • augļiem: tas deklarē cilpas mainīgo, ko sauc par augļiem. Katrā cilpas iterācijā augļi saglabās pašreizējā augļu masīva elementa vērtību.
  • ${fruits[@]}: šis ir masīva paplašinājums, kas paņem visus augļu masīva elementus. ${…} sintakse nodrošina, ka katrs elements tiek uzskatīts par atsevišķu vienumu.
  • do: šis atslēgvārds iezīmē cilpas pamatteksta sākumu.
  • echo Pašreizējais auglis: $fruit: cilpas iekšpusē šī rinda izmanto echo komandu, lai parādītu cilpas mainīgā augļa pašreizējo vērtību. Tas izdrukā ziņojumu, piemēram, Pašreizējais auglis: ābols katram auglim masīvā.
  • darīts: šis atslēgvārds apzīmē cilpas pamatteksta beigas. Tas norāda skriptam, ka cilpa ir pabeigta.
cilpai

cilpai

12) Uzrakstiet čaulas skriptu, kas aprēķina veselu skaitļu summu no 1 līdz N, izmantojot cilpu.

Izveidojiet skripta nosaukumu “example.sh”.

#!/bin/bash

echo Ievadiet skaitli (N):
lasīt N
summa=0
for ((i=1; i<=$N; i++ )); darīt
summa=$((summa + i))
darīts
echo Veselu skaitļu summa no 1 līdz $N ir: $sum

Paskaidrojums:
Skripts sākas ar lūgumu ievadīt skaitli (N), izmantojot lasīšanu. Šis skaitlis noteiks, cik reižu cilpa darbojas.

  1. Mainīgā summa tiek inicializēta uz 0. Šis mainīgais sekos veselu skaitļu summai.
  2. For cilpa sākas ar for (( i=1; i<=$N; i++ )). Šo cilpas struktūru izmanto, lai noteiktu darbību kopu atkārtotu noteiktu skaitu reižu, šajā gadījumā no 1 līdz N vērtībai.
  3. Cilpas ietvaros notiek šādas lietas:
    • i=1 iestata cilpas mainīgo i uz 1 katras iterācijas sākumā.
    • Cilpas nosacījums i<=$N pārbauda, ​​vai i joprojām ir mazāks vai vienāds ar doto skaitli N.
    • Ja nosacījums ir patiess, tiek izpildīts cilpas pamatteksts.
    • summa=$((summa + i)) aprēķina summas jauno vērtību, pievienojot tai pašreizējo i vērtību. Tas saskaita veselus skaitļus no 1 līdz pašreizējai i vērtībai.
  4. Pēc katras iterācijas i++ palielina i vērtību par 1.
  5. Cilpa turpina darboties, līdz nosacījums i<=$N kļūst nepatiess (kad i kļūst lielāks par N).
  6. Kad cilpa ir pabeigta, skripts parāda veselu skaitļu summu no 1 līdz ievadītajam skaitlim N.

439

13) Izveidojiet skriptu, kas meklē konkrētu vārdu failā un skaita tā gadījumus.

Izveidojiet skripta nosaukumu vārdu_skaits.sh

#!/bin/bash

echo Ievadiet meklējamo vārdu:
lasīt mērķa_vārdu
echo Ievadiet faila nosaukumu:
lasīt faila nosaukumu
count=$(grep -o -w $mērķa_vārds $faila nosaukums | wc -l)
echo Vārds '$target_word' tiek parādīts $count reizes failā '$filename'.

Paskaidrojums:

  • atbalss Ievadiet meklējamo vārdu:: Šajā rindā tiek parādīts ziņojums, kurā lietotājam tiek lūgts failā ievadīt vārdu, kuru viņš vēlas meklēt.
  • lasīt mērķa_vārdu: šī rinda nolasa lietotāja sniegto ievadi un saglabā to mainīgajā ar nosaukumu target_word.
  • echo Ievadiet faila nosaukumu:: Šajā rindā tiek parādīts ziņojums, kurā lietotājam tiek lūgts ievadīt faila nosaukumu, kurā viņš vēlas meklēt.
  • lasīt faila nosaukumu: šī rinda nolasa lietotāja sniegto ievadi un saglabā to mainīgajā ar nosaukumu faila nosaukums.
  • count=$(grep -o -w $ mērķa_vārds $ faila nosaukums | wc -l): šī rinda veic galveno skripta darbu. Sadalīsim to sīkāk:
    • grep -o -w $mērķa_vārds $faila nosaukums: šī komandas daļa meklē mērķa_vārda gadījumus norādītajā faila nosaukumā. Opcijas -o un -w nodrošina, ka tiek skaitītas tikai veselu vārdu atbilstības.
    • |: Šī ir caurule, kas ņem iepriekšējās komandas izvadi un nosūta to kā ievadi nākamajai komandai.
    • wc -l: šī komandas daļa izmanto wc komandu, lai saskaitītu rindu skaitu ievadē. Opcija -l īpaši saskaita rindas.
    • Visa komanda aprēķina mērķa_vārda gadījumu skaitu failā un piešķir to skaitu mainīgajam count

441

14) Izskaidrojiet atšķirības starp standarta izvadi (stdout) un standarta kļūdu (stderr).

Galvenā atšķirība starp standarta izvadi (stdout) un standarta kļūdu (stderr) ir šāda:

  • Standarta izvade (stdout): Šī ir noklusējuma izvades straume, uz kuru tiek nosūtīta komandas parastā izvade. Pēc noklusējuma tas tiek parādīts terminālī. Varat to novirzīt uz failu, izmantojot>.
  • Standarta kļūda (stderr): Šī ir kļūdu ziņojumu un brīdinājumu izvades plūsma. Tas tiek parādīts arī terminālī pēc noklusējuma. Varat to novirzīt uz failu, izmantojot 2>.

15) Izskaidrojiet nosacījumu priekšrakstu jēdzienu čaulas skriptēšanā.

Nosacītie paziņojumi čaulas skriptēšanā ļauj mums pieņemt lēmumus un kontrolēt mūsu skripta plūsmu, pamatojoties uz noteiktiem nosacījumiem. Tie ļauj mūsu skriptam izpildīt dažādas komandu kopas atkarībā no tā, vai konkrētais nosacījums ir patiess vai nepatiess. Galvenie nosacījuma priekšraksti čaulas skriptēšanā ir priekšraksts if, priekšraksts elif (neobligāts) un priekšraksts else (neobligāts).

Tālāk ir norādīta nosacījuma priekšraksta pamatstruktūra čaulas skriptēšanā:

programmatūras testēšana un veidi

ja [nosacījums]; tad
# Komandas, kas jāizpilda, ja nosacījums ir patiess
elif [cits_nosacījums]; tad
# Komandas, kas jāizpilda, ja other_condition ir patiess (neobligāti)
cits
# Komandas, kas jāizpilda, ja neviens no nosacījumiem nav patiess (neobligāti)
būt

Paskaidrojums:

  • [ nosacījums ] = komanda, kas novērtē nosacījumu un atgriež patiesu (0) vai nepatiesu (kas nav nulle) izejas statusu.
  • then = Tas ir atslēgvārds, kas norāda, ka tam sekojošās komandas tiks izpildītas, ja nosacījums tiks novērtēts kā patiess.
  • elif = (saīsinājums no else if) Tā ir sadaļa, kas ļauj norādīt papildu nosacījumus, ko pārbaudīt.
  • else = tā ir sadaļa, kurā ir komandas, kuras tiks izpildītas, ja neviens no nosacījumiem nav patiess.
  • fi = Tas ir atslēgvārds, kas iezīmē nosacījumu bloka beigas.

16) Kā čaulas skriptā nolasāt rindiņas no faila?

Uz lasīt rindas no faila čaulas skriptā, mēs varam izmantot dažādas metodes, taču viena izplatīta pieeja ir izmantot while cilpu kopā ar lasīšanas komandu. Lūk, kā mēs to varam izdarīt:

#!/bin/bash
file=/home/jayeshkumar/jayesh.txt
# Pārbaudiet, vai fails pastāv
if [ -e $fails ]; tad
kamēr IFS= lasīt -r līniju; darīt
echo Line lasāma: $line
# Šeit pievienojiet savu apstrādes loģiku
pabeigts <$file
cits
echo Fails nav atrasts: $file
būt

Paskaidrojums:

  1. #!/bin/bash: šī ir shebang rinda, kas norāda tulku (/bin/bash), kas jāizmanto skripta palaišanai.
  2. file=/home/jayeshkumar/jayesh.txt: šī rinda definē mainīgo failu un piešķir pilnu ceļu failam jayesh.txt direktorijā /home/jayeshkumar. Mainiet šo ceļu, lai tas atbilstu tā faila faktiskajam ceļam, kuru vēlaties lasīt.
  3. if [ -e $fails ]; then: šī rindiņa sāk if paziņojumu. Tā pārbauda, ​​vai pastāv mainīgā $file norādītais fails. Karogs -e pārbauda faila esamību.
  4. kamēr IFS= lasīt -r līniju; do: šī rindiņa uzsāk kamēr cilpu, kas nolasa rindas no faila.
    • IFS=: IFS (iekšējais lauka atdalītājs) ir iestatīts uz tukšu vērtību, lai saglabātu sākuma un beigu atstarpes.
    • read -r line: šī nolasa pašreizējo rindiņu no faila un saglabā to mainīgā rindā.
  5. echo Line read: $line: šī rinda drukā tās rindas saturu, kas tika nolasīta no faila. Mainīgais $line satur pašreizējās rindas saturu.
  6. # Pievienojiet savu apstrādes loģiku šeit: Šis ir viettura komentārs, kurā varat pievienot savu loģiku, lai apstrādātu katru rindiņu. Piemēram, varat analizēt līniju, iegūt informāciju vai veikt noteiktas darbības, pamatojoties uz saturu.
  7. done <$file: tas iezīmē while cilpas beigas. <$fails novirza faila saturu, kas jālasa cilpai.
  8. else: ja fails neeksistē (nosacījums if paziņojumā ir nepatiess), skripts izpilda kodu sadaļā else.
  9. echo Fails nav atrasts: $file: Šajā rindā tiek izdrukāts kļūdas ziņojums, kas norāda, ka norādītais fails nav atrasts.
  10. fi: šī rinda iezīmē if priekšraksta beigas.
lasīšanas fails

lasīšanas fails

Šeit mēs izmantojām ` pwd ` komandu, lai iegūtu pašreizējā direktorija ceļu.

17) Uzrakstiet čaulas skriptā funkciju, kas aprēķina dotā skaitļa faktoriālu.

Šeit ir skripts, kasaprēķināt faktoriāluno dotā numura.

#!/bin/bash
# Definējiet funkciju faktoriāla aprēķināšanai
aprēķināt_faktoriāls() {
skaits = 1 ASV dolārs
fakts=1
for ((i=1; i<=num; i++)); darīt
fakts=$((fakts * i))
darīts
atbalss $fakts
}
# Lūdziet lietotājam ievadīt numuru
echo Ievadiet numuru:
lasīt ievades_numurs
# Izsauciet funkciju Calculation_factorial ar ievades numuru
factorial_result=$(aprēķināt_faktoriālu $input_num)
# Parādīt koeficientu rezultātu
$input_num echo Faktoriāls ir: $factorial_result

Paskaidrojums:

  1. Skripts sākas ar shebang rindiņu #!/bin/bash, lai norādītu tulku.
  2. Calculation_factorial() ir definēts kā funkcija. Tam nepieciešams viens arguments, num, kas ir skaitlis, kuram jāaprēķina faktoriāls.
  3. Funkcijā fakts tiek inicializēts uz 1. Šis mainīgais saglabās faktoriālo rezultātu.
  4. For cilpa atkārtojas no 1 līdz norādītajam skaitlim (num). Katrā iterācijā tas reizina fakta pašreizējo vērtību ar cilpas indeksu i.
  5. Kad cilpa ir pabeigta, faktu mainīgais satur aprēķināto faktoriālu.
  6. Skripts liek lietotājam ievadīt numuru, izmantojot lasīšanu.
  7. Funkcija Calculation_factorial tiek izsaukta ar lietotāja norādīto numuru, un rezultāts tiek saglabāts mainīgajā factorial_result.
  8. Visbeidzot, skripts parāda aprēķināto faktoru rezultātu.
Faktoriāls

Faktoriāls

18) Kā čaulas skriptā apstrādājat tādus signālus kā Ctrl+C?

Apvalka skriptā varat apstrādāt tādus signālus kā Ctrl+C (pazīstams arī kā SIGINT), izmantojot komandu trap. Ctrl+C ģenerē SIGINT signālu, kad lietotājs to nospiež, lai pārtrauktu darbojošos skriptu vai programmu. Izmantojot trap komandu, varat norādīt darbības, kas jāveic, kad tiek saņemts konkrēts signāls. Tālāk ir norādīts, kā čaulas skriptā apstrādājat tādus signālus kā Ctrl+C.

#!/bin/bash
satīrīt() {
echo Script pārtraukts. Notiek tīrīšana…
# Šeit pievienojiet tīrīšanas darbības
izeja 1
}
# Iestatiet slazdu, lai izsauktu tīrīšanas funkciju, kad tiek saņemts Ctrl+C (SIGINT).
lamatas tīrīšana SIGINT
# Pārējais jūsu skripts
atbalss darbojas…
gulēt 10
atbalss Pabeigts.

Signālu apstrāde ir svarīga, lai padarītu skriptus stabilus un nodrošinātu, ka tie graciozi izturas pret negaidītiem pārtraukumiem. Varat pielāgot tīrīšanas funkciju, lai tā atbilstu jūsu īpašajām vajadzībām, piemēram, aizvērt failus, apturēt procesus vai reģistrēt informāciju pirms skripta iziešanas.

Paskaidrojums:

  1. #!/bin/bash: šī shebang rinda norāda tulku, kas jāizmanto skripta palaišanai.
  2. cleanup() { … }: tas definē funkciju ar nosaukumu cleanup. Šajā funkcijā varat iekļaut visas darbības, kas jāveic, kad skripts tiek pārtraukts, piemēram, failu aizvēršana, resursu atbrīvošana vai citu tīrīšanas uzdevumu veikšana.
  3. Trap tīrīšana SIGINT: Trap komanda tiek izmantota, lai iestatītu signālu apstrādātāju. Šajā gadījumā tas norāda, ka, saņemot SIGINT signālu (Ctrl+C), ir jāizpilda tīrīšanas funkcija.
  4. echo Darbojas…, miega režīms 10, echo Pabeigts.: šīs ir tikai komandu paraugi, lai simulētu skripta izpildi.

446

19) Izveidojiet skriptu, kas pārbauda un noņem teksta faila rindiņu dublikātus.

Šeit ir mūsu Linux scipt, kurā mēs noņemsim dublētās rindas no teksta faila.

#!/bin/bash
input_file=input.txt
output_file=output.txt
kārtot $input_file | uniq> $izejas_fails
echo Dublētas līnijas ir veiksmīgi noņemtas.

Paskaidrojums:

  1. Skripts sākas ar shebang (#!/bin/bash), kas norāda, ka skripts jāinterpretē, izmantojot Bash apvalku.
  2. Mainīgais ievades_fails ir iestatīts uz tā ievades faila nosaukumu, kurā ir rindiņu dublikāti (mainiet to uz faktisko ievades faila nosaukumu).
  3. Mainīgais output_file ir iestatīts uz tā izvades faila nosaukumu, kurā tiks noņemti dublikāti (mainiet to uz vēlamo izvades faila nosaukumu).
  4. Skripts izmanto kārtošanas komandu, lai kārtotu ievades faila rindas. Līniju kārtošana nodrošina dublēto rindu sagrupēšanu.
  5. Pēc tam sakārtotās rindas tiek nodotas komandai uniq, kas noņem secīgas dublētās rindas. Šī procesa izvade tiek novirzīta uz izvades failu.
  6. Pēc dublikātu noņemšanas skripts izdrukā veiksmes ziņojumu.
dublikāta rindas noņemšana

dublikāta rindas noņemšana

Šeit mēs izmantojam ` kaķis ` lai parādītu tekstu teksta failā.

20) Uzrakstiet skriptu, kas ģenerē drošu nejaušu paroli.

Šeit ir mūsu skripts drošas nejaušas paroles ģenerēšanai.

#!/bin/bash
# Funkcija, lai ģenerētu nejaušu paroli
gener_password() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Izsauciet funkciju un saglabājiet ģenerēto paroli
parole=$(ģenerēt_paroli)
echo Ģenerētā parole: $password

Piezīme: Lietotājs var attiecīgi mainīt tur paroles garumu, aizstājot skaitli `12`.

Paskaidrojums:

  1. Skripts sākas ar shebang (#!/bin/bash), kas norāda, ka tas jāinterpretē, izmantojot Bash apvalku.
  2. Funkcija generate_password ir definēta, lai ģenerētu nejaušu paroli. Lūk, kā tas darbojas:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 sadala filtrētos nejaušos datus rindās, kuru platums ir 12 rakstzīmes.
    • Head -n 1 atlasa pirmo rindiņu, faktiski dodot mums nejaušu rakstzīmju secību, kuras garums ir 12.
  3. Paroles mainīgajam tiek piešķirts funkcijas generate_password izsaukšanas rezultāts.
  4. Visbeidzot, ģenerētā parole tiek parādīta, izmantojot echo.

448

21) Uzrakstiet čaulas skriptu, kas aprēķina visu direktorijā esošo failu kopējo lielumu.

Šeit ir čaulas skripts, lai aprēķinātu visu direktorijā esošo failu kopējo lielumu.

#!/bin/bash
directory=/ceļš/uz/jūsu/direktoriju
total_size=$(du -csh $directory | grep total | awk ‘{print }’)
echo Kopējais failu lielums $direktorijā: $total_size

Paskaidrojums:

  1. Skripts sākas ar #!/bin/bash shebang, norādot, ka tas jāinterpretē, izmantojot Bash apvalku.
  2. Direktorija mainīgais ir iestatīts uz tā direktorija ceļu, kuram vēlaties aprēķināt kopējo faila lielumu. Aizstāt /path/to/your/directory ar faktisko ceļu.
  3. Komanda du tiek izmantota, lai novērtētu faila vietas izmantošanu. Izmantotās iespējas ir:
    • -c: izveidojiet kopējo summu.
    • -s: parāda tikai norādītā direktorija kopējo izmēru.
    • -h: drukas izmēri cilvēkiem lasāmā formātā (piemēram, KB, MB, GB).
  4. Du izvade tiek nosūtīta uz grep total, lai filtrētu rindu, kurā ir kopējais izmērs.
  5. awk “{print }” tiek izmantots, lai no rindas izvilktu pirmo lauku (kopējo izmēru).
  6. Aprēķinātais kopējais izmērs tiek saglabāts mainīgajā total_size.
  7. Visbeidzot, skripts parāda kopējo izmēru, izmantojot atbalsi.
Kopējais failu lielums

Kopējais failu lielums

Šeit mēs izmantojām ` pwd ` komandu, lai redzētu pašreizējo direktorijas ceļu.

22) Izskaidrojiet atšķirību starp if un elif paziņojumiem čaulas skriptēšanā.

Funkcija `ja`Staiftement `elif` Paziņojums
Mērķis Izskaidrojiet atšķirību starp if un elif priekšrakstiem čaulas skriptēšanā. Nodrošina alternatīvus nosacījumus, lai pārbaudītu, kad sākotnējais nosacījums ir nepatiess.
lietojums Lietots sākotnējam stāvoklim. Izmanto pēc sākotnējā if nosacījuma, lai pārbaudītu papildu nosacījumus.
bloku skaits Var būt tikai viens ja bloks. Var būt vairāki elif bloki, bet tikai viens cits bloks (pēc izvēles).
Izpilde Izpilda koda bloku, kas saistīts ar priekšrakstu if, ja nosacījums ir patiess. Ja nosacījums ir nepatiess, tiek izpildīts cits bloks (ja tāds ir) (neobligāti). Pārbauda katru elif stāvokli kārtībā. Ja viens elif nosacījums ir patiess, tiek izpildīts atbilstošais koda bloks, un skripts iziet no visa nosacījuma bloka. Ja neviens no elif nosacījumiem nav patiess, tiek izpildīts else bloks (ja tāds ir).
Ligzdotas struktūras Var ligzdot citos if, elif vai else blokos. Nevar ligzdot citā elif blokā, bet var izmantot if vai else blokā.

Sapratīsim to ar piemēru.

#!/bin/bash
skaitlis=5
ja [ $skaitlis -gt 10 ]; tad
echo $skaitlis ir lielāks par 10
cits
echo $skaitlis nav lielāks par 10
būt
atbalss ———
ja [ $skaitlis -gt 10 ]; tad
echo $skaitlis ir lielāks par 10
elif [ $skaitlis -eq 10 ]; tad
echo $skaitlis ir vienāds ar 10
cits
echo $skaitlis ir mazāks par 10
būt

Paskaidrojums:

Šajā piemērā pirmais if bloks pārbauda, ​​vai skaitlis ir lielāks par 10. Ja nē, tas izdrukā ziņojumu, kas norāda, ka skaitlis nav lielāks par 10. Otrais bloks ar elif priekšrakstiem pārbauda vairākus nosacījumus secīgi, līdz viens no tiem ir patiess. Šajā gadījumā, tā kā skaitļa vērtība ir 5, izvade būs:

if_elif atšķirība

if_elif atšķirība

23) Kā izmantot cilpu while, lai atkārtoti izpildītu komandas?

Shell skriptēšanā tiek izmantota while cilpa, lai atkārtoti izpildītu komandu kopu, ja vien norādītais nosacījums ir patiess. Cilpa turpina izpildīt komandas, līdz nosacījums kļūst nepatiess.

Lūk, kāda laika cilpas pamata sintakse:

kamēr [nosacījums]; darīt
# Komandas, kas jāizpilda
darīts

Paskaidrojums:

  1. Cilpa 'while' sākas ar atslēgvārdu 'while', kam seko nosacījums kvadrātiekavās '[ ]'.
  2. Cilpas pamatteksts, kurā ir izpildāmās komandas, ir ietverts atslēgvārdos 'do' un 'done'.
  3. Cilpa vispirms pārbauda stāvokli. Ja nosacījums ir patiess, tiek izpildītas komandas cilpas pamattekstā. Kad cilpas pamatteksts ir izpildīts, nosacījums tiek pārbaudīts vēlreiz, un process atkārtojas, līdz nosacījums kļūst nepatiess.

Piemērs: Ja vēlamies izdrukāt skaitļus no 1 līdz 5

#!/bin/bash
skaitītājs=1
while [ $counter -le 5 ]; darīt
atbalss Skaitlis: $skaitītājs
skaitītājs=$((skaitītājs + 1))
darīts

Paskaidrojums:

  • Skaitītāja mainīgais ir iestatīts uz 1.
  • Cikla while pārbauda, ​​vai skaitītāja vērtība ir mazāka vai vienāda ar 5. Kamēr šis nosacījums ir patiess, cilpa turpina izpildīt.
  • Cilpas iekšpusē pašreizējā skaitītāja vērtība tiek izdrukāta, izmantojot atbalsi.
  • Skaitītājs tiek palielināts par 1, izmantojot izteiksmi $((skaitītājs + 1)).
kamēr cilpa

kamēr cilpa

24) Izveidojiet čaulas skriptu, kas atrod un uzskaita visus tukšos failus direktorijā.

Shell skripts, ko varat izmantot, lai atrastu un uzskaitītu visus tukšos failus direktorijā, izmantojot komandas 'find' un 'stat':

#!/bin/bash
directory=″
ja [ -z $direktorijs ]; tad
echo Lietojums: 0 USD
izeja 1
būt

ja [ ! -d $direktorijs ]; tad
echo Kļūda: “$ directory” nav derīgs direktorijs.
izeja 1
būt
echo Tukši faili $ direktorijā:
atrodiet $ directory -type f -tukšu

Paskaidrojums:

  1. ` #!/bin/bash `: To sauc par shebang, un tas liek operētājsistēmai izmantot Bash apvalku, lai interpretētu un izpildītu skriptu.
  2. ` directory=″ `: šī rinda piešķir pirmo komandrindas argumentu (apzīmēts ar ) mainīgajam ` direktoriju `.
  3. ` ja [ -z $direktorijs ]; tad `: šī rinda sāk if priekšrakstu, kas pārbauda, ​​vai ` direktoriju ` mainīgais ir tukšs (-z pārbauda tukšu virkni).
  4. ` echo Lietojums: 0 USD `: ja direktorijs ir tukšs, šajā rindā tiek izdrukāts lietošanas ziņojums, kur ` 0 $ ` apzīmē skripta nosaukumu.
  5. ` izeja 1 `: šī rinda iziet no skripta ar izejas kodu ` 1 `, kas norāda uz kļūdu.
  6. ` būt `: šī rinda iezīmē ` beigas ja ` paziņojums.
  7. ` ja [ ! -d $direktorijs ]; tad `: Tas sāk citu if priekšrakstu, lai pārbaudītu, vai norādītais direktorijs eksistē (` -d ` pārbauda direktoriju).
  8. ` echo Kļūda: “$ directory” nav derīgs direktorijs. `: ja norādītais direktorijs neeksistē, šī rinda izdrukā kļūdas ziņojumu.
  9. ` izeja 1 `: iziet no skripta ar izejas kodu ` 1 `.
  10. ` būt `: atzīmē otrās beigas ja` paziņojums, apgalvojums.
  11. ` echo Tukši faili $ direktorijā: `: Ja viss līdz šim ir derīgs, šajā rindā tiek izdrukāts ziņojums, kas norāda, ka skripts norādītajā direktorijā uzskaitīs tukšus failus.
  12. ` atrodiet $ directory -type f -tukšu `: šajā rindā tiek izmantots ` atrast ` komandu, lai meklētu tukšus failus (` - tukšs `) parastie faili (` - tipa f `) norādītajā direktorijā. Pēc tam tiek uzskaitīti šie tukšie faili.
Tukšu failu atrašana

Tukšu failu atrašana

Piezīme : mums ir jānorāda direktorijs kā arguments, izpildot skriptu. Šeit mēs esam izmantojuši pašreizējā direktorija home/jayeshkumar/ ceļu

25) Kāds ir lasīšanas komandas mērķis čaulas skriptēšanā?

Lasīšanas komanda čaulas skriptēšanā ļauj skriptam lūgt jums informāciju. Tas ir tāpat kā tad, kad dators uzdod jums jautājumu un gaida jūsu atbildi. Tas ir noderīgi skriptiem, kuros kaut kas jāievada, vai gadījumos, kad skriptam ir jāstrādā ar informāciju no failiem. Lasīšanas komanda palīdz skriptam apstāties un gaidīt, ko rakstāt, un pēc tam tā var izmantot šo informāciju, lai skriptā veiktu vairāk darbību.

Lasīšanas komandas sintakse:

read variable_name>

Piemērs : Ja mēs vēlamies lietot vārdu kā ievadi no lietotāja, lai to izdrukātu.

#!/bin/bash
echo Lūdzu, ievadiet savu vārdu:
lasīt vārdu
echo Sveiks, $name!

453

lasīt nam

Rezumējot, lasīšanas komanda tiek izmantota, lai tvertu lietotāja ievadi vai datus no failiem čaulas skriptos, padarot skriptus interaktīvākus un daudzpusīgākus.

26) Uzrakstiet čaulas skriptu, kas pārvērš visus direktorijā esošo failu nosaukumus uz mazajiem burtiem.

Šeit ir čaulas skripts, kas pārvērš visus direktorijā esošo failu nosaukumus uz mazajiem burtiem.

#!/bin/bash
directory=″
ja [ -z $direktorijs ]; tad
echo Lietojums: 0 USD
izeja 1
būt

ja [ ! -d $direktorijs ]; tad

echo Kļūda: “$ directory” nav derīgs direktorijs.
izeja 1
būt

cd $direktorijs || izeja 1

lidinās css

failam *; darīt
if [ -f $fails ]; tad
newname=$(echo $file | tr ‘A-Z’ ‘a-z’)
[ $file != $newname ] && mv $fails $jaunsaukums
būt
darīts

Paskaidrojums:

  1. #!/bin/bash : Šis ir shebang, kas norāda, ka skripts ir jāinterpretē, izmantojot Bash apvalku.
  2. directory=″ : šī rinda piešķir pirmo komandrindas argumentu mainīgo direktorijam.
  3. ja [ -z $direktorijs ]; tad : šī rinda pārbauda, ​​vai direktorija mainīgais ir tukšs (palaižot skriptu, nav norādīts arguments).
  4. echo Lietojums: 0 USD : ja direktorijs ir tukšs, šajā rindā tiek izdrukāts lietošanas ziņojums ar skripta nosaukumu (

    Visiem Linux izplatījumiem čaulas skripts ir kā burvju nūjiņa, kas automatizē procesu, ietaupa lietotāju laiku un palielina produktivitāti. Šī skriptēšanas apmācība iepazīstinās jūs ar 25 plus skriptu piemēriem.

    Bet pirms mēs pārejam pie tēmas čaulas skriptēšana piemērus, sapratīsim čaulas skriptu un čaulas skriptu faktiskos lietošanas gadījumus.

    Kas ir Shell skripts?

    Nu, apvalks ir a CLI ( komandrindas tulks ), kas darbojas teksta logā, kurā lietotāji var pārvaldīt un izpildīt čaulas komandas. No otras puses, Linux sistēmā izpildāmo komandu kopas rakstīšanas process. Fails, kas ietver šādas instrukcijas, tiek saukts par bash skriptu.

    Shell skriptu lietojumi

    Tālāk ir norādīti daži bieži sastopami Shell skripta lietojumi:

    • Uzdevumu automatizācija - To var izmantot, lai automatizētu atkārtotus uzdevumus, piemēram, regulārus dublējumus un programmatūras instalēšanas uzdevumus.
    • Pielāgošana - Var izmantot čaulas skriptus, lai izstrādātu komandrindas vidi un viegli veiktu uzdevumu atbilstoši vajadzībām.
    • Failu pārvaldība - Apvalka skriptus var izmantot arī, lai pārvaldītu un manipulētu ar failiem un direktorijiem, piemēram, failu pārvietošanai, kopēšanai, pārdēvēšanai vai dzēšanai.

    Shell skriptu piemēri operētājsistēmā Linux

    1) Ko norāda shebang (#!) čaulas skripta sākumā?

    The shebang (#!) skripta sākumā norāda tulku, kas jāizmanto skripta izpildei. Tas norāda sistēmai, kuram apvalkam vai tulkam jāinterpretē skripta komandas.

    Piemēram: Pieņemsim, ka mums ir skripts ar nosaukumu myscript.sh rakstīts Bash čaulā:

    Shebang

    Shebang

    Šajā piemērā:

    • #!/bin/bash skripta sākumā norāda, ka skripts jāinterpretē, izmantojot Bash apvalku.
    • Echo komandas tiek izmantotas, lai drukātu ziņojumus uz termināli.

    2) Kā palaist čaulas skriptu no komandrindas?

    Lai palaistu čaulas skriptu no komandrindas, mums ir jāveic šādas darbības:

    • Pārliecinieties, vai skripta failam ir izpildāmās atļaujas, izmantojot chmod komanda :
    chmod +x myscript.sh>
    • Izpildiet skriptu, izmantojot tā faila nosaukumu:
    ./myscript.sh>

    Šeit jums ir jāaizstāj myscript.sh ar savu skripta nosaukumu.

    3) Uzrakstiet čaulas skriptu, kas terminālī izdrukā techcodeview.com.

    Izveidojiet skripta nosaukumu `myscript.sh` (mēs izmantojam ` jo ` redaktors, jūs varat izvēlēties jebkuru redaktoru)

    vim myscript.sh>

    #!/bin/bash
    # Šis skripts terminālī izdrukā techcodeview.com
    echo techcodeview.com

    drukas nosaukums

    drukas nosaukums

    Mēs padarām savu skriptu izpildāmu, izmantojot `chmod +x`, pēc tam izpildām ar `./myscipt.sh` un iegūstam vēlamo izvadi techcodeview.com.

    4) Izskaidrojiet echo komandas mērķi čaulas skriptēšanā.

    The atbalss komanda tiek izmantots, lai terminālī parādītu tekstu vai mainīgos. To parasti izmanto ziņojumu, mainīgo vērtību drukāšanai un programmas izvades ģenerēšanai.

    434

    atbalss komanda

    Šajā piemērā mēs esam tieši izpildījuši 'echo' terminālī, jo tā darbojas tāpat čaulas skriptā.

    5) Kā čaulas skriptā mainīgajam var piešķirt vērtību?

    Mainīgajiem tiek piešķirtas vērtības, izmantojot piešķiršanas operatoru =.

    Piemēram:

    #!/bin/bash
    # Vērtības piešķiršana mainīgajam
    vārds = Džeišs
    vecums = 21
    atbalss $name $vecums

    Paskaidrojums:

    • Nosaukuma mainīgajam ir piešķirta vērtība Jayesh.
    • Vecuma mainīgajam tiek piešķirta vērtība 21.
    • echo tiek izmantots drukāšanai, un `$name` `$age` tiek izmantots, lai izsauktu mainīgajos saglabāto vērtību.

    435

    6) Uzrakstiet čaulas skriptu, kas izmanto lietotāja vārdu un sveicina viņu.

    Izveidojiet skripta nosaukumu “example.sh”.

    #!/bin/bash
    # Jautājiet lietotājam viņa vārdu
    echo Kā tevi sauc?
    lasīt vārdu
    # Sveiciniet lietotāju
    echo Sveiks, $name! Prieks iepazīties.

    Paskaidrojums:

    • #!/bin/bash: šī ir shebang līnija. Tas liek sistēmai izmantot Bash tulku, lai izpildītu skriptu.
    • # Pajautājiet lietotājam viņa vārdu: Šis ir komentārs. Tas nodrošina kontekstu par gaidāmo kodu. Tulks komentārus ignorē.
    • echo Kāds ir jūsu vārds?: Echo komanda tiek izmantota, lai terminālī parādītu tekstu dubultpēdiņās.
    • lasīšanas nosaukums: lasīšanas komanda gaida, līdz lietotājs ievadīs tekstu, un saglabā to mainīgā nosaukumā.
    • echo Sveiks, $name! Prieks iepazīties.: šajā rindā tiek izmantota komanda echo, lai izdrukātu sveiciena ziņojumu, kurā ir iekļauta nosaukuma mainīgā vērtība, kas tika savākta no lietotāja ievades.

    436

    7) Kā čaulas skriptam pievieno komentārus?

    Komentāri čaulas skriptēšanā tiek izmantoti, lai sniegtu koda paskaidrojumus vai kontekstu. Tulks tos ignorē, un tie ir paredzēti tikai cilvēkiem, kas lasa skriptu. Varat pievienot komentārus, izmantojot simbolu #.

    #!/bin/bash
    # Šis ir komentārs, kas izskaidro skripta mērķi
    echo gfg

    8) Izveidojiet čaulas skriptu, kas pārbauda, ​​vai fails pastāv pašreizējā direktorijā.

    Šis ir skripts, kas pārbauda, ​​vai pašreizējā direktorijā pastāv fails ar nosaukumu example.txt:

    #!/bin/bash
    file=example.txt
    # Pārbaudiet, vai fails pastāv
    if [ -e $fails ]; tad
    echo Fails pastāv: $file
    cits
    echo Fails nav atrasts: $file
    būt

    Paskaidrojums:

    1. #!/bin/bash: šī ir shebang rinda, kas norāda tulku (/bin/bash), kas jāizmanto skripta palaišanai.
    2. file=example.txt: šī rinda definē mainīgo failu un piešķir tam vērtību example.txt. Varat to aizstāt ar tā faila nosaukumu, kuru vēlaties pārbaudīt.
    3. if [ -e $fails ]; then: šī rindiņa sāk if paziņojumu. Nosacījums [ -e $file] pārbauda, ​​vai fails, kas norādīts ar faila mainīgā vērtību, pastāv. Karodziņu -e izmanto, lai pārbaudītu faila esamību.
    4. echo Fails pastāv: $file: ja nosacījums ir patiess (t.i., fails eksistē), šajā rindā tiek izdrukāts ziņojums, kas norāda, ka fails eksistē, kopā ar faila nosaukumu.
    5. else: ja nosacījums ir nepatiess (t.i., fails neeksistē), skripts izpilda kodu zem zara else.
    6. echo Fails nav atrasts: $file: šajā rindā tiek izdrukāts kļūdas ziņojums, kas norāda, ka norādītais fails nav atrasts, kā arī faila nosaukums.
    7. fi: šī rinda iezīmē if priekšraksta beigas.
    Faila atrašana

    Faila atrašana

    9) Kāda ir atšķirība starp vienpēdiņām (') un dubultpēdiņām () čaulas skriptēšanā?

    Vienpēdiņas (') un dubultpēdas () tiek izmantotas, lai iekļautu virknes čaulas skriptos, taču tām ir atšķirīga darbība:

    • Atsevišķas pēdiņas: viss, kas atrodas starp pēdiņām, tiek uzskatīts par burtisku virkni. Mainīgo nosaukumi un lielākā daļa īpašo rakstzīmju netiek izvērsti.
    • Dubultās pēdiņas: tiek izvērsti mainīgie un noteiktas speciālās rakstzīmes dubultpēdiņās. Saturs ir pakļauts mainīgai aizstāšanai un komandu aizstāšanai.

    #!/bin/bash

    abcd=Sveiki
    echo ‘$abcd’ # Izvade: $abcd
    echo $abcd # Izvade: Sveiki

    10) Kā čaulas skriptā var izmantot komandrindas argumentus?

    Komandrindas argumenti ir vērtības, kas tiek nodrošinātas skriptam, kad tas tiek izpildīts. Tiem var piekļūt skriptā, izmantojot īpašus mainīgos, piemēram, $1, $2 utt., kur $1 apzīmē pirmo argumentu, $2 apzīmē otro argumentu un tā tālāk.

    Piemēram: Ja mūsu skripta nosaukums ir “example.sh”.

    #!/bin/bash

    echo Skripta nosaukums: $0
    echo Pirmais arguments: $1
    echo Otrais arguments: $2

    Ja palaižam skriptu ar `.example.sh hello_1 hello_2`, tas izvadīs:

    cli argumenti

    cli argumenti

    11) Kā izmantot cilpu for, lai atkārtotu vērtību sarakstu?

    Izveidojiet skripta nosaukumu “example.sh”.

    #!/bin/bash

    augļi = (ābolu banānu ķiršu datums)
    augļiem ${fruits[@]}; darīt
    echo Pašreizējais auglis: $auglis
    darīts

    Paskaidrojums:

    Rinda `fruits=` izveido masīvu ar nosaukumu augļi ar četriem elementiem: ābols, banāns, ķirsis un datums.

    • augļiem ${fruits[@]}; do: šī rinda sāk for cilpu. Lūk, ko nozīmē katra daļa:
    • augļiem: tas deklarē cilpas mainīgo, ko sauc par augļiem. Katrā cilpas iterācijā augļi saglabās pašreizējā augļu masīva elementa vērtību.
    • ${fruits[@]}: šis ir masīva paplašinājums, kas paņem visus augļu masīva elementus. ${…} sintakse nodrošina, ka katrs elements tiek uzskatīts par atsevišķu vienumu.
    • do: šis atslēgvārds iezīmē cilpas pamatteksta sākumu.
    • echo Pašreizējais auglis: $fruit: cilpas iekšpusē šī rinda izmanto echo komandu, lai parādītu cilpas mainīgā augļa pašreizējo vērtību. Tas izdrukā ziņojumu, piemēram, Pašreizējais auglis: ābols katram auglim masīvā.
    • darīts: šis atslēgvārds apzīmē cilpas pamatteksta beigas. Tas norāda skriptam, ka cilpa ir pabeigta.
    cilpai

    cilpai

    12) Uzrakstiet čaulas skriptu, kas aprēķina veselu skaitļu summu no 1 līdz N, izmantojot cilpu.

    Izveidojiet skripta nosaukumu “example.sh”.

    #!/bin/bash

    echo Ievadiet skaitli (N):
    lasīt N
    summa=0
    for ((i=1; i<=$N; i++ )); darīt
    summa=$((summa + i))
    darīts
    echo Veselu skaitļu summa no 1 līdz $N ir: $sum

    Paskaidrojums:
    Skripts sākas ar lūgumu ievadīt skaitli (N), izmantojot lasīšanu. Šis skaitlis noteiks, cik reižu cilpa darbojas.

    1. Mainīgā summa tiek inicializēta uz 0. Šis mainīgais sekos veselu skaitļu summai.
    2. For cilpa sākas ar for (( i=1; i<=$N; i++ )). Šo cilpas struktūru izmanto, lai noteiktu darbību kopu atkārtotu noteiktu skaitu reižu, šajā gadījumā no 1 līdz N vērtībai.
    3. Cilpas ietvaros notiek šādas lietas:
      • i=1 iestata cilpas mainīgo i uz 1 katras iterācijas sākumā.
      • Cilpas nosacījums i<=$N pārbauda, ​​vai i joprojām ir mazāks vai vienāds ar doto skaitli N.
      • Ja nosacījums ir patiess, tiek izpildīts cilpas pamatteksts.
      • summa=$((summa + i)) aprēķina summas jauno vērtību, pievienojot tai pašreizējo i vērtību. Tas saskaita veselus skaitļus no 1 līdz pašreizējai i vērtībai.
    4. Pēc katras iterācijas i++ palielina i vērtību par 1.
    5. Cilpa turpina darboties, līdz nosacījums i<=$N kļūst nepatiess (kad i kļūst lielāks par N).
    6. Kad cilpa ir pabeigta, skripts parāda veselu skaitļu summu no 1 līdz ievadītajam skaitlim N.

    439

    13) Izveidojiet skriptu, kas meklē konkrētu vārdu failā un skaita tā gadījumus.

    Izveidojiet skripta nosaukumu vārdu_skaits.sh

    #!/bin/bash

    echo Ievadiet meklējamo vārdu:
    lasīt mērķa_vārdu
    echo Ievadiet faila nosaukumu:
    lasīt faila nosaukumu
    count=$(grep -o -w $mērķa_vārds $faila nosaukums | wc -l)
    echo Vārds '$target_word' tiek parādīts $count reizes failā '$filename'.

    Paskaidrojums:

    • atbalss Ievadiet meklējamo vārdu:: Šajā rindā tiek parādīts ziņojums, kurā lietotājam tiek lūgts failā ievadīt vārdu, kuru viņš vēlas meklēt.
    • lasīt mērķa_vārdu: šī rinda nolasa lietotāja sniegto ievadi un saglabā to mainīgajā ar nosaukumu target_word.
    • echo Ievadiet faila nosaukumu:: Šajā rindā tiek parādīts ziņojums, kurā lietotājam tiek lūgts ievadīt faila nosaukumu, kurā viņš vēlas meklēt.
    • lasīt faila nosaukumu: šī rinda nolasa lietotāja sniegto ievadi un saglabā to mainīgajā ar nosaukumu faila nosaukums.
    • count=$(grep -o -w $ mērķa_vārds $ faila nosaukums | wc -l): šī rinda veic galveno skripta darbu. Sadalīsim to sīkāk:
      • grep -o -w $mērķa_vārds $faila nosaukums: šī komandas daļa meklē mērķa_vārda gadījumus norādītajā faila nosaukumā. Opcijas -o un -w nodrošina, ka tiek skaitītas tikai veselu vārdu atbilstības.
      • |: Šī ir caurule, kas ņem iepriekšējās komandas izvadi un nosūta to kā ievadi nākamajai komandai.
      • wc -l: šī komandas daļa izmanto wc komandu, lai saskaitītu rindu skaitu ievadē. Opcija -l īpaši saskaita rindas.
      • Visa komanda aprēķina mērķa_vārda gadījumu skaitu failā un piešķir to skaitu mainīgajam count

    441

    14) Izskaidrojiet atšķirības starp standarta izvadi (stdout) un standarta kļūdu (stderr).

    Galvenā atšķirība starp standarta izvadi (stdout) un standarta kļūdu (stderr) ir šāda:

    • Standarta izvade (stdout): Šī ir noklusējuma izvades straume, uz kuru tiek nosūtīta komandas parastā izvade. Pēc noklusējuma tas tiek parādīts terminālī. Varat to novirzīt uz failu, izmantojot>.
    • Standarta kļūda (stderr): Šī ir kļūdu ziņojumu un brīdinājumu izvades plūsma. Tas tiek parādīts arī terminālī pēc noklusējuma. Varat to novirzīt uz failu, izmantojot 2>.

    15) Izskaidrojiet nosacījumu priekšrakstu jēdzienu čaulas skriptēšanā.

    Nosacītie paziņojumi čaulas skriptēšanā ļauj mums pieņemt lēmumus un kontrolēt mūsu skripta plūsmu, pamatojoties uz noteiktiem nosacījumiem. Tie ļauj mūsu skriptam izpildīt dažādas komandu kopas atkarībā no tā, vai konkrētais nosacījums ir patiess vai nepatiess. Galvenie nosacījuma priekšraksti čaulas skriptēšanā ir priekšraksts if, priekšraksts elif (neobligāts) un priekšraksts else (neobligāts).

    Tālāk ir norādīta nosacījuma priekšraksta pamatstruktūra čaulas skriptēšanā:

    ja [nosacījums]; tad
    # Komandas, kas jāizpilda, ja nosacījums ir patiess
    elif [cits_nosacījums]; tad
    # Komandas, kas jāizpilda, ja other_condition ir patiess (neobligāti)
    cits
    # Komandas, kas jāizpilda, ja neviens no nosacījumiem nav patiess (neobligāti)
    būt

    Paskaidrojums:

    • [ nosacījums ] = komanda, kas novērtē nosacījumu un atgriež patiesu (0) vai nepatiesu (kas nav nulle) izejas statusu.
    • then = Tas ir atslēgvārds, kas norāda, ka tam sekojošās komandas tiks izpildītas, ja nosacījums tiks novērtēts kā patiess.
    • elif = (saīsinājums no else if) Tā ir sadaļa, kas ļauj norādīt papildu nosacījumus, ko pārbaudīt.
    • else = tā ir sadaļa, kurā ir komandas, kuras tiks izpildītas, ja neviens no nosacījumiem nav patiess.
    • fi = Tas ir atslēgvārds, kas iezīmē nosacījumu bloka beigas.

    16) Kā čaulas skriptā nolasāt rindiņas no faila?

    Uz lasīt rindas no faila čaulas skriptā, mēs varam izmantot dažādas metodes, taču viena izplatīta pieeja ir izmantot while cilpu kopā ar lasīšanas komandu. Lūk, kā mēs to varam izdarīt:

    #!/bin/bash
    file=/home/jayeshkumar/jayesh.txt
    # Pārbaudiet, vai fails pastāv
    if [ -e $fails ]; tad
    kamēr IFS= lasīt -r līniju; darīt
    echo Line lasāma: $line
    # Šeit pievienojiet savu apstrādes loģiku
    pabeigts <$file
    cits
    echo Fails nav atrasts: $file
    būt

    Paskaidrojums:

    1. #!/bin/bash: šī ir shebang rinda, kas norāda tulku (/bin/bash), kas jāizmanto skripta palaišanai.
    2. file=/home/jayeshkumar/jayesh.txt: šī rinda definē mainīgo failu un piešķir pilnu ceļu failam jayesh.txt direktorijā /home/jayeshkumar. Mainiet šo ceļu, lai tas atbilstu tā faila faktiskajam ceļam, kuru vēlaties lasīt.
    3. if [ -e $fails ]; then: šī rindiņa sāk if paziņojumu. Tā pārbauda, ​​vai pastāv mainīgā $file norādītais fails. Karogs -e pārbauda faila esamību.
    4. kamēr IFS= lasīt -r līniju; do: šī rindiņa uzsāk kamēr cilpu, kas nolasa rindas no faila.
      • IFS=: IFS (iekšējais lauka atdalītājs) ir iestatīts uz tukšu vērtību, lai saglabātu sākuma un beigu atstarpes.
      • read -r line: šī nolasa pašreizējo rindiņu no faila un saglabā to mainīgā rindā.
    5. echo Line read: $line: šī rinda drukā tās rindas saturu, kas tika nolasīta no faila. Mainīgais $line satur pašreizējās rindas saturu.
    6. # Pievienojiet savu apstrādes loģiku šeit: Šis ir viettura komentārs, kurā varat pievienot savu loģiku, lai apstrādātu katru rindiņu. Piemēram, varat analizēt līniju, iegūt informāciju vai veikt noteiktas darbības, pamatojoties uz saturu.
    7. done <$file: tas iezīmē while cilpas beigas. <$fails novirza faila saturu, kas jālasa cilpai.
    8. else: ja fails neeksistē (nosacījums if paziņojumā ir nepatiess), skripts izpilda kodu sadaļā else.
    9. echo Fails nav atrasts: $file: Šajā rindā tiek izdrukāts kļūdas ziņojums, kas norāda, ka norādītais fails nav atrasts.
    10. fi: šī rinda iezīmē if priekšraksta beigas.
    lasīšanas fails

    lasīšanas fails

    Šeit mēs izmantojām ` pwd ` komandu, lai iegūtu pašreizējā direktorija ceļu.

    17) Uzrakstiet čaulas skriptā funkciju, kas aprēķina dotā skaitļa faktoriālu.

    Šeit ir skripts, kasaprēķināt faktoriāluno dotā numura.

    #!/bin/bash
    # Definējiet funkciju faktoriāla aprēķināšanai
    aprēķināt_faktoriāls() {
    skaits = 1 ASV dolārs
    fakts=1
    for ((i=1; i<=num; i++)); darīt
    fakts=$((fakts * i))
    darīts
    atbalss $fakts
    }
    # Lūdziet lietotājam ievadīt numuru
    echo Ievadiet numuru:
    lasīt ievades_numurs
    # Izsauciet funkciju Calculation_factorial ar ievades numuru
    factorial_result=$(aprēķināt_faktoriālu $input_num)
    # Parādīt koeficientu rezultātu
    $input_num echo Faktoriāls ir: $factorial_result

    Paskaidrojums:

    1. Skripts sākas ar shebang rindiņu #!/bin/bash, lai norādītu tulku.
    2. Calculation_factorial() ir definēts kā funkcija. Tam nepieciešams viens arguments, num, kas ir skaitlis, kuram jāaprēķina faktoriāls.
    3. Funkcijā fakts tiek inicializēts uz 1. Šis mainīgais saglabās faktoriālo rezultātu.
    4. For cilpa atkārtojas no 1 līdz norādītajam skaitlim (num). Katrā iterācijā tas reizina fakta pašreizējo vērtību ar cilpas indeksu i.
    5. Kad cilpa ir pabeigta, faktu mainīgais satur aprēķināto faktoriālu.
    6. Skripts liek lietotājam ievadīt numuru, izmantojot lasīšanu.
    7. Funkcija Calculation_factorial tiek izsaukta ar lietotāja norādīto numuru, un rezultāts tiek saglabāts mainīgajā factorial_result.
    8. Visbeidzot, skripts parāda aprēķināto faktoru rezultātu.
    Faktoriāls

    Faktoriāls

    18) Kā čaulas skriptā apstrādājat tādus signālus kā Ctrl+C?

    Apvalka skriptā varat apstrādāt tādus signālus kā Ctrl+C (pazīstams arī kā SIGINT), izmantojot komandu trap. Ctrl+C ģenerē SIGINT signālu, kad lietotājs to nospiež, lai pārtrauktu darbojošos skriptu vai programmu. Izmantojot trap komandu, varat norādīt darbības, kas jāveic, kad tiek saņemts konkrēts signāls. Tālāk ir norādīts, kā čaulas skriptā apstrādājat tādus signālus kā Ctrl+C.

    #!/bin/bash
    satīrīt() {
    echo Script pārtraukts. Notiek tīrīšana…
    # Šeit pievienojiet tīrīšanas darbības
    izeja 1
    }
    # Iestatiet slazdu, lai izsauktu tīrīšanas funkciju, kad tiek saņemts Ctrl+C (SIGINT).
    lamatas tīrīšana SIGINT
    # Pārējais jūsu skripts
    atbalss darbojas…
    gulēt 10
    atbalss Pabeigts.

    Signālu apstrāde ir svarīga, lai padarītu skriptus stabilus un nodrošinātu, ka tie graciozi izturas pret negaidītiem pārtraukumiem. Varat pielāgot tīrīšanas funkciju, lai tā atbilstu jūsu īpašajām vajadzībām, piemēram, aizvērt failus, apturēt procesus vai reģistrēt informāciju pirms skripta iziešanas.

    Paskaidrojums:

    1. #!/bin/bash: šī shebang rinda norāda tulku, kas jāizmanto skripta palaišanai.
    2. cleanup() { … }: tas definē funkciju ar nosaukumu cleanup. Šajā funkcijā varat iekļaut visas darbības, kas jāveic, kad skripts tiek pārtraukts, piemēram, failu aizvēršana, resursu atbrīvošana vai citu tīrīšanas uzdevumu veikšana.
    3. Trap tīrīšana SIGINT: Trap komanda tiek izmantota, lai iestatītu signālu apstrādātāju. Šajā gadījumā tas norāda, ka, saņemot SIGINT signālu (Ctrl+C), ir jāizpilda tīrīšanas funkcija.
    4. echo Darbojas…, miega režīms 10, echo Pabeigts.: šīs ir tikai komandu paraugi, lai simulētu skripta izpildi.

    446

    19) Izveidojiet skriptu, kas pārbauda un noņem teksta faila rindiņu dublikātus.

    Šeit ir mūsu Linux scipt, kurā mēs noņemsim dublētās rindas no teksta faila.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    kārtot $input_file | uniq> $izejas_fails
    echo Dublētas līnijas ir veiksmīgi noņemtas.

    Paskaidrojums:

    1. Skripts sākas ar shebang (#!/bin/bash), kas norāda, ka skripts jāinterpretē, izmantojot Bash apvalku.
    2. Mainīgais ievades_fails ir iestatīts uz tā ievades faila nosaukumu, kurā ir rindiņu dublikāti (mainiet to uz faktisko ievades faila nosaukumu).
    3. Mainīgais output_file ir iestatīts uz tā izvades faila nosaukumu, kurā tiks noņemti dublikāti (mainiet to uz vēlamo izvades faila nosaukumu).
    4. Skripts izmanto kārtošanas komandu, lai kārtotu ievades faila rindas. Līniju kārtošana nodrošina dublēto rindu sagrupēšanu.
    5. Pēc tam sakārtotās rindas tiek nodotas komandai uniq, kas noņem secīgas dublētās rindas. Šī procesa izvade tiek novirzīta uz izvades failu.
    6. Pēc dublikātu noņemšanas skripts izdrukā veiksmes ziņojumu.
    dublikāta rindas noņemšana

    dublikāta rindas noņemšana

    Šeit mēs izmantojam ` kaķis ` lai parādītu tekstu teksta failā.

    20) Uzrakstiet skriptu, kas ģenerē drošu nejaušu paroli.

    Šeit ir mūsu skripts drošas nejaušas paroles ģenerēšanai.

    #!/bin/bash
    # Funkcija, lai ģenerētu nejaušu paroli
    gener_password() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Izsauciet funkciju un saglabājiet ģenerēto paroli
    parole=$(ģenerēt_paroli)
    echo Ģenerētā parole: $password

    Piezīme: Lietotājs var attiecīgi mainīt tur paroles garumu, aizstājot skaitli `12`.

    Paskaidrojums:

    1. Skripts sākas ar shebang (#!/bin/bash), kas norāda, ka tas jāinterpretē, izmantojot Bash apvalku.
    2. Funkcija generate_password ir definēta, lai ģenerētu nejaušu paroli. Lūk, kā tas darbojas:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 sadala filtrētos nejaušos datus rindās, kuru platums ir 12 rakstzīmes.
      • Head -n 1 atlasa pirmo rindiņu, faktiski dodot mums nejaušu rakstzīmju secību, kuras garums ir 12.
    3. Paroles mainīgajam tiek piešķirts funkcijas generate_password izsaukšanas rezultāts.
    4. Visbeidzot, ģenerētā parole tiek parādīta, izmantojot echo.

    448

    21) Uzrakstiet čaulas skriptu, kas aprēķina visu direktorijā esošo failu kopējo lielumu.

    Šeit ir čaulas skripts, lai aprēķinātu visu direktorijā esošo failu kopējo lielumu.

    #!/bin/bash
    directory=/ceļš/uz/jūsu/direktoriju
    total_size=$(du -csh $directory | grep total | awk ‘{print $1}’)
    echo Kopējais failu lielums $direktorijā: $total_size

    Paskaidrojums:

    1. Skripts sākas ar #!/bin/bash shebang, norādot, ka tas jāinterpretē, izmantojot Bash apvalku.
    2. Direktorija mainīgais ir iestatīts uz tā direktorija ceļu, kuram vēlaties aprēķināt kopējo faila lielumu. Aizstāt /path/to/your/directory ar faktisko ceļu.
    3. Komanda du tiek izmantota, lai novērtētu faila vietas izmantošanu. Izmantotās iespējas ir:
      • -c: izveidojiet kopējo summu.
      • -s: parāda tikai norādītā direktorija kopējo izmēru.
      • -h: drukas izmēri cilvēkiem lasāmā formātā (piemēram, KB, MB, GB).
    4. Du izvade tiek nosūtīta uz grep total, lai filtrētu rindu, kurā ir kopējais izmērs.
    5. awk “{print $1}” tiek izmantots, lai no rindas izvilktu pirmo lauku (kopējo izmēru).
    6. Aprēķinātais kopējais izmērs tiek saglabāts mainīgajā total_size.
    7. Visbeidzot, skripts parāda kopējo izmēru, izmantojot atbalsi.
    Kopējais failu lielums

    Kopējais failu lielums

    Šeit mēs izmantojām ` pwd ` komandu, lai redzētu pašreizējo direktorijas ceļu.

    22) Izskaidrojiet atšķirību starp if un elif paziņojumiem čaulas skriptēšanā.

    Funkcija `ja`Staiftement `elif` Paziņojums
    Mērķis Izskaidrojiet atšķirību starp if un elif priekšrakstiem čaulas skriptēšanā. Nodrošina alternatīvus nosacījumus, lai pārbaudītu, kad sākotnējais nosacījums ir nepatiess.
    lietojums Lietots sākotnējam stāvoklim. Izmanto pēc sākotnējā if nosacījuma, lai pārbaudītu papildu nosacījumus.
    bloku skaits Var būt tikai viens ja bloks. Var būt vairāki elif bloki, bet tikai viens cits bloks (pēc izvēles).
    Izpilde Izpilda koda bloku, kas saistīts ar priekšrakstu if, ja nosacījums ir patiess. Ja nosacījums ir nepatiess, tiek izpildīts cits bloks (ja tāds ir) (neobligāti). Pārbauda katru elif stāvokli kārtībā. Ja viens elif nosacījums ir patiess, tiek izpildīts atbilstošais koda bloks, un skripts iziet no visa nosacījuma bloka. Ja neviens no elif nosacījumiem nav patiess, tiek izpildīts else bloks (ja tāds ir).
    Ligzdotas struktūras Var ligzdot citos if, elif vai else blokos. Nevar ligzdot citā elif blokā, bet var izmantot if vai else blokā.

    Sapratīsim to ar piemēru.

    #!/bin/bash
    skaitlis=5
    ja [ $skaitlis -gt 10 ]; tad
    echo $skaitlis ir lielāks par 10
    cits
    echo $skaitlis nav lielāks par 10
    būt
    atbalss ———
    ja [ $skaitlis -gt 10 ]; tad
    echo $skaitlis ir lielāks par 10
    elif [ $skaitlis -eq 10 ]; tad
    echo $skaitlis ir vienāds ar 10
    cits
    echo $skaitlis ir mazāks par 10
    būt

    Paskaidrojums:

    Šajā piemērā pirmais if bloks pārbauda, ​​vai skaitlis ir lielāks par 10. Ja nē, tas izdrukā ziņojumu, kas norāda, ka skaitlis nav lielāks par 10. Otrais bloks ar elif priekšrakstiem pārbauda vairākus nosacījumus secīgi, līdz viens no tiem ir patiess. Šajā gadījumā, tā kā skaitļa vērtība ir 5, izvade būs:

    if_elif atšķirība

    if_elif atšķirība

    23) Kā izmantot cilpu while, lai atkārtoti izpildītu komandas?

    Shell skriptēšanā tiek izmantota while cilpa, lai atkārtoti izpildītu komandu kopu, ja vien norādītais nosacījums ir patiess. Cilpa turpina izpildīt komandas, līdz nosacījums kļūst nepatiess.

    Lūk, kāda laika cilpas pamata sintakse:

    kamēr [nosacījums]; darīt
    # Komandas, kas jāizpilda
    darīts

    Paskaidrojums:

    1. Cilpa 'while' sākas ar atslēgvārdu 'while', kam seko nosacījums kvadrātiekavās '[ ]'.
    2. Cilpas pamatteksts, kurā ir izpildāmās komandas, ir ietverts atslēgvārdos 'do' un 'done'.
    3. Cilpa vispirms pārbauda stāvokli. Ja nosacījums ir patiess, tiek izpildītas komandas cilpas pamattekstā. Kad cilpas pamatteksts ir izpildīts, nosacījums tiek pārbaudīts vēlreiz, un process atkārtojas, līdz nosacījums kļūst nepatiess.

    Piemērs: Ja vēlamies izdrukāt skaitļus no 1 līdz 5

    #!/bin/bash
    skaitītājs=1
    while [ $counter -le 5 ]; darīt
    atbalss Skaitlis: $skaitītājs
    skaitītājs=$((skaitītājs + 1))
    darīts

    Paskaidrojums:

    • Skaitītāja mainīgais ir iestatīts uz 1.
    • Cikla while pārbauda, ​​vai skaitītāja vērtība ir mazāka vai vienāda ar 5. Kamēr šis nosacījums ir patiess, cilpa turpina izpildīt.
    • Cilpas iekšpusē pašreizējā skaitītāja vērtība tiek izdrukāta, izmantojot atbalsi.
    • Skaitītājs tiek palielināts par 1, izmantojot izteiksmi $((skaitītājs + 1)).
    kamēr cilpa

    kamēr cilpa

    24) Izveidojiet čaulas skriptu, kas atrod un uzskaita visus tukšos failus direktorijā.

    Shell skripts, ko varat izmantot, lai atrastu un uzskaitītu visus tukšos failus direktorijā, izmantojot komandas 'find' un 'stat':

    #!/bin/bash
    directory=$1″
    ja [ -z $direktorijs ]; tad
    echo Lietojums: 0 USD
    izeja 1
    būt

    ja [ ! -d $direktorijs ]; tad
    echo Kļūda: “$ directory” nav derīgs direktorijs.
    izeja 1
    būt
    echo Tukši faili $ direktorijā:
    atrodiet $ directory -type f -tukšu

    Paskaidrojums:

    1. ` #!/bin/bash `: To sauc par shebang, un tas liek operētājsistēmai izmantot Bash apvalku, lai interpretētu un izpildītu skriptu.
    2. ` directory=$1″ `: šī rinda piešķir pirmo komandrindas argumentu (apzīmēts ar $1) mainīgajam ` direktoriju `.
    3. ` ja [ -z $direktorijs ]; tad `: šī rinda sāk if priekšrakstu, kas pārbauda, ​​vai ` direktoriju ` mainīgais ir tukšs (-z pārbauda tukšu virkni).
    4. ` echo Lietojums: 0 USD `: ja direktorijs ir tukšs, šajā rindā tiek izdrukāts lietošanas ziņojums, kur ` 0 $ ` apzīmē skripta nosaukumu.
    5. ` izeja 1 `: šī rinda iziet no skripta ar izejas kodu ` 1 `, kas norāda uz kļūdu.
    6. ` būt `: šī rinda iezīmē ` beigas ja ` paziņojums.
    7. ` ja [ ! -d $direktorijs ]; tad `: Tas sāk citu if priekšrakstu, lai pārbaudītu, vai norādītais direktorijs eksistē (` -d ` pārbauda direktoriju).
    8. ` echo Kļūda: “$ directory” nav derīgs direktorijs. `: ja norādītais direktorijs neeksistē, šī rinda izdrukā kļūdas ziņojumu.
    9. ` izeja 1 `: iziet no skripta ar izejas kodu ` 1 `.
    10. ` būt `: atzīmē otrās beigas ja` paziņojums, apgalvojums.
    11. ` echo Tukši faili $ direktorijā: `: Ja viss līdz šim ir derīgs, šajā rindā tiek izdrukāts ziņojums, kas norāda, ka skripts norādītajā direktorijā uzskaitīs tukšus failus.
    12. ` atrodiet $ directory -type f -tukšu `: šajā rindā tiek izmantots ` atrast ` komandu, lai meklētu tukšus failus (` - tukšs `) parastie faili (` - tipa f `) norādītajā direktorijā. Pēc tam tiek uzskaitīti šie tukšie faili.
    Tukšu failu atrašana

    Tukšu failu atrašana

    Piezīme : mums ir jānorāda direktorijs kā arguments, izpildot skriptu. Šeit mēs esam izmantojuši pašreizējā direktorija home/jayeshkumar/ ceļu

    25) Kāds ir lasīšanas komandas mērķis čaulas skriptēšanā?

    Lasīšanas komanda čaulas skriptēšanā ļauj skriptam lūgt jums informāciju. Tas ir tāpat kā tad, kad dators uzdod jums jautājumu un gaida jūsu atbildi. Tas ir noderīgi skriptiem, kuros kaut kas jāievada, vai gadījumos, kad skriptam ir jāstrādā ar informāciju no failiem. Lasīšanas komanda palīdz skriptam apstāties un gaidīt, ko rakstāt, un pēc tam tā var izmantot šo informāciju, lai skriptā veiktu vairāk darbību.

    Lasīšanas komandas sintakse:

    read variable_name>

    Piemērs : Ja mēs vēlamies lietot vārdu kā ievadi no lietotāja, lai to izdrukātu.

    #!/bin/bash
    echo Lūdzu, ievadiet savu vārdu:
    lasīt vārdu
    echo Sveiks, $name!

    453

    lasīt nam

    Rezumējot, lasīšanas komanda tiek izmantota, lai tvertu lietotāja ievadi vai datus no failiem čaulas skriptos, padarot skriptus interaktīvākus un daudzpusīgākus.

    26) Uzrakstiet čaulas skriptu, kas pārvērš visus direktorijā esošo failu nosaukumus uz mazajiem burtiem.

    Šeit ir čaulas skripts, kas pārvērš visus direktorijā esošo failu nosaukumus uz mazajiem burtiem.

    #!/bin/bash
    directory=$1″
    ja [ -z $direktorijs ]; tad
    echo Lietojums: 0 USD
    izeja 1
    būt

    ja [ ! -d $direktorijs ]; tad

    echo Kļūda: “$ directory” nav derīgs direktorijs.
    izeja 1
    būt

    cd $direktorijs || izeja 1

    failam *; darīt
    if [ -f $fails ]; tad
    newname=$(echo $file | tr ‘A-Z’ ‘a-z’)
    [ $file != $newname ] && mv $fails $jaunsaukums
    būt
    darīts

    Paskaidrojums:

    1. #!/bin/bash : Šis ir shebang, kas norāda, ka skripts ir jāinterpretē, izmantojot Bash apvalku.
    2. directory=$1″ : šī rinda piešķir pirmo komandrindas argumentu mainīgo direktorijam.
    3. ja [ -z $direktorijs ]; tad : šī rinda pārbauda, ​​vai direktorija mainīgais ir tukšs (palaižot skriptu, nav norādīts arguments).
    4. echo Lietojums: 0 USD : ja direktorijs ir tukšs, šajā rindā tiek izdrukāts lietošanas ziņojums ar skripta nosaukumu ($0).
    5. izeja 1 : šī rindiņa iziet no skripta ar izejas kodu 1, norādot, ka ir radusies kļūda.
    6. f i: tas iezīmē pirmā if paziņojuma beigas.
    7. ja [ ! -d $direktorijs ]; tad : šī rinda pārbauda, ​​vai norādītais direktorijs neeksistē (-d pārbauda direktoriju).
    8. echo Kļūda: “$ directory” nav derīgs direktorijs. : ja norādītais direktorijs nepastāv, šī rinda izdrukā kļūdas ziņojumu.
    9. izeja 1 : iziet no skripta ar izejas kodu 1.
    10. būt : atzīmē otrā if paziņojuma beigas.
    11. cd $direktorijs || izeja 1 : maina pašreizējo darba direktoriju uz norādīto direktoriju. Ja direktorija maiņa neizdodas (piem., neesošs direktorijs), skripts tiek izvadīts ar kļūdas kodu.
    12. failam *; darīt: es failam *; darīt: izveido cilpu, kas atkārtojas pār visiem pašreizējā direktorija vienumiem (* atbilst visiem failu nosaukumiem).
    13. if [ -f $fails ]; tad : pārbauda, ​​vai pašreizējās cilpas iterācijas vienums ir parasts fails (-f pārbauda parastu failu).
    14. newname=$(echo $file | tr ‘A-Z’ ‘a-z’) : pārvērš pašreizējo faila nosaukumu ($file) par mazajiem burtiem, izmantojot komandu tr, un saglabā rezultātu mainīgajā newname.
    15. [ $file != $newname ] && mv $fails $jaunsaukums : salīdzina sākotnējo faila nosaukumu ar jauno faila nosaukumu ar mazajiem burtiem. Ja tie atšķiras, tas pārdēvē failu, izmantojot komandu mv.
    16. būt : atzīmē iekšējā if paziņojuma beigas.
    17. darīts : atzīmē cilpas beigas.

    454

    Piezīme : mums ir jānorāda direktorijs kā arguments, izpildot skriptu. Šeit mēs esam izmantojuši pašreizējā direktorija home/jayeshkumar/test ceļu

    27) Kā čaulas skriptā var izmantot aritmētiskās darbības?

    Aritmētiskās darbības var veikt čaulas skriptā, izmantojot dažādas iebūvētās metodes. Apvalks nodrošina mehānismus vienkāršiem aritmētiskiem aprēķiniem, izmantojot aritmētisko izvēršanu, piemēram:

    1. Aritmētiskā izvēršana ($((…)))
    2. Izmantojot komandu expr
    3. Izmantojot Let Command

    Šeit ir mūsu Shell skripts, kas izskaidro visas trīs aritmētisko darbību metodes.

    #!/bin/bash
    num1=10
    num2=5

    #Aritmētiskā izvēršana ($((…)))

    rezultāts=$((num1 + num2))
    atbalss Summa: $rezultāts

    #Izmantojot komandu expr

    summa=$(ekspr $num1 + $num2)
    atbalss Summa: $ summa

    #Izmantojot Let Command

    lai summa = num1 + num2
    atbalss Summa: $ summa

    Paskaidrojums:

    1. #!/bin/bash : Šis ir shebang, kas norāda, ka skripts ir jāinterpretē, izmantojot Bash apvalku.
    2. `num1=10` un ` cipars2=5` : šīs rindas piešķir mainīgajiem ` vērtības 10 un 5 num1 ` un ` num2 `, attiecīgi.
    3. `#Aritmētiskā izvēršana ($((…)))` : Šis ir komentārs, kas norāda tās sadaļas sākumu, kurā parādīta aritmētiskā izvēršana.
    4. `rezultāts=$((num1 + num2))' : šajā rindā tiek izmantota aritmētiskā izvēršana, lai aprēķinātu ` summu num1 ` un ` num2 ` un saglabā rezultātu mapē ` rezultāts ` mainīgais.
    5. `atbalss Summa: $rezultāts` : šajā rindā tiek drukāta aprēķinātā summa, izmantojot vērtību, kas saglabāta laukā ` rezultāts ` mainīgais.
    6. #Izmantojot komandu expr : Šis ir komentārs, kas norāda tās sadaļas sākumu, kurā parādīta ` ekspr ` komanda aritmētiskām darbībām.
    7. `sum=$(ekspr $num1 + $num2)` : šajā rindā tiek izmantots ` ekspr ` komandu, lai aprēķinātu ` summu num1 ` un ` num2 ` un saglabā rezultātu mapē ` summa ` mainīgais. Ņemiet vērā, ka ` ekspr ` komanda prasa atstarpes ap operatoriem.
    8. `echo Sum: $sum` : šajā rindā tiek drukāta aprēķinātā summa, izmantojot vērtību, kas saglabāta laukā ` summa ` mainīgais.
    9. `#Izmantojot Let Command` : Šis ir komentārs, kas norāda tās sadaļas sākumu, kurā parādīta ` ļaut ` komanda aritmētiskām darbībām.
    10. 'atļaut summu = num1 + num2'. : šajā rindā tiek izmantots ` ļaut ` komandu, lai aprēķinātu ` summu num1 ` un ` num2 ` un piešķir rezultātu ` summa ` mainīgais. ` ļaut ` komanda neprasa atstarpes ap operatoriem.
    11. `echo Sum: $sum` : šajā rindā tiek drukāta aprēķinātā summa, izmantojot vērtību, kas saglabāta laukā ` summa ` mainīgais.
    aritmētika

    aritmētika

    28) Izveidojiet skriptu, kas pārbauda, ​​vai tīkla resursdators ir sasniedzams.

    Šeit ir vienkāršs čaulas skripts, kas izmanto ping komandu, lai pārbaudītu, vai tīkla resursdators ir sasniedzams:

    #!/bin/bash
    saimniekdators = 1 $
    ja [ -z $host ]; tad
    echo Lietojums: 0 USD
    izeja 1
    būt
    ping -c 4 $host

    ja [ $? -ekv 0]; tad
    echo $host ir sasniedzams.
    cits
    echo $host nav sasniedzams.
    būt

    Paskaidrojums:

    1. Tas izmanto resursdatora nosaukumu vai IP adresi kā argumentu un pārbauda, ​​vai arguments ir sniegts.
    2. Ja nav norādīts neviens arguments, tas parāda lietošanas ziņojumu un iziet.
    3. Tas izmanto ping komandu ar opciju -c 4, lai nosūtītu četrus ICMP atbalss pieprasījumus norādītajam resursdatoram.
    4. Pēc ping komandas palaišanas tā pārbauda izejas statusu ($?). Ja izejas statuss ir 0, tas nozīmē, ka resursdators ir sasniedzams un skripts izdrukā veiksmes ziņojumu. Pretējā gadījumā tas izdrukā kļūdas ziņojumu.

    456

    Piezīme : mums ir jānorāda saimniekdatora nosaukums kā arguments, palaižot skriptu. Šeit mēs esam izmantojuši google.com

    29) Uzrakstiet čaulas skriptu, lai atrastu lielāko masīva elementu:

    Šeit ir čaulas skripts, lai atrastu lielāko elementu masīvā.

    #!/bin/bash
    # Deklarējiet masīvu
    masīvs=(3 56 24 89 67)

    # Inicializējiet mainīgo, lai saglabātu maksimālo vērtību, sākot ar pirmo elementu

    max=${masīvs[0]}

    # Atkārtojiet caur masīvu

    par num in ${array[@]}; darīt

    # Salīdziniet katru elementu ar pašreizējo maksimumu

    if ((skaits> max)); tad
    max=$num
    būt
    darīts

    # Drukājiet maksimālo vērtību

    echo Maksimālais elements masīvā ir: $max

    Paskaidrojums:

    1. ` #!/bin/bash `: līnija shebang norāda, ka skripts ir jāinterpretē, izmantojot Bash čaulu.
    2. ` masīvs=(3 56 24 89 67) `: masīvs tiek deklarēts un inicializēts ar vērtībām.
    3. ` max=${masīvs[0]} `: “max” tiek inicializēts ar pirmo masīva elementu.
    4. ` par num in ${masīvs[@]}; darīt `: cilpa 'for' tiek izmantota, lai atkārtotu masīva elementus.
    5. ` if ((skaits> max)); tad `: paziņojums “if” pārbauda, ​​vai pašreizējais elements “num” ir lielāks par pašreizējo maksimālo “max”.
    6. ` max=$num`: If`num “ir lielāks par “max”, “max” tiek atjaunināts ar vērtību num.
    7. ` darīts `: “for” cilpa ir aizvērta.
    8. ` echo Maksimālais elements masīvā ir: $max `: Visbeidzot, skripts izdrukā maksimālo masīvā atrasto vērtību.
    461

    lielākais skaitlis

    30) Uzrakstiet skriptu, lai aprēķinātu masīva elementu summu.

    #!/bin/bash

    # Deklarējiet masīvu

    masīvs=(1 65 22 19 94)

    # Inicializējiet mainīgo, lai saglabātu summu

    summa=0

    # Atkārtojiet masīvu un pievienojiet katru elementu summai

    par num in ${array[@]}; darīt
    am=$((am + am))
    darīts

    # Izdrukājiet summu

    echo Elementu summa masīvā ir: $summa

    Paskaidrojums:

    ` #!/bin/bash `: līnija shebang norāda, ka skripts ir jāinterpretē, izmantojot Bash čaulu.

    ` masīvs=(1 65 22 19 94) `: masīvs tiek deklarēts un inicializēts ar vērtībām.

    ` summa=0 `:` summa ` tiek inicializēts uz nulli, lai saglabātu elementu summu.

    ` par num in ${masīvs[@]}; darīt `: A ` priekš ` cilpa tiek izmantota, lai atkārtotu masīva elementus.

    ` am=$((am + am)) `: cilpas iekšpusē katrs elements ` uz viena ` tiek pievienots ` summa ` mainīgais.

    ` darīts `: ` priekš ` cilpa ir aizvērta.

    `echo Elementu summa masīvā ir: $sum`: Visbeidzot, skripts izdrukā visu masīva elementu summu.

    462

    Elementu summa

    Uzziniet vairāk par Shell skriptiem

    Secinājums

    Mēs visi gudrinieki zinām, ka čaulas skripts ir ļoti noderīgs, lai palielinātu darba produktivitāti, kā arī ietaupītu laiku. Tātad, šajā rakstā mēs esam aplūkojuši 30 ļoti noderīgi un visvairāk conman čaulas skriptu piemēri . Mēs ceram, ka šī pilnīga rokasgrāmata par čaulas skriptu piemēru palīdzēs jums saprast visu par čaulas skriptiem.



    ).
  5. izeja 1 : šī rindiņa iziet no skripta ar izejas kodu 1, norādot, ka ir radusies kļūda.
  6. f i: tas iezīmē pirmā if paziņojuma beigas.
  7. ja [ ! -d $direktorijs ]; tad : šī rinda pārbauda, ​​vai norādītais direktorijs neeksistē (-d pārbauda direktoriju).
  8. echo Kļūda: “$ directory” nav derīgs direktorijs. : ja norādītais direktorijs nepastāv, šī rinda izdrukā kļūdas ziņojumu.
  9. izeja 1 : iziet no skripta ar izejas kodu 1.
  10. būt : atzīmē otrā if paziņojuma beigas.
  11. cd $direktorijs || izeja 1 : maina pašreizējo darba direktoriju uz norādīto direktoriju. Ja direktorija maiņa neizdodas (piem., neesošs direktorijs), skripts tiek izvadīts ar kļūdas kodu.
  12. failam *; darīt: es failam *; darīt: izveido cilpu, kas atkārtojas pār visiem pašreizējā direktorija vienumiem (* atbilst visiem failu nosaukumiem).
  13. if [ -f $fails ]; tad : pārbauda, ​​vai pašreizējās cilpas iterācijas vienums ir parasts fails (-f pārbauda parastu failu).
  14. newname=$(echo $file | tr ‘A-Z’ ‘a-z’) : pārvērš pašreizējo faila nosaukumu ($file) par mazajiem burtiem, izmantojot komandu tr, un saglabā rezultātu mainīgajā newname.
  15. [ $file != $newname ] && mv $fails $jaunsaukums : salīdzina sākotnējo faila nosaukumu ar jauno faila nosaukumu ar mazajiem burtiem. Ja tie atšķiras, tas pārdēvē failu, izmantojot komandu mv.
  16. būt : atzīmē iekšējā if paziņojuma beigas.
  17. darīts : atzīmē cilpas beigas.

454

Piezīme : mums ir jānorāda direktorijs kā arguments, izpildot skriptu. Šeit mēs esam izmantojuši pašreizējā direktorija home/jayeshkumar/test ceļu

27) Kā čaulas skriptā var izmantot aritmētiskās darbības?

Aritmētiskās darbības var veikt čaulas skriptā, izmantojot dažādas iebūvētās metodes. Apvalks nodrošina mehānismus vienkāršiem aritmētiskiem aprēķiniem, izmantojot aritmētisko izvēršanu, piemēram:

  1. Aritmētiskā izvēršana ($((…)))
  2. Izmantojot komandu expr
  3. Izmantojot Let Command

Šeit ir mūsu Shell skripts, kas izskaidro visas trīs aritmētisko darbību metodes.

#!/bin/bash
num1=10
num2=5

#Aritmētiskā izvēršana ($((…)))

rezultāts=$((num1 + num2))
atbalss Summa: $rezultāts

#Izmantojot komandu expr

summa=$(ekspr $num1 + $num2)
atbalss Summa: $ summa

#Izmantojot Let Command

lai summa = num1 + num2
atbalss Summa: $ summa

Paskaidrojums:

  1. #!/bin/bash : Šis ir shebang, kas norāda, ka skripts ir jāinterpretē, izmantojot Bash apvalku.
  2. `num1=10` un ` cipars2=5` : šīs rindas piešķir mainīgajiem ` vērtības 10 un 5 num1 ` un ` num2 `, attiecīgi.
  3. `#Aritmētiskā izvēršana ($((…)))` : Šis ir komentārs, kas norāda tās sadaļas sākumu, kurā parādīta aritmētiskā izvēršana.
  4. `rezultāts=$((num1 + num2))' : šajā rindā tiek izmantota aritmētiskā izvēršana, lai aprēķinātu ` summu num1 ` un ` num2 ` un saglabā rezultātu mapē ` rezultāts ` mainīgais.
  5. `atbalss Summa: $rezultāts` : šajā rindā tiek drukāta aprēķinātā summa, izmantojot vērtību, kas saglabāta laukā ` rezultāts ` mainīgais.
  6. #Izmantojot komandu expr : Šis ir komentārs, kas norāda tās sadaļas sākumu, kurā parādīta ` ekspr ` komanda aritmētiskām darbībām.
  7. `sum=$(ekspr $num1 + $num2)` : šajā rindā tiek izmantots ` ekspr ` komandu, lai aprēķinātu ` summu num1 ` un ` num2 ` un saglabā rezultātu mapē ` summa ` mainīgais. Ņemiet vērā, ka ` ekspr ` komanda prasa atstarpes ap operatoriem.
  8. `echo Sum: $sum` : šajā rindā tiek drukāta aprēķinātā summa, izmantojot vērtību, kas saglabāta laukā ` summa ` mainīgais.
  9. `#Izmantojot Let Command` : Šis ir komentārs, kas norāda tās sadaļas sākumu, kurā parādīta ` ļaut ` komanda aritmētiskām darbībām.
  10. 'atļaut summu = num1 + num2'. : šajā rindā tiek izmantots ` ļaut ` komandu, lai aprēķinātu ` summu num1 ` un ` num2 ` un piešķir rezultātu ` summa ` mainīgais. ` ļaut ` komanda neprasa atstarpes ap operatoriem.
  11. `echo Sum: $sum` : šajā rindā tiek drukāta aprēķinātā summa, izmantojot vērtību, kas saglabāta laukā ` summa ` mainīgais.
aritmētika

aritmētika

28) Izveidojiet skriptu, kas pārbauda, ​​vai tīkla resursdators ir sasniedzams.

Šeit ir vienkāršs čaulas skripts, kas izmanto ping komandu, lai pārbaudītu, vai tīkla resursdators ir sasniedzams:

#!/bin/bash
saimniekdators = 1 $
ja [ -z $host ]; tad
echo Lietojums: 0 USD
izeja 1
būt
ping -c 4 $host

ja [ $? -ekv 0]; tad
echo $host ir sasniedzams.
cits
echo $host nav sasniedzams.
būt

Paskaidrojums:

  1. Tas izmanto resursdatora nosaukumu vai IP adresi kā argumentu un pārbauda, ​​vai arguments ir sniegts.
  2. Ja nav norādīts neviens arguments, tas parāda lietošanas ziņojumu un iziet.
  3. Tas izmanto ping komandu ar opciju -c 4, lai nosūtītu četrus ICMP atbalss pieprasījumus norādītajam resursdatoram.
  4. Pēc ping komandas palaišanas tā pārbauda izejas statusu ($?). Ja izejas statuss ir 0, tas nozīmē, ka resursdators ir sasniedzams un skripts izdrukā veiksmes ziņojumu. Pretējā gadījumā tas izdrukā kļūdas ziņojumu.

456

Piezīme : mums ir jānorāda saimniekdatora nosaukums kā arguments, palaižot skriptu. Šeit mēs esam izmantojuši google.com

29) Uzrakstiet čaulas skriptu, lai atrastu lielāko masīva elementu:

Šeit ir čaulas skripts, lai atrastu lielāko elementu masīvā.

#!/bin/bash
# Deklarējiet masīvu
masīvs=(3 56 24 89 67)

# Inicializējiet mainīgo, lai saglabātu maksimālo vērtību, sākot ar pirmo elementu

max=${masīvs[0]}

# Atkārtojiet caur masīvu

par num in ${array[@]}; darīt

# Salīdziniet katru elementu ar pašreizējo maksimumu

if ((skaits> max)); tad
max=$num
būt
darīts

# Drukājiet maksimālo vērtību

echo Maksimālais elements masīvā ir: $max

Paskaidrojums:

  1. ` #!/bin/bash `: līnija shebang norāda, ka skripts ir jāinterpretē, izmantojot Bash čaulu.
  2. ` masīvs=(3 56 24 89 67) `: masīvs tiek deklarēts un inicializēts ar vērtībām.
  3. ` max=${masīvs[0]} `: “max” tiek inicializēts ar pirmo masīva elementu.
  4. ` par num in ${masīvs[@]}; darīt `: cilpa 'for' tiek izmantota, lai atkārtotu masīva elementus.
  5. ` if ((skaits> max)); tad `: paziņojums “if” pārbauda, ​​vai pašreizējais elements “num” ir lielāks par pašreizējo maksimālo “max”.
  6. ` max=$num`: If`num “ir lielāks par “max”, “max” tiek atjaunināts ar vērtību num.
  7. ` darīts `: “for” cilpa ir aizvērta.
  8. ` echo Maksimālais elements masīvā ir: $max `: Visbeidzot, skripts izdrukā maksimālo masīvā atrasto vērtību.
461

lielākais skaitlis

30) Uzrakstiet skriptu, lai aprēķinātu masīva elementu summu.

#!/bin/bash

# Deklarējiet masīvu

masīvs=(1 65 22 19 94)

# Inicializējiet mainīgo, lai saglabātu summu

xd xd nozīme

summa=0

# Atkārtojiet masīvu un pievienojiet katru elementu summai

par num in ${array[@]}; darīt
am=$((am + am))
darīts

# Izdrukājiet summu

echo Elementu summa masīvā ir: $summa

Paskaidrojums:

` #!/bin/bash `: līnija shebang norāda, ka skripts ir jāinterpretē, izmantojot Bash čaulu.

` masīvs=(1 65 22 19 94) `: masīvs tiek deklarēts un inicializēts ar vērtībām.

` summa=0 `:` summa ` tiek inicializēts uz nulli, lai saglabātu elementu summu.

` par num in ${masīvs[@]}; darīt `: A ` priekš ` cilpa tiek izmantota, lai atkārtotu masīva elementus.

` am=$((am + am)) `: cilpas iekšpusē katrs elements ` uz viena ` tiek pievienots ` summa ` mainīgais.

` darīts `: ` priekš ` cilpa ir aizvērta.

`echo Elementu summa masīvā ir: $sum`: Visbeidzot, skripts izdrukā visu masīva elementu summu.

462

Elementu summa

Uzziniet vairāk par Shell skriptiem

Secinājums

Mēs visi gudrinieki zinām, ka čaulas skripts ir ļoti noderīgs, lai palielinātu darba produktivitāti, kā arī ietaupītu laiku. Tātad, šajā rakstā mēs esam aplūkojuši 30 ļoti noderīgi un visvairāk conman čaulas skriptu piemēri . Mēs ceram, ka šī pilnīga rokasgrāmata par čaulas skriptu piemēru palīdzēs jums saprast visu par čaulas skriptiem.