Startpagina » hoe » Hoe de uitvoer van een commando in Bash op te slaan naar een bestand (ook bekend als de Linux en macOS Terminal)

    Hoe de uitvoer van een commando in Bash op te slaan naar een bestand (ook bekend als de Linux en macOS Terminal)

    Wanneer u een opdracht uitvoert bij de bash-prompt, wordt normaal gesproken de uitvoer van die opdracht rechtstreeks naar de terminal afgedrukt, zodat u deze onmiddellijk kunt lezen. Maar met bash kun je ook de uitvoer van elke opdracht "doorverwijzen", en opslaan in een tekstbestand, zodat je de uitvoer later kunt bekijken.

    Dit werkt bash op elk besturingssysteem, van Linux en macOS tot Windows 10's Ubuntu-gebaseerde bash-omgeving.

    Optie één: voer alleen uitvoer naar een bestand om

    Om bash-omleiding te gebruiken, voert u een opdracht uit, geeft u de > of >> operator en geef vervolgens het pad op van een bestand waarnaar de uitvoer moet worden omgeleid.

    •  > leidt de uitvoer van een commando om naar een bestand en vervangt de bestaande inhoud van het bestand.
    •  >> leidt de uitvoer van een opdracht om naar een bestand, waarbij de uitvoer wordt toegevoegd aan de bestaande inhoud van het bestand.

    Technisch verwijst dit om naar "stdout" - de standaarduitvoer, wat het scherm is - naar een bestand.

    Hier is een eenvoudig voorbeeld. De ls opdracht geeft een lijst van bestanden en mappen in de huidige map. Zo. wanneer u de volgende opdracht uitvoert, ls zal bestanden en mappen weergeven in de huidige map. Maar het zal ze niet op het scherm afdrukken - het zal ze opslaan in het bestand dat u opgeeft.

    ls> / pad / naar / bestand

    U hoeft het pad naar een bestaand bestand niet op te geven. Specificeer een geldig pad en bash maakt een bestand op die locatie.

    Als u de inhoud van het bestand bekijkt, ziet u de ls opdrachtuitgang. Bijvoorbeeld de kat commando print de inhoud van een bestand naar de terminal:

    cat / path / to / file

    Herinner de >  operator vervangt de bestaande inhoud van het bestand door de uitvoer van de opdracht. Als u de uitvoer van meerdere opdrachten in één bestand wilt opslaan, gebruikt u de >> operator in plaats daarvan. Met de volgende opdracht wordt bijvoorbeeld systeeminformatie toegevoegd aan het bestand dat u opgeeft:

    uname -a >> / path / to / file

    Als het bestand nog niet bestaat, maakt bash het bestand aan. Anders zal bash de bestaande inhoud van het bestand alleen laten en de uitvoer toevoegen aan het einde van het bestand.

    Wanneer u de inhoud van het bestand bekijkt, ziet u dat de resultaten van uw tweede opdracht aan het einde van het bestand zijn toegevoegd:

    U kunt dit proces zo vaak herhalen als u wilt om de uitvoer aan het einde van het bestand toe te voegen.

    Optie twee: afdrukuitvoer normaal gesproken en omleiden naar een bestand

    U vindt het misschien niet leuk om de uitvoer om te leiden met de > of >> operators, omdat u de uitvoer van de opdracht niet in de terminal ziet. Dat is wat de tee commando is voor. De tee-opdracht drukt de invoer af die op het scherm wordt ontvangen en slaat het tegelijkertijd op in een bestand.

    Om de uitvoer van een commando naar te pipen tee, afdrukken op uw scherm en opslaan in een bestand, gebruikt u de volgende syntaxis:

    commando | tee / pad / naar / bestand

    Hiermee wordt alles in het bestand vervangen door de uitvoer van het commando, net als het > operator.

    Om de uitvoer van een commando naar te pipen tee , afdrukken naar uw scherm en opslaan in een bestand, maar toevoegen aan het einde van het bestand:

    commando | tee -a / path / to / file

    Hiermee wordt de uitvoer aan het einde van het bestand toegevoegd, net als de >> operator.

    De bash-shell bevat enkele extra, geavanceerde operators die soortgelijke functies uitvoeren. Ze zijn vooral handig als je bash-scripts schrijft. Raadpleeg het hoofdstuk I / O-omleiding in de Advanced Bash-Scripting Guide voor meer gedetailleerde informatie.