4Sep

Så här sparar du en kommandos utdata till en fil i bash( även Linux och MacOS-terminalen)

När du kör ett kommando vid bash-prompten skriver det normalt utmatningen av det här kommandot direkt till terminalen så att du kan läsa det direkt. Men bash tillåter dig också att "omdirigera" resultatet av ett kommando, spara det till en textfil så att du kan granska produktionen senare.

Detta fungerar i bash på alla operativsystem, från Linux och MacOS till Windows 10: s Ubuntu-bash-miljö.

Alternativ One: Omdirigera utdata till en fil endast

För att använda bash-omdirigering kör du ett kommando, ange & gt;eller & gt; & gt;operatören, och ange sedan sökvägen till en fil som du vill att produktionen omdirigeras till.

  • & gt;omdirigerar utmatningen av ett kommando till en fil och ersätter det befintliga innehållet i filen.
  • & gt; & gt;omdirigerar utmatningen av ett kommando till en fil och lägger till utgången till det befintliga innehållet i filen.

Tekniskt omdirigerar detta "stdout" -standardutgången, vilken är skärmen till en fil.

Här är ett enkelt exempel. Kommandot ls listar filer och mappar i den aktuella katalogen. Så.När du kör följande kommando kommer du att lista filer och mappar i den aktuella katalogen. Men det kommer inte att skriva ut dem på skärmen. Det sparar dem till filen du anger.

ls & gt;/path/to/-fil

Du behöver inte ange sökvägen till en befintlig fil. Ange någon giltig sökväg och bash kommer att skapa en fil på den platsen.

Om du tittar på innehållet i filen ser du kommandot ls-kommandot. Kattkommandot skriver till exempel innehållet i en fil till terminalen:

-katt /path/to/-fil

Kom ihåg att & gt;operatören ersätter det befintliga innehållet i filen med utgången av kommandot. Om du vill spara utdata från flera kommandon till en enda fil, använder du & gt; & gt;operatör istället. Till exempel kommer följande kommando att lägga till systeminformation till filen du anger:

uname -a & gt; & gt;/path/to/-fil

Om filen inte existerar kommer bash att skapa filen. Annars lämnar bash det befintliga innehållet i filen ensam och lägger till utgången till slutet av filen.

När du tittar på innehållet i filen ser du resultaten av ditt andra kommando bifogades till slutet av filen:

Du kan upprepa denna process så många gånger som du vill behålla tilläggsutdata till slutet avfil.

Alternativ två: Skriv ut utgången normalt och omdirigera den till en fil

Du kanske inte gillar att omdirigera utmatningen med & gt;eller & gt; & gt;operatörer, eftersom du inte ser utmatningen av kommandot i terminalen. Det är vad tee-kommandot är för. Tee-kommandot skriver ut den inmatning som den tar emot på skärmen och sparar den till en fil samtidigt.

Använd följande syntax för att leda utmatningen från ett kommando till en tee, skriva ut den till skärmen och spara den i en fil:

-kommando |tee /path/to/-fil

Detta kommer att ersätta allt i filen med utmatningen av kommandot, precis som & gt;operatör.

Att pipa utmatningen från ett kommando till tee, skriva ut till din skärm och spara det till en fil, men lägg till det i slutet av filen:

-kommando |tee-en /path/to/-fil

Detta lägger till utgången till slutet av filen, precis som & gt; & gt;operatör.

Bash-skalet innehåller några ytterligare avancerade operatörer som utför liknande funktioner. De kommer att vara särskilt användbara om du skriver bash-skript. Kontakta kapitlet I / O-omdirigering i Advanced Bash-Scripting Guide för mer detaljerad information.