Hoe te Gebruiken aanbrengen op Linux

0
331
Fatmawati Achmad Zaenuri/Shutterstock.com

Gebruik Linux pijpen choreograferen hoe de commando-regel programma ‘ s samen te werken. Het vereenvoudigen van complexe processen en uw productiviteit te verhogen door gebruik te maken van een verzameling van zelfstandige opdrachten en draaien ze in een single-minded team. Wij laten u zien hoe.

Buizen Zijn Overal

Pijpen zijn een van de meest nuttige command-line functies van Linux en Unix-achtige operating systemen. Buizen worden gebruikt in talloze manieren. Bekijk de Linux commando-regel voor een artikel op een website, niet alleen die van ons, en je zult zien dat de leidingen maken een verschijning vaker wel dan niet. Ik besprak een aantal van How-To Geek is Linux artikelen en leidingen worden gebruikt in alle van hen, de een of andere manier.

Linux pijpen u toelaten om acties uit te voeren die niet worden ondersteund out-of-the-box door de shell. Maar omdat de Linux design filosofie is het veel kleine hulpprogramma ‘ s die het uitvoeren van hun speciale functie zeer goed, en zonder onnodig functionaliteit—de “doe één ding en doe het goed” mantra—u kunt peilen snaren van opdrachten samen met pijpen zodat de output van het ene commando wordt de ingang van een ander. Elke opdracht die u buis brengt zijn unieke talent om het team, en al snel vind je je hebt gemonteerd een winnende ploeg.

Een Eenvoudig Voorbeeld

Stel we hebben een map vol met veel verschillende soorten bestanden. We willen weten hoeveel bestanden van een bepaald type in die map. Er zijn andere manieren om dit te doen, maar het doel van deze oefening is de invoering van pijpen, dus dat gaan we ook doen met pijpen.

We krijgen een lijst van de bestanden gemakkelijk met behulp van ls:

ls

Scheiden van het type bestand dat van belang is, gebruiken we grep. We willen zoeken naar bestanden die het woord “pagina” in de bestandsnaam of-extensie.

We zullen gebruik maken van de shell speciale karakter “|” aan de pijp van de output van ls in grep.

ls | grep “pagina”

grep geeft regels die overeenkomen met de zoekopdracht. Dus dit geeft ons een lijst met alleen “.pagina” bestanden.

Zelfs dit triviale voorbeeld wordt de functionaliteit van de buizen. De output van ls werd niet verzonden naar het terminal venster. Het werd verzonden naar grep als de gegevens voor het grep commando om mee te werken. De uitgang zien we vandaan komt grep, die is de laatste opdracht in deze keten.

Met De Uitbreiding Van Onze Keten

Laten we beginnen met de uitbreiding van onze keten van doorgesluisd opdrachten. We kunnen tellen “.pagina” bestanden door het toevoegen van de wc opdracht. We zullen gebruik maken van de optie-l (line count) optie met douche. Opmerking we hebben ook nog de optie-l (lange notatie) optie ls . We gebruiken dit plaasvind.

ls – | grep “pagina” | wc-l

grep is niet langer de laatste opdracht in de keten, dus we zien niet de output. De output van grep wordt gevoed in de wc opdracht. De uitgang zien we in het terminal venster is van een toilet. wc rapporten die er zijn 69 “.pagina” bestanden in de map.

Laten we verlengen de dingen weer. We nemen de wc opdracht uit de commando-regel en vervang het met awk. Er zijn negen kolommen in de output van ls-l (lange notatie) optie. We gebruiken awk afdrukken kolommen vijf, drie en negen. Dit zijn de grootte, eigenaar, en de naam van het bestand.

ls -l | grep “pagina” | awk ‘{print $5 “”$3 “” $9}’

We krijgen een lijst van deze kolommen, voor elk van de overeenkomende bestanden.

We zullen nu pas dat via de uitgang soort opdracht. We zullen gebruik maken van de -n (numerieke) optie om te sorteren weten de eerste kolom moet worden behandeld als nummers.

ls -l | grep “pagina” | awk ‘{print $5 “”$3 “” $9}’ | sort-n

De uitgang is nu gesorteerd in grootte orde, met onze op maat gesneden selectie van drie kolommen.

Het Toevoegen Van Een Opdracht

We zullen af door het toevoegen van in de staart van de opdracht. We vertellen het aan de lijst met de laatste vijf regels van de uitvoer alleen.

ls -l | grep “pagina” | awk ‘{print $5 “”$3 “” $9}’ | sort-n | staart -5

Dit betekent dat onze opdracht betekent zoiets als “geef me de vijf grootste “.pagina” bestanden in deze directory, op maat besteld.” Natuurlijk, er is geen opdracht om dat te bereiken, maar door het gebruik van de buizen, die we hebben gemaakt van ons eigen. We kunnen het toevoegen van deze—of andere lange opdracht als een alias of een shell-functie voor het opslaan van alle typen.

Hier is de output:

We konden omkeren van de grootte van de bestelling door de toevoeging van de -r (reverse) optie om de opdracht sorteren, en met het hoofd in plaats van de staart om te kiezen voor de lijnen van de top van de output.

Dit keer in de vijf grootste “.pagina” bestanden worden weergegeven van de kleinste tot de grootste:

Enkele Recente Voorbeelden

Hier zijn twee interessante voorbeelden van recente How-To geek artikelen.

Sommige opdrachten, zoals de xargscommand, zijn ontworpen om input doorgesluisd naar hen. Hier is een manier die we kunnen hebben wc tellen van de woorden, tekens en lijnen in meerdere bestanden, door middel van pijpleidingen ls in xargs die vervolgens voert de lijst van bestandsnamen naar het toilet, als of zij al had doorgegeven aan de wc als command line parameters.

ls *.pagina | xargs wc

Het totaal aantal woorden, tekens en lijnen worden vermeld aan de onderkant van het terminal venster.

Hier is een manier om een gesorteerde lijst van de unieke bestand extensies in de huidige directory, met een aantal van elk type.

ls | rev | cut-d’.’ -f1 | rev | sort | uniq -c

Er is veel aan de hand hier.

  • ls: een lijst van de bestanden in de map
  • rev: hiermee wordt de tekst in de bestandsnamen.
  • knippen: Knipt de string op het eerste exemplaar van het opgegeven scheidingsteken “.”. Tekst nadat deze is verwijderd.
  • rev: Draait de rest van de tekst, is de bestandsnaam extensie.
  • sorteren: hiermee Sorteert u de lijst op alfabetische volgorde.
  • uniq: Telt het aantal van elk uniek item in de lijst.

De output laat de lijst van bestandsextensies, alfabetisch gesorteerd, met een aantal van elke unieke soort.

Named Pipes

Er is een ander type van buis-ons beschikbaar, de zogenaamde named pipes. De leidingen in de vorige voorbeelden zijn gemaakt op-de-vlieg door de shell als het verwerkt de commando-regel. De buizen worden gemaakt, gebruikt en vervolgens weggegooid. Ze zijn van voorbijgaande aard en laat geen sporen na van zichzelf. Zij bestaan slechts voor zolang de opdracht met hen is uitgevoerd.

Named pipes worden weergegeven als persistente objecten in het bestandssysteem, zodat je ze kan zien met ls. Ze zijn hardnekkig, omdat ze het zullen overleven is een reboot van de computer—hoewel geen ongelezen gegevens in hen op dat moment zal worden weggegooid.

Named pipes werden veel gebruikt in één keer toe te staan verschillende processen voor het verzenden en ontvangen van gegevens, maar ik heb niet gezien dat ze gebruikt op die manier voor een lange tijd. Ongetwijfeld zijn er mensen die er nog steeds gebruik van maken om een groot effect, maar ik heb geen last onlangs. Maar voor de volledigheid wil, of gewoon om uw nieuwsgierigheid te bevredigen, hier is hoe u ze kunt gebruiken.

Named pipes worden gemaakt met de mkfifo opdracht. Dit commando maakt een named pipe genoemd “geek-pipe” in de huidige directory.

mkfifo geek-buis

We kunnen de details van de named pipe als we het ls commando gebruiken met de optie-l (lange notatie) optie:

ls -l geek-buis

Het eerste teken van de lijst is een “p”, wat betekent dat het een pijp. Als het een “d”, zou dit betekenen dat het object van het bestandssysteem is een directory en een streepje (“- ” zou betekenen dat het een regulier bestand is.

Met behulp van de Named Pipe

Laten we gebruik maken van onze pipe. De naamloze leidingen gebruiken we in onze vorige voorbeelden passeerden de gegevens direct vanaf het verzenden van de opdracht naar de ontvangst van de opdracht. De gegevens verzonden door middel van een named pipe zal blijven in de pijp in te lezen is. De gegevens in het geheugen worden gehouden, zodat de grootte van de named pipe wordt niet variëren in ls listings of er gegevens in of niet.

We gaan gebruik maken van twee terminal windows voor dit voorbeeld. Ik zal gebruik maken van het label:

# Terminal-1

in een terminal venster en

# Terminal-2

in de andere, zodat u onderscheid kunt maken tussen hen. De hash “#” vertelt de shell die wat volgt is een reactie, en om het te negeren.

Laten we het geheel van ons vorige voorbeeld en sturen dat naar de named pipe. We zijn dus met beide naamloos en named pipes in een opdracht:

ls | rev | cut-d’.’ -f1 | rev | sort | uniq -c > geek-buis

Niets te veel lijkt te gebeuren. U zult merken dat u niet terug naar de opdrachtprompt al, dus iets aan de hand is.

In de andere terminal venster, geef dit commando:

cat < geek-buis

We zijn het omleiden van de inhoud van de named pipe in de kat, zodat de kat zal op het display van die inhoud, in de tweede terminal venster. Hier is de output:

En u zult zien dat u bent teruggekeerd naar de command prompt in het eerste terminal venster.

Dus, wat gebeurde gewoon.

  • We omgeleid output in de named pipe.
  • De eerste terminal venster niet terug naar de opdrachtprompt.
  • De gegevens bleef in de buis totdat het lezen van de buis in de tweede terminal.
  • We gingen terug naar de opdrachtprompt in het eerste terminal venster.

Denk je misschien dat je zou kunnen uitvoeren van de opdracht in het eerste terminal venster als een taak op de achtergrond door het toevoegen van een & naar het einde van de opdracht. En je zou gelijk hebben. In dat geval zouden we zijn teruggekeerd naar de opdrachtprompt onmiddellijk.

Het punt van het niet gebruiken van de verwerking op de achtergrond was om aan te geven dat een named pipe is een blokkerende proces. Doet iets in een named pipe is alleen het openen van het ene uiteinde van de buis. Het andere einde is niet geopend wordt tot het lezen van programma haalt de gegevens. De kernel onderbreekt het proces in de eerste terminal venster totdat de gegevens te lezen vanaf het andere uiteinde van de pipe.

De Kracht van Leidingen

Tegenwoordig, met de naam pijpen worden iets van een novelty act.

Gewoon oude Linux pijpen, aan de andere kant, zijn een van de meest handige hulpmiddelen die je kan hebben in je terminal window toolkit. De Linux commando-regel begint tot leven te komen voor u, en u een geheel nieuwe power-ups wanneer je kunt orkestreren van een verzameling opdrachten voor de productie van één samenhangende prestatie.

Afsteken hint: het is Het beste om te schrijven van uw doorgesluisd commando ‘ s door het toevoegen van een opdracht aan een tijd en het krijgen van dat gedeelte naar het werk, vervolgens de leidingen in de volgende opdracht.

LEES VERDER

  • “Waarom levert USB Zo Ingewikkeld?
  • “Wat Moet U Doen Als U een Phishing e-Mail?
  • “Waarom Heb Je om In te Loggen op Uw Thuis-PC, Toch?
  • “De Beste Nieuwe Functies in Android-10, Nu Beschikbaar
  • “Het Gebruik van het chown Commando op een Linux