Een van de belangrijkste en interessante onderwerpen onder Linux-beheer is I/O-doorstuuring. Deze functie van de opdrachtregel stelt u in staat om de invoer en/of uitvoer van opdrachten van en/of naar bestanden te doorsturen, of meerdere opdrachten samen te voegen met behulp van pijpen om een zogenaamde ” opdrachtspijplijn ” te vormen.
Alle opdrachten die we uitvoeren produceren fundamenteel twee soorten uitvoer:
- de opdrachtresultaat – gegevens die het programma is ontworpen om te produceren, en
- de programmastatus en foutberichten die een gebruiker informeren over de uitvoeringsdetails van het programma.
In Linux en andere Unix-achtige systemen zijn er drie standaard bestanden met de naam hieronder die ook geïdentificeerd worden door de shell met behulp van bestandsdeskriptor nummers:
- stdin of 0 – het is verbonden met het toetsenbord, de meeste programma’s lezen invoer van dit bestand.
- stdout of 1 – het is verbonden met het scherm, en alle programma’s sturen hun resultaten naar dit bestand en
- stderr of 2 – programma’s sturen status-/foutberichten naar dit bestand dat ook verbonden is met het scherm.
Daarom stelt I/O-doorstuuring u in staat om de invoersource van een opdracht te wijzigen, evenals waarnaar zijn uitvoer en foutberichten worden verzonden. En dit is mogelijk gemaakt door de "<"
en ">"
doorstuuroperatoren.
Hoe om standaarduitvoer naar bestand in Linux te doorsturen
Je kunt standaarduitvoer doorverwijzen zoals in het onderstaande voorbeeld, hier willen we de uitvoer van het top commando opslaan voor latere inspectie:
$ top -bn 5 >top.log
Waarbij de vlaggen:
-b
– top in batchmodus laat draaien, zodat je de uitvoer kunt doorverwijzen naar een bestand of een ander commando.-n
– geeft het aantal iteraties aan voordat het commando wordt beëindigd.
Je kunt de inhoud van het bestand top.log
bekijken met het cat commando als volgt:
$ cat top.log
Om de uitvoer van een commando toe te voegen, gebruik je de ">>"
operator.
Bijvoorbeeld om de uitvoer van het top commando hierboven toe te voegen aan het bestand top.log, vooral binnen een script (of op de commandoregel), voer je de volgende regel in:
$ top -bn 5 >>top.log
Let op: Door het gebruik van het bestandsdescriptornummer is het uitvoerdoorverwijzingscommando hierboven hetzelfde als:
$ top -bn 5 1>top.log
Hoe Standaard Fouten Doorverwijzen naar Bestand in Linux
Om de standaardfout van een commando door te verwijzen, moet je expliciet het bestandsdescriptornummer, 2
, specificeren voor de shell om te begrijpen wat je probeert te doen.
De ls-opdracht hieronder zal een foutmelding geven wanneer uitgevoerd door een normale systeemgebruiker zonder rootrechten:
$ ls -l /root/
U kunt de standaardfout doorsturen naar een bestand zoals hieronder:
$ ls -l /root/ 2>ls-error.log $ cat ls-error.log

Om de standaardfout toe te voegen, gebruik de opdracht hieronder:
$ ls -l /root/ 2>>ls-error.log
Hoe de standaarduitvoer/fout doorsturen naar één bestand
Het is ook mogelijk om alle uitvoer van een opdracht vast te leggen (zowel standaarduitvoer als standaardfout) in één bestand. Dit kan op twee mogelijke manieren worden gedaan door de bestandsdescriptor-nummers op te geven:
1. De eerste is een relatief oude methode die als volgt werkt:
$ ls -l /root/ >ls-error.log 2>&1
De bovenstaande opdracht betekent dat de shell eerst de uitvoer van de ls-opdracht naar het bestand ls-error.log zal sturen (met behulp van >ls-error.log
), en vervolgens alle foutmeldingen naar de bestandsdescriptor 2 (standaarduitvoer) zal schrijven die is omgeleid naar het bestand ls-error.log (met behulp van 2>&1
). Dit impliceert dat de standaardfout ook naar hetzelfde bestand als de standaarduitvoer wordt gestuurd.
2. De tweede en directe methode is:
$ ls -l /root/ &>ls-error.log
U kunt ook standaarduitvoer en standaardfout toevoegen aan één bestand als volgt:
$ ls -l /root/ &>>ls-error.log
Hoe standaardinvoer naar bestand doorsturen
De meeste, zo niet alle, opdrachten krijgen hun invoer van standaardinvoer, en standaardinvoer is standaard gekoppeld aan het toetsenbord.
Om standaardinvoer om te leiden vanuit een bestand anders dan het toetsenbord, gebruik de operator “"<"
zoals hieronder:
$ cat <domains.list

Hoe Standaardinvoer/Uitvoer Omleiden naar Bestand
Je kunt standaardinvoer, standaarduitvoer omleiden tegelijkertijd met behulp van het sorteercommando zoals hieronder:
$ sort <domains.list >sort.output
Hoe I/O-omleiding te Gebruiken met Pijpen
Om de uitvoer van het ene commando om te leiden als invoer van een ander, kun je pijpen gebruiken, dit is een krachtig middel om nuttige commandoregels te bouwen voor complexe bewerkingen.
Bijvoorbeeld, het commando hieronder zal de top vijf recent gewijzigde bestanden weergeven.
$ ls -lt | head -n 5
Hier, de opties:
-l
– schakelt de lange lijstweergave in-t
– sorteren op wijzigingstijd met de nieuwste bestanden worden eerst getoond-n
– geeft het aantal koptekstregels aan om weer te geven
Belangrijke Commando’s voor het Bouwen van Pijplijnen
Hier zullen we kort twee belangrijke commando’s bespreken voor het bouwen van commandopijplijnen en dat zijn:
xargs wordt gebruikt om opdrachtregels te bouwen en uit te voeren van standaardinvoer. Hieronder staat een voorbeeld van een pijplijn die xargs gebruikt, deze opdracht wordt gebruikt om een bestand naar meerdere mappen in Linux te kopiëren:
$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

En de opties:
-n 1
– instrueert xargs om hoogstens één argument per opdrachtregel te gebruiken en naar het cp-commando te sturencp
– kopieert het bestand-v
– toont de voortgang van het kopieercommando.
Voor meer gebruiksopties en informatie, lees de xargs man-pagina:
$ man xargs
A tee command reads from standard input and writes to standard output and files. We can demonstrate how tee works as follows:
$ echo "Testing how tee command works" | tee file1

Bestands- of tekstfilters worden vaak gebruikt met pijpen voor effectieve Linux-bestandsbewerkingen, om informatie op krachtige manieren te verwerken, zoals het herstructureren van de uitvoer van commando’s (dit kan essentieel zijn voor het genereren van nuttige Linux-rapporten), het wijzigen van tekst in bestanden en verschillende andere Linux-systeembeheertaken.
Lees meer over Linux-filters en pijpen in dit artikel Zoek de top 10 IP-adressen die toegang hebben tot de Apache-server, dat een nuttig voorbeeld laat zien van het gebruik van filters en pijpen.
In dit artikel hebben we de basisprincipes van I/O-omleiding in Linux uitgelegd. Vergeet niet om uw gedachten te delen via de feedbacksectie hieronder.
Source:
https://www.tecmint.com/linux-io-input-output-redirection-operators/