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

    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 utmatning till enbart fil

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

    •  > omdirigerar utmatningen av ett kommando till en fil och ersätter det befintliga innehållet i filen.
    •  >> 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. De ls Kommandot listar filer och mappar i den aktuella katalogen. Så. när du kör följande kommando, ls kommer att lista filer och mappar i den aktuella katalogen. Men det kommer inte att skriva ut dem på skärmen - det kommer att spara dem till filen du anger.

    ls> / sökväg / till / 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 visar innehållet i filen ser du ls kommandoens utgång. Till exempel, katt kommandot skriver ut innehållet i en fil till terminalen:

    katt / sökväg / till / fil

    Kom ihåg att >  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 >> operatör istället. Till exempel kommer följande kommando att lägga till systeminformation till filen du anger:

    uname -a >> / path / to / file

    Om filen inte existerar kommer bash att skapa filen. Annars lämnar bash det existerande 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 av filen.

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

    Du kanske inte gillar att omdirigera utdata med > eller >> operatörer, eftersom du inte ser produktionen 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 det till en fil samtidigt.

    Att leda utmatningen från ett kommando till tee, skriva ut den till din skärm och spara den i en fil, använd följande syntax:

    kommando | tee / väg / till / fil

    Detta kommer att ersätta allt i filen med utgången av kommandot, precis som > operatör.

    Att leda utmatningen från ett kommando till tee , skriver ut till din skärm och sparar den till en fil, men lägger till den i slutet av filen:

    kommando | tee -a / path / to / file

    Detta lägger till utgången till slutet av filen, precis som >> 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.