Skip to main content

Nybegynnere Guide til BASH - Inngangsparametere

Best Command Prompt (CMD) commands used in Hacking (April 2025)

Best Command Prompt (CMD) commands used in Hacking (April 2025)
Anonim

Velkommen til den andre delen av Beginners Guide To BASH-serien som er unik ved at den er den eneste BASH-opplæringen skrevet av en nybegynner for nybegynnere.

Lesere av denne veiledningen vil bygge opp sin kunnskap når jeg bygger opp min kunnskap og forhåpentligvis ved slutten av det hele vil vi kunne skrive noen ganske klare skript.

I forrige uke dekket jeg å lage ditt første skript som bare viste ordene "Hello World". Den dekker emner som tekstredigerere, hvordan du åpner et terminalvindu, hvor du skal sette skriptene dine, hvordan du viser ordene "Hello World" og noen finere punkter på fluktegn som anførselstegn ("").

Denne uken skal jeg dekke innspillparametere. Det er andre guider som lærer denne typen ting, men jeg finner at de hopper inn i noe ganske lavt nivå og kanskje gir for mye informasjon.

Hva er en parameter?

I "Hello World" -skriptet fra den siste opplæringen var det veldig statisk. Skriptet gjorde egentlig ikke mye i det hele tatt.

Hvordan kan vi forbedre på "Hello World" -skriptet?

Hva med et skript som hilser personen som driver den? I stedet for å si "Hello World" vil det si "Hello Gary", "Hello Tim" eller "Hello Dolly".

Uten muligheten til å akseptere inngangsparametere, må vi skrive tre skript "hellogary.sh", "hellotim.sh" og "hellodolly.sh".

Ved å la skriptet vårt lese inngangsparametere, kan vi bruke et skript for å hilse på noen.

For å gjøre dette åpner du et terminalvindu (CTRL + ALT + T) og navigerer til skriptmappen ved å skrive følgende: (om cd-kommando)

cd-skript

Opprett et nytt skript som heter greetme.sh ved å skrive følgende: (om berøringskommando)

trykk greetme.sh

Åpne skriptet i favorittredigeren din ved å skrive følgende: (om nano-kommandoen)

nano greetme.sh

Skriv inn følgende tekst i nano:

#! / bin / bash echo "hei $ @"

Trykk CTRL og O for å lagre filen og deretter CTRL og X for å lukke filen.

For å kjøre skriptet skriv inn følgende i kommandolinjen som erstatter med navnet ditt.

sh greetme.sh

Hvis jeg kjører skriptet med navnet mitt, viser det ordene "Hello Gary".

Den første linjen har #! / Bin / bash-linjen som brukes til å identifisere filen som et bash script.

Den andre linjen bruker ekko-setningen til å ekko ordet hei, og så er det den merkelige $ @ notasjonen. (om ekkokommando)

$ @ Utvides for å vise hver parameter som ble oppgitt sammen med skriptnavnet. Så hvis du skrev "sh greetme.sh tim" vil ordene "hei tim" bli vist. Hvis du skrev "greetme.sh tim smith" så ble ordene "hei tim smith" vist.

Det kan være fint for greetme.sh-skriptet å bare si hei ved å bruke bare fornavnet. Ingen sier "Hei Gary Newell" når de møter meg, de kan kanskje si "Hei Gary" skjønt.

La oss endre skriptet slik at det bare bruker den første parameteren. Åpne greetme.sh-skriptet i nano ved å skrive følgende:

nano greetme.sh

Endre skriptet slik at det lyder som følger:

#! / bin / bash echo "hei $ 1"

Lagre skriptet ved å trykke CTRL og O og avslutte ved å trykke CTRL og X.

Kjør skriptet som vist nedenfor (erstatt navnet mitt med din):

sh greetme.sh gary newell

Når du kjører skriptet, vil det bare si "Hei Gary" (eller forhåpentligvis "Hei" og uansett hva du heter.

1 etter at $ symbolet i utgangspunktet sier til ekkokommandoen, bruker du den første parameteren. Hvis du erstatter $ 1 med en $ 2 så vil det vise "hei newell" (eller hva ditt etternavn er).

Forresten, hvis du erstattet $ 2 med en $ 3 og kjørte manuset med bare 2 parametere, ville utgangen bare være "Hei".

Det er mulig å vise og håndtere antall parametere som faktisk er skrevet inn, og i senere opplæringsprogrammer vil jeg vise hvordan man bruker parametertellingen for valideringsformål.

For å vise antall parametere som er angitt, åpner du greetme.sh-skriptet (nano greetme.sh) og endrer teksten som følger:

#! / bin / bash echo "du skrev inn $ # navn" echo "hei $ @"

Trykk CTRL og O for å lagre skriptet og CTRL og X for å gå ut av nano.

$ # På 2. linje viser antall innførte parametere.

Hittil har alt dette vært roman, men ikke veldig nyttig. Hvem trenger et skript som bare viser "hallo"?

Den virkelige bruken for ekko-erklæringer er å gi verbose og meningsfylt utdata til brukeren. Hvis du kan tenke deg at du vil gjøre noe komplisert, noe som innebærer en seriøs nummerkrepping og fil / mappebehandling, ville det være nyttig å vise til brukeren hva som skjer hvert trinn på veien.

Derimot gjør inngangsparametre skriptet interaktivt. Uten innspillingsparametre vil du trenge dusinvis av skript som alle gjør svært like ting, men med litt forskjellige navn.

Med alt dette i tankene er det noen andre nyttige innspillingsparametre som det er en god ide å vite, og jeg vil inkludere dem alle i ett kodestykke.

Åpne ditt greetme.sh script og endre det som følger:

#! / bin / bash echo "Filnavn: $ 0" echo "Prosess ID: $$" echo "---------------------------- --- "ekko" du skrev inn $ # navn "ekko" hei $ @ "

Trykk CTRL og O for å lagre filen og CTRL og X for å avslutte.

Kjør nå skriptet (erstatt med navnet ditt).

sh greetme.sh

Denne gangen viser skriptet følgende:

Filnavn: greetme.sh Prosess ID: 18595 ------------------------------ du skrev inn 2 navn hei gary newell

$ 0 på første linje i skriptet viser navnet på skriptet du kjører.Legg merke til at det er dollar null og ikke dollar o.

$$ på den andre linjen viser prosess-ID for skriptet du kjører. Hvorfor er dette nyttig? Hvis du kjører et skript i forgrunnen, kan du avbryte det ved å bare trykke på CTRL og C. Hvis du kjørte skriptet i bakgrunnen, og det startet looping og gjør det samme om og om igjen eller begynte å forårsake skade på systemet ditt, ville du trenge å drepe det

For å drepe et skript som kjører i bakgrunnen trenger du prosess-ID for skriptet. Ville det ikke vært bra hvis manuset ga prosess-ID som en del av sin produksjon. (om ps og kill kommandoer)

Til slutt før jeg er ferdig med dette emnet, ønsket jeg å diskutere hvor produktionen går. Hver gang manuset har gått så langt, har produksjonen blitt vist på skjermen.

Det er ganske vanlig at skriptutdata skal skrives til en utdatafil. For å gjøre dette, kjør skriptet ditt på følgende måte:

sh greetme.sh gary> greetme.log

Symbolet> i kommandoen ovenfor gir ut teksten "hallo gary" til en fil som heter greetme.log.

Hver gang du kjører skriptet med> symbolet overskriver innholdet i utdatafilen. Hvis du foretrekker å legge til filen, erstatt> med >>.

Sammendrag

Du bør nå kunne skrive tekst på skjermen og akseptere inngangsparametere.