Mein Ziel ist es, alle Ausgaben eines Skripts in einem Verzeichnis zu protokollieren, das das Skript erstellen wird.
Zum Beispiel habe ich:
~/.abc.sh
::
#! /bin/bash
rails new myapp
Wenn ich renne ...
cd ~/code
. ~/.abc.sh
... das erstellt eine neue Rails-App im Verzeichnis ~/code/myapp
.
Wenn Rails eine App erstellt, wird eine ganze Menge Text ausgegeben, den ich erfassen und in einer Protokolldatei in demselben Verzeichnis speichern möchte, in dem der rails
Befehl neu erstellt wurde. Ich möchte diesen Text auch im Terminal anzeigen.
Wie mache ich das?
~/.abc.sh | tee <file>
? Wenn ja, dann ist das Problem, dass ich nicht weiß, in welchem Verzeichnis das Skript die App erstellen wird, wenn ich sie aufrufe. Woher weiß ich also, was ich imfile
Argument angeben soll? (Danke für die tollen Beispiele)mktemp
. Siehe die Handbuchseiteman mktemp
.script
startet eine interaktive Sitzung und protokolliert die gesamte Ausgabe (stdout / stderr usw.) in einer Datei oder führt (mit dem-c
Parameter) einen Befehl aus und protokolliert die Ausgabe davon.Hinweis: In einer interaktiven Sitzung können Sie die Aufzeichnung beenden, indem Sie die Sitzung wie gewohnt beenden (z . B.
exit
oder Ctrl-D).Für die Sitzungsaufzeichnung mit Videowiedergabe können Sie auch asciinema ausprobieren .
quelle