Wanneer u een opdracht uitvoert in een terminalvenster, wordt de uitvoer van de opdracht normaal afgedrukt naar de terminal of naar het scherm, zodat u deze onmiddellijk kunt lezen. U kunt ook de uitvoer van een opdracht naar een bestand afdrukken, als u het wilt opslaan.
Het opslaan van de uitvoer van een commando naar een bestand is handig als u een probleem probeert te diagnosticeren. Om hulp te krijgen van technische ondersteuning, moet u mogelijk bepaalde opdrachten op uw computer uitvoeren en de resultaten naar het ondersteuningsteam verzenden. Dit is eenvoudig met behulp van uitvoeromleiding op de opdrachtregel.
Vandaag bespreken we hoe de uitvoer van een opdracht naar een tekstbestand in de bash-shell op Windows, Mac en Linux kan worden verzonden.
Opmerking: we zullen de Mac Terminal gebruiken Deze 6 geweldige terminalcommando's zullen je MacBook boosten Deze 6 fantastische terminalopdrachten zullen je MacBook boosten Je kunt alleen zoveel in de grafische gebruikersinterface proppen voordat het rommelig wordt, dus het zou als geen grote moeten komen verras dat je een aantal echt coole dingen kunt doen met de Mac Terminal. Lees meer in ons voorbeeld, maar het werkt op dezelfde manier in de bash-shell op Linux 40+ Meestgebruikte Linux Terminal-opdrachten 40+ Meest gebruikte Linux-terminalcommando's Of je nu net begint of gewoon nieuwsgierig bent naar de Linux-terminal, hier zijn de meest voorkomende commando's die je door je hele tijd op Linux zullen voeren. Meer lezen en in de nieuwe bash-shell in Windows 10 Een korte handleiding voor Linux Bash Shell in Windows 10 Een korte handleiding voor Linux Bash Shell in Windows 10 U kunt nu Linux op Windows uitvoeren. Lees meer over Bash op Windows, van hoe en waarom je het moet installeren, naar verborgen functies die je waarschijnlijk nog niet wist. Lees verder .
Voer alleen uitvoer naar een bestand om
Er zijn twee operatoren om de uitvoer van een commando om te leiden naar een bestand in plaats van naar het scherm.
Het symbool > maakt een nieuw bestand als het niet aanwezig is, of overschrijft het bestand als het al bestaat. De >> maakt ook een nieuw bestand als het niet aanwezig is, maar voegt de tekst aan het einde van het bestand toe als deze al bestaat, in plaats van het bestand te overschrijven.
Opmerking voor uzelf: wanneer u een uitvoer van een shell-script omleidt naar een bestand, wordt deze niet weergegeven op de console :-) #StupidMe
- Xavier Mertens? (@xme) 5 augustus 2017
Als u de uitvoer van een opdracht naar een bestand wilt omleiden, typt u de opdracht, geeft u de operator > of >> op en geeft u vervolgens het pad naar een bestand waarnaar u de uitvoer wilt doorsturen. Met de opdracht ls worden bijvoorbeeld de bestanden en mappen in de huidige map weergegeven. Wanneer u de volgende opdracht uitvoert, wordt de lijst met bestanden en mappen geschreven naar het bestand ls_output.txt in de map TerminalOutput .
Vervang / pad / naar / bestand met het volledige pad naar het bestand dat u wilt gebruiken.
ls>/path/to/file
Dit is de opdracht voor ons voorbeeld.
ls>/Users/lorikaufman/TerminalOutput/ls_output.txt
Om de inhoud van het bestand in het Terminal-venster te bekijken, gebruikt u het cat- commando zoals getoond in de volgende opdracht. Nogmaals, vervang / pad / naar / bestand met het volledige pad naar het bestand dat u wilt bekijken.
cat /path/to/file
De operator > vervangt de inhoud van een bestaand bestand elke keer dat u het gebruikt om de uitvoer om te leiden. Als u de uitvoer van meerdere opdrachten naar een enkel bestand wilt opslaan, gebruikt u in plaats daarvan de operator >> . Hiermee voegt u de uitvoer van een opdracht toe aan het einde van het opgegeven bestand, als dit al bestaat. Als het bestand niet bestaat, maakt het een nieuw bestand.
We voegen bijvoorbeeld systeeminformatie toe aan het einde van het bestand dat we hierboven hebben gemaakt. Dus, in de volgende regel, uname -a is het commando, gevolgd door de >> redirection-operator. Vervolgens het volledige pad naar het bestand waaraan we de uitvoer van de opdracht uname willen toevoegen.
De parameter -a in de opdracht uname drukt alle beschikbare systeeminformatie af.
uname -a>>/Users/lorikaufman/TerminalOutput/ls_output.txt
Om het bestand met de toegevoegde informatie in het Terminal-venster te bekijken, voert u de volgende opdracht in, met het volledige pad naar uw bestand.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Herhaal dit proces zo vaak als nodig is om de opdrachtuitvoer aan het einde van het bestand toe te voegen.
Hier is nog een voorbeeld van het verzenden van de uitvoer van de ls- opdracht als mapstructuur, met submappen die recursief worden vermeld (de parameter R ) en één bestand per regel (de parameter 1 ).
ls -1R>/Users/lorikaufman/TerminalOutput/dir_tree.txt
Vervolgens gebruiken we het cat- commando, zoals eerder vermeld, om de inhoud van het bestand in het Terminal-venster te bekijken.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Print de uitvoer naar het scherm en leid deze naar een bestand
De operatoren > en >> tonen de uitvoer van een opdracht niet op het scherm. De uitvoer wordt alleen naar een bestand gestuurd.
Als u de uitvoer naar een bestand wilt verzenden en deze op het scherm wilt zien, gebruikt u de opdracht tee in plaats van de operatoren > en >> .
Nerd waarschuwing! Vandaag ontdekte ik het `tee`-commando, dat zowel naar een bestand als naar standaard uitkomt. Unix blijft blij. pic.twitter.com/aClIT8AdJB
- Zeke Sikelianos (@zeke) 29 augustus 2017
Om de tee- opdracht te gebruiken, moet u de uitvoer van de opdracht die u uitvoert, zoals ls, naar de tee- opdracht pipen, met behulp van de pipe-operator, een verticale balk ( | ). De volgende opdracht neemt bijvoorbeeld de uitvoer van de ls- opdracht en leidt deze naar de tee- opdracht. De tee- opdracht verzendt vervolgens die uitvoer naar het scherm en naar een bestand dat u opgeeft met het volledige pad naar het bestand.
ls | tee /Users/lorikaufman/TerminalOutput/ls_output.txt
De bovenstaande opdracht vervangt alle inhoud in het bestand of maakt een nieuwe als deze niet bestaat, net zoals de operator > . We hebben de volgende cat- opdracht gebruikt om de inhoud van ons bestand in het Terminal-venster te bekijken.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Om de tee- opdracht te gebruiken om uitvoer naar het scherm af te drukken en deze toe te voegen aan het einde van een bestand, voert u de volgende opdracht in. Hier voegen we volledige systeeminformatie toe aan het einde van het bestand met de opdracht uname -a, net zoals we dat met de operator >> deden, maar ook de uitvoer naar het scherm verzenden.
uname -a | tee -a /Users/lorikaufman/TerminalOutput/ls_output.txt
De volgende opdracht is de tee- versie van het recursief afdrukken van een directoryboom naar een bestand en naar het scherm, één bestand op elke regel, net als met de operator > .
ls -1R | tee /Users/lorikaufman/TerminalOutput/dir_tree.txt
Vervolgens gebruiken we het cat- commando opnieuw om de inhoud van het bestand te bekijken.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Maar wacht, er is meer
Er zijn veel meer manieren om uitvoer, inclusief fouten, om te leiden naar een bestand. U kunt lezen over de verschillende operatoren en opdrachten die worden gebruikt om de uitvoer om te leiden in het hoofdstuk I / O-omleiding van de Advanced Bash Scripting Guide. U kunt ook meer leren over het gebruik van de opdrachtregel. Een korte handleiding Aan de slag met de Linux-opdrachtregel Een korte handleiding Aan de slag met de Linux-opdrachtregel U kunt veel geweldige dingen doen met opdrachten in Linux en het is echt niet moeilijk om te leren . Lees verder .
Ik heb vandaag een goede les geleerd. Leid de loguitvoer van een 10 miljoen iteratie niet om naar lus naar een txt-bestand. Resultaat: 5 GB txt-bestand.
- Lloyd (@ lcarswell1) 21 mei 2017
Waarvoor gebruikt u uitvoeromleiding? Welke methode gebruikt u? Hebt u andere manieren geleerd om uitvoer om te leiden? Deel uw mening en ervaringen met ons in de opmerkingen hieronder.