27Jun

De beginnershandleiding voor Shell Scripting 3: meer basisopdrachten &Chains

click fraud protection

U hebt geleerd hoe u scripts kunt maken, argumenten kunt gebruiken en lussen kunt maken. Laten we nu eens kijken naar wat meer basiscommando's, manipulatie van tekstbestanden en omleiden van invoer en uitvoer naar bestanden en andere opdrachten.

Enkele elementaire bruikbare opdrachten

We hebben je al een basisanalyse gegeven van shell-scripts en een op voorbeelden gebaseerd overzicht van for loops, maar zorg ervoor dat je die artikelen bekijkt als je onze shell scripting guide tot nu toe hebt gemist.

De opdrachtregel is om vele redenen geweldig en omleiding is een van de meest prominente. Als je de uitvoer van elke opdracht moest noteren en reproduceren om verdere actie te ondernemen of die voor iets anders te gebruiken, dan waren we allemaal lang geleden gek geworden. Door omleiding kunnen we die uitvoer gebruiken en opslaan of onmiddellijk gebruiken als invoer voor een andere opdracht. We kunnen ook bestanden gebruiken als invoer voor andere opdrachten.

Voordat we verder gaan, laten we enkele basisopdrachten behandelen die op veel verschillende plaatsen van nut kunnen zijn.

instagram viewer

echo - Deze opdracht drukt eenvoudig( geeft) het gehele argument af op de opdrachtregel als uitvoer

echo-argument met spaties

Zoals u kunt zien, moeten speciale tekens worden "geëvacueerd" zodat ze normaal worden behandeld. Dit wordt gedaan door een backslash( \) voor het personage te gebruiken. Het is een beter idee om citaten te gebruiken. De echo-opdracht werkt ook met variabelen.

Zoals je kunt zien gedragen enkele en dubbele aanhalingstekens zich anders. Raadpleeg voor meer informatie Wat is het verschil tussen enkele en dubbele offertes in de Bash-shell?

cat - Deze opdracht geeft de inhoud van tekstbestanden weer als uitvoer.

cat file_to_be_read

Laten we aannemen dat we dit tekstbestand in nano hebben gemaakt:

Wanneer we de cat-opdracht in het bestand gebruiken, kunnen we zien dat het wordt uitgevoerd.

grep - Dit is een van de meest krachtige en nuttige opdrachten die beschikbaar zijn voor jou in Linux. Het staat voor Global / Regular Expression Print. Het kijkt door een bestand en drukt elke regel af die overeenkomt met een bepaald patroon. Omdat dit patroon is gebaseerd op "reguliere expressie", kan een beknopte regel een veelheid aan patronen opleveren die moeten worden vergeleken. U kunt echter geen stern invoeren om te zoeken.

grep-patroonbestand

Ik kan je verzekeren dat grep meer kan doen, maar laten we voorlopig blijven bij de eenvoudigere dingen.

Uitgangen omleiden

Om de uitvoer van een opdracht naar een bestand om te leiden, maken we gebruik van een speciaal teken, het groter dan-symbool( & gt;).

Laten we onze lijst veranderen, zullen we? Voer de volgende opdracht in:

echo pepperoni & gt;lijst

Je kunt zien dat de echo de regel niet meer weergeeft, en wanneer we naar de inhoud van het "lijst" -bestand kijken, zien we wat we daarin hebben herhaald.

Merk ook op dat de vorige inhoud van "lijst" is verwijderd. Probeer het opnieuw:

Dit kan handig zijn als u een bestand opnieuw wilt gebruiken, maar vaak willen we het gewoon toevoegen aan een bestaand bestand. Hiervoor gebruiken we twee opeenvolgende groter dan-symbolen:

echo gele pepers & gt; & gt;lijst

Makkelijk! Laten we dit commando gebruiken om een ​​grotere lijst te maken, nietwaar?

Daar gaan we. Ik denk dat je kunt zien waarom zoveel geeks de opdrachtregel gebruiken om takenlijsten en dergelijke te maken, maar het wordt nog beter.

Laten we de uitvoer van een commando nemen en het in een bestand plaatsen:

ls -al / & gt;~ / rootlist

Het maken van lijsten met bestanden, het bewerken van de bestanden en het uitvoeren van opdrachten die u wilt, is nog nooit zo eenvoudig geweest. En terwijl we deze basisfuncties uitvoeren in de opdrachtregel, werken deze ook goed in scripts.

Piping of Chaining

Piping is zo genoemd omdat het de pipe gebruikt,( |; gedeeld met de \ -toets op de meeste toetsenborden).In wezen neemt het de uitvoer van één commando en voert het direct naar een ander commando. Je kunt lange kettingopdrachten maken om op deze manier een heel specifieke gewenste uitvoer te krijgen, en het is erg handig voor opdrachten als grep.

Het gedraagt ​​zich erg veel als "& gt;" behalve dat het meerdere keren kan worden geketend en dat het effect algemener is omdat het niet door een tekstbestand hoeft te gaan.

Zoals je kunt zien, is grep hoofdlettergevoelig. U kunt de vlag "-i" gebruiken om het geval te negeren.

Omleiden van ingangen

U kunt ook ingangen van bestanden invoeren voor opdrachten met behulp van het symbool met minder dan( & lt;).

cat & lt;lijst

"Dat is niet anders dan het gebruik van een argument!" Zou je kunnen zeggen. Nou, in dit geval zou je gelijk hebben. Waar het omleiden van invoer echt van pas komt, is het samen ketenen van opdrachten.

Laten we zeggen dat we elk woord met "pep" uit ons huidige "lijstbestand" willen filteren naar een nieuw bestand met de naam "revisies".

grep pep & lt;lijst & gt;revisies

Laten we deze opdracht opnieuw uitvoeren en een sortering toevoegen.

grep pep & lt;lijst |sorteren & gt;revisies

Dit gebruikt "pep" als zoekterm uit de "lijst" van het invoerbestand, sorteert het in alfabetische volgorde( alle hoofdletters, gevolgd door alle kleine letters) en voert het vervolgens uit in het bestand "revisies".

Laten we, om het sorteercommando te illustreren, naar het volgende voorbeeld kijken:

Zoals u ziet, kunt u het vakje "-f" toevoegen aan het sorteercommando. Dit maakt het voor ons gemakkelijk om regels in tekstbestanden te alfabetiseren en hoofdletters te negeren als het er niet toe doet.

Een eenvoudig script

Laten we een script maken met de volgende vorm:

-script zoekwoord-lijstbestand

Het duurt de term en gebruik grep om door een lijstbestand te zoeken, de resultaten te sorteren en ze vervolgens naar een ander bestand te exporteren.

Hier is de map waarin we het script zullen testen:

En we kunnen een lijst maken van wat hier in zit en dan het script uitvoeren.

Daar ga je! Hoe meer u de regels van reguliere expressies leert, hoe nauwkeuriger u een zoekopdracht kunt samenstellen. En alles dat geldig is in aanhalingstekens kan worden vervangen door uw eerste argument!

Wat het sorteren betreft, kunt u meer doen dan alleen alfabetisch sorteren. Kijk eens naar de man-pagina voor enkele van de volgende opdrachten:

  • tsort - een meer geavanceerde topologische sorteerfunctie
  • tr - hiermee kunt u specifieke tekens toewijzen aan andere tekens en kunt u ze transcriberen.
  • uniq - verwijdert niet-unieke( lees: duplicaat)
  • awk - een echt geavanceerde tekstverwerkingstool / -functie die kan worden gebruikt om velden in bestandsnamen te scheiden
  • knippen, plakken / verbinden - commando's die handig zijn voor het isoleren van velden uit tekstbestanden en toevoegennieuwe gegevens in kolommen
  • look - zoekopdrachten zoals grep does, maar gebruikt een woordenboekbestand( dat door de gebruiker kan worden opgegeven) voor de lookup
  • wc - hiermee kunt u het aantal woorden, het aantal regels, het aantal tekens en meer bekijken

We hebben een kijkje genomenbij wat meer basics van vandaag kan dat net zo nuttig zijn op de commandoregel als in scripts. Op tekst gebaseerde gegevens vormen vaak de kern van dingen die we dagelijks gebruiken, dus het is van cruciaal belang om ermee te werken, het te doorzoeken en te manipuleren.

Wat zijn enkele van uw favoriete scripts? Hebt u scripts voor speciaal gebruik voor tekstbestanden? Deel wat je weet in de reacties!