Opdrachtregeluitvoer opslaan naar bestand op Windows, Mac en Linux
Wanneer u een opdracht in een Terminal-venster uitvoert, wordt de uitvoer van de opdracht normaal afgedrukt op de Terminal of op 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.
Notitie: We gebruiken de Mac Terminal Deze 6 geweldige terminalopdrachten 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 geen verrassing moeten zijn dat je kunt een aantal echt coole dingen doen met behulp van de Mac Terminal. Lees meer in ons voorbeeld, maar het werkt op dezelfde manier in de bash-shell op Linux 40+ Meest gebruikte Linux-terminalopdrachten 40+ Meest gebruikte Linux-terminalcommando's Of u 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 operators voor het omleiden van de uitvoer van een opdracht naar een bestand in plaats van het scherm.
De > symbool maakt een nieuw bestand als het niet aanwezig is, of overschrijft het bestand als het al bestaat. De >> maakt ook een nieuw bestand aan als dit 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, voert u de opdracht in en geeft u de opdracht op > of de >> operator en geef vervolgens het pad naar een bestand waarnaar u de uitvoer wilt omleiden. 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 naar de map geschreven ls_output.txt bestand in de TerminalOutput map.
Vervangen / Path / to / file met het volledige pad naar het bestand dat u wilt gebruiken.
ls> / pad / naar / bestand
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 de kat commando zoals getoond in de volgende opdracht. Nogmaals, vervang / Path / to / file 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 uitvoer om te leiden. Als u de uitvoer van meerdere opdrachten naar een enkel bestand wilt opslaan, gebruikt u de >> operator in plaats daarvan. 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 >> omleiding operator. Vervolgens het volledige pad naar het bestand waaraan we de uitvoer van het bestand willen toevoegen je naam commando.
De -een parameter in de je naam opdracht drukt alle beschikbare systeeminformatie af.
uname -a >> / Gebruikers /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 commando als mappenboom, met submappen recursief weergegeven (de R parameter) en één bestand per regel (de 1 parameter).
ls -1R> /Users/lorikaufman/TerminalOutput/dir_tree.txt
Vervolgens gebruiken we de kat commando, zoals eerder vermeld om de inhoud van het bestand in het Terminal-venster te bekijken.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Print uitvoer naar scherm en leid het naar een bestand
De > en >> operators geven de uitvoer van een opdracht niet weer 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 bekijken, gebruikt u de tee opdracht in plaats van de > en >> operators.
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 te gebruiken tee commando moet je de uitvoer van de opdracht die je draait pipen, zoals ls, naar de tee commando, met behulp van de pipe-operator, een verticale balk (|). De volgende opdracht neemt bijvoorbeeld de uitvoer van de ls beveel en leid het in de tee commando. De tee commando stuurt vervolgens die uitvoer naar het scherm en naar een bestand dat u opgeeft met behulp van 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 als de > operator. We gebruikten het volgende kat commando om de inhoud van ons bestand in het Terminal-venster te bekijken.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Om de te gebruiken tee opdracht om de 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 behulp van de uname -a commando, net zoals we deden met de >> operator, maar stuurt de uitvoer ook naar het scherm.
uname -a | tee -a /Users/lorikaufman/TerminalOutput/ls_output.txt
Het volgende commando is de tee versie van het afdrukken van een mappenboom recursief naar een bestand en naar het scherm, één bestand op elke regel, net zoals we deden met de > operator.
ls -1R | tee /Users/lorikaufman/TerminalOutput/dir_tree.txt
Vervolgens gebruiken we de kat 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 log-uitvoer van een 10 miljoen iteratie niet door voor loop 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.
Ontdek meer over: Linux Bash Shell, Terminal.