Linux-opdrachten

Linux pipe-opdracht

Linux pipe-opdracht
Deze "pipe"-opdracht is direct beschikbaar op UNIX/Linux-platforms. Deze opdracht stuurt de uitvoer van de vorige opdracht naar de volgende opdracht. Er zijn letterlijk VEEL situaties waarin deze methode serieuze waarde biedt.Voordat je dieper springt, is er iets om te weten. Elk afzonderlijk programma in het UNIX/Linux-systeem heeft 3 ingebouwde datastromen.

Wanneer we gaan werken met "pipe" trucs, zal "pipe" de STDOUT van een commando nemen en doorgeven aan de STDIN van het volgende commando.

Laten we eens kijken naar enkele van de meest voorkomende manieren waarop u de opdracht "pipe" in uw dagelijkse gebruik kunt opnemen.

Pijp commando

Basisgebruik

Het is beter om de werkwijze van “pijp” uit te werken met een levend voorbeeld, toch? Laten we beginnen. De volgende opdracht vertelt "pacman", de standaard pakketbeheerder voor Arch en alle op Arch gebaseerde distributies, om alle geïnstalleerde pakketten op het systeem af te drukken.

pacman -Qqe

Het is echt een LANGE lijst met pakketten. Hoe zit het met het oppakken van slechts een paar componenten?? We kunnen "grep" gebruiken. Maar hoe? Een manier zou zijn om de uitvoer naar een tijdelijk bestand te dumpen, de gewenste uitvoer "grep" en het bestand te verwijderen delete. Deze reeks taken kan op zichzelf worden omgezet in een script. Maar we scripten alleen voor hele grote dingen. Laten we voor deze taak een beroep doen op de kracht van "pijp"!

pacman -Qqe | grep

Geweldig, is het niet? De “|” teken is de aanroep van de opdracht "pipe". Het pakt de STDOUT uit het linkergedeelte en voert het in de STDIN van het rechtergedeelte.

In het bovengenoemde voorbeeld heeft het "pipe" -commando de uitvoer aan het einde van het "grep" -gedeelte daadwerkelijk doorgegeven. Hier is hoe het speelt.

pacman -Qqe > ~/Desktop/pacman_package.tekst
grep python ~/Desktop/pacman_package.tekst

Meerdere leidingen

In principe is er niets bijzonders aan het geavanceerde gebruik van het "pipe"-commando. Het is helemaal aan jou om het te gebruiken.

Laten we bijvoorbeeld beginnen met het stapelen van meerdere leidingen.

pacman -Qqe | grep p | grep t | grep py

De uitvoer van het pacman-commando wordt steeds verder gefilterd door "grep" via een reeks leidingen.

Soms, als we met de inhoud van een bestand werken, kan het heel, heel groot zijn. Het vinden van de juiste plaats van onze gewenste vermelding kan moeilijk zijn. Laten we zoeken naar alle vermeldingen die de cijfers 1 en 2 bevatten.

kattendemo.txt | grep -n 1 | grep -n 2

Lijst met bestanden en mappen manipuleren

Wat te doen als je te maken hebt met een map met VEEL bestanden erin?? Het is best vervelend om door de hele lijst te scrollen. Natuurlijk, waarom zou je het niet draaglijker maken met pijp?? Laten we in dit voorbeeld de lijst met alle bestanden in de map "/usr/bin" bekijken/.

ls -l | meer

Hier drukt "ls" alle bestanden en hun info af. Vervolgens geeft "pipe" het door aan "more" om daarmee te werken. Als je het nog niet wist, is "meer" een tool die teksten in één schermweergave tegelijk verandert. Het is echter een oude tool en volgens de officiële documentatie is "minder" meer aanbevolen.

ls -l /usr/bin | minder

Uitvoer sorteren

Er is een ingebouwde tool "sorteren" die tekstinvoer opneemt en sorteert. Deze tool is een echt juweeltje als je met iets heel rommeligs werkt. Ik heb dit bestand bijvoorbeeld vol willekeurige tekenreeksen.

kattendemo.tekst

Leid het gewoon naar "sorteren".

kattendemo.txt | soort

Dat is beter!

Overeenkomsten van een bepaald patroon afdrukken

ls -l | vind ./ -type f -naam "*.txt" -exec grep 00110011 \;

Dit is een behoorlijk verdraaid commando, toch? Eerst geeft "ls" de lijst met alle bestanden in de map weer. De tool "vinden" neemt de uitvoer, zoekt naar ".txt"-bestanden en roept "grep" op om te zoeken naar "00110011". Deze opdracht controleert elk afzonderlijk tekstbestand in de map met de TXT-extensie en zoekt naar overeenkomsten.

Bestandsinhoud van een bepaald bereik afdrukken

Als je met een groot bestand werkt, is het normaal dat je de inhoud van een bepaald bereik moet controleren. Dat kunnen we doen met een slimme combinatie van "kat", "kop", "staart" en natuurlijk "pijp". De tool "kop" voert het eerste deel van een inhoud uit en "staart" voert het laatste deel uit.

kat | hoofd -6

kat | staart -6

Unieke waarden

Bij het werken met dubbele uitvoer kan het behoorlijk vervelend zijn. Soms kan dubbele invoer ernstige problemen veroorzaken. Laten we in dit voorbeeld "uniq" casten op een stroom tekst en deze opslaan in een apart bestand.

Hier is bijvoorbeeld een tekstbestand met een grote lijst met getallen van 2 cijfers lang. Er is hier zeker dubbele inhoud, toch?

kat duplicaat.txt | soort

Laten we nu het filterproces uitvoeren.

kat duplicaat.txt | sorteren | uniek > uniek.tekst

Bekijk de uitvoer.

vleermuis uniek.tekst

Ziet er beter uit!

Fout pijpen

Dit is een interessante piping-methode. Deze methode wordt gebruikt om de STDERR om te leiden naar STDOUT en verder te gaan met de piping. Dit wordt aangegeven met het symbool "|&" (zonder de aanhalingstekens). Laten we bijvoorbeeld een fout maken en de uitvoer naar een andere tool sturen. In dit voorbeeld heb ik zojuist een willekeurige opdracht getypt en de fout doorgegeven aan "grep".

adsfds |& grep n

Laatste gedachten

Hoewel "pijp" zelf vrij simplistisch van aard is, biedt de manier waarop het werkt een zeer veelzijdige manier om de methode op oneindige manieren te gebruiken. Als je van Bash-scripting houdt, dan is het veel nuttiger. Soms kun je gewoon gekke dingen doen! Meer informatie over Bash-scripting.

Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...
Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...
Doom installeren en spelen op Linux
Inleiding tot Doom De Doom-serie is ontstaan ​​in de jaren 90 na de release van de originele Doom. Het was meteen een hit en vanaf die tijd heeft de g...