Startpagina » hoe » De beginnershandleiding voor shell-scripting 3 Meer basisopdrachten en -ketens

    De beginnershandleiding voor shell-scripting 3 Meer basisopdrachten en -ketens

    U hebt geleerd hoe u scripts kunt maken, argumenten kunt gebruiken en lussen kunt maken. Laten we eens kijken naar wat meer basisopdrachten, bewerking van tekstbestanden en omleidingen in- en uitvoeren naar bestanden en andere opdrachten.

    Enkele eenvoudige bruikbare opdrachten

    We hebben je al een basisanalyse gegeven van shell-scripts en een voorbeeldgebaseerd overzicht van for-loops, maar zorg ervoor dat je die artikelen leest 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 pas kunnen komen.

    echo - Met deze opdracht wordt het gehele argument op de opdrachtregel afgedrukt (weergegeven) als uitvoer

    echo-argument met spaties

    Zoals u kunt zien, moeten speciale tekens worden "ontsnapt", 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 u kunt zien, gedragen enkele en dubbele aanhalingstekens zich anders. Raadpleeg voor meer informatie Wat is het verschil tussen enkele en dubbele aanhalingstekens in de Bash-shell?

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

    cat file_to_be_read

    Laten we zeggen dat we dit tekstbestand in nano maken:

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

    grep - Dit is een van de krachtigste en handigste 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 lijn een veelheid aan patronen opleveren die moeten worden vergeleken. Maar voor niet, kunt u een woord invoeren om te zoeken.

    grep-patroonbestand

    Ik kan je verzekeren dat grep meer kan doen, maar laten we het nu gemakkelijker houden.

    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 (>).

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

    echo pepperoni> lijst

    Je kunt zien dat echo de regel niet meer weergeeft, en wanneer we naar de inhoud van het "lijst" -bestand kijken, zien we wat we daar in echo's.

    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 alleen toevoegen aan een bestaand bestand. Hiervoor gebruiken we twee opeenvolgende groter dan-symbolen:

    echo gele paprika's >> lijst

    Gemakkelijk! Laten we dit commando gebruiken om een ​​grotere lijst te maken, zullen wij?

    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 in een bestand stoppen:

    ls -al /> ~ / rootlist

    Het is nog nooit zo eenvoudig geweest lijsten met bestanden te maken, ze te bewerken en vervolgens opdrachten uit te voeren die jij wilt. 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 lijkt veel op ">", maar het kan meerdere keren worden geketend en het effect is algemener 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.

    Omleidingen omleiden

    U kunt ook invoer van bestanden voor opdrachten gebruiken met het symbool less-than (<).

    kat < list

    "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-revisies

    Laten we deze opdracht opnieuw uitvoeren en een sortering toevoegen.

    Grep Pep-revisies

    Dit gebruikt "pep" als de 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 "revisies" -bestand.

    Om het sorteercommando te illustreren, laten we het volgende voorbeeld bekijken:

    Zoals je kunt zien, kun je case negeren door de vlag "-f" aan de sorteeropdracht toe te voegen. Dit maakt het voor ons gemakkelijk om regels in tekstbestanden te alfabetiseren en hoofdletters te negeren wanneer het er niet toe doet.

    Een eenvoudig script

    Laten we een script maken met de volgende vorm:

    script zoekterm lijstbestand

    Het duurt even en grep gebruikt 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 staat en vervolgens het script uitvoeren.

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

    Wat het sorteren betreft, kunt u meer doen dan alleen alfabetisch sorteren. Bekijk 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 deze transcriberen.
    • uniq - verwijdert alle niet-unieke (lees: dupliceren)
    • awk - een echt geavanceerde tekstverwerkingstool / functie die kan worden gebruikt om velden in bestandsnamen te scheiden
    • knippen, plakken / join - commando's die handig zijn voor het isoleren van velden uit tekstbestanden en het toevoegen van nieuwe gegevens aan kolommen
    • look - zoekt zoals grep dat doet, maar gebruikt een woordenboekbestand (dat door de gebruiker kan worden opgegeven) voor de zoekopdracht
    • wc - hiermee kunt u het aantal woorden, het aantal regels, het aantal tekens en meer bekijken

    We hebben vandaag enkele basisbegrippen bekeken die even nuttig kunnen zijn op de opdrachtregel als in scripts. Op tekst gebaseerde gegevens vormen vaak de kern van dingen die we dagelijks gebruiken, dus het kunnen gebruiken, doorzoeken en manipuleren van deze gegevens is essentieel.

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