2017-01-27 4 views
0

Ich mache einige Datenanalyse in der Bash mit verschiedenen Werkzeugen und ab und zu gebe ich so etwas wieeinen Befehl in bash

>some_command -with -complicated -arguments 

Oft sofort folgen ich dies oben mit

>echo "some_command -with -complicated -arguments" >> mylog.txt 

Gibt es eine Möglichkeit, dies auf einmal zu tun? Es ist ein Schmerz, den Pfeil nach oben zu treffen, echo hinzuzufügen und so weiter zu quittieren.

Ich möchte nicht meine gesamte Sitzung protokollieren, ich sollte hinzufügen, weil es eine Menge Dinge geben würde, die es nicht wert sind, aufgezeichnet zu werden.

+1

Überprüfen Sie den Befehl 'history' sowie die .bash_history-Datei – CoconutBandit

+2

Cross-Site-Duplikat: http://unix.stackexchange.com/questions/38072/how-can-i-save-the-last-command -to-a-file –

+1

Local sehr nahe-Duplikat (die Antwort auf die andere macht die Antwort zu diesem offensichtlich): http://StackOverflow.com/Questions/40715729/linux-Store-Last-Command-Into-Variable –

Antwort

0

Nach den Referenzen wies darauf hin, durch Charles Duffy, landete ich das meinem .bashrc Aufsummierung:

logit() { 
    fc -ln -1 | sed '1s/^[[:space:]]*//' >> ${1:-commands.txt} 
} 

So logit allein wird den letzten Befehl zu commands.txt hinzufügen und logit myfile fügt die letzter Befehl an myfile.

0
verbose() { 
    echo "[email protected]" >> mylogfile 
    "[email protected]" 
} 

verbose sleep 1 # "sleep 1" is the example command 
+1

Dies wird '-foo" bar baz "' identisch mit ' - foo bar baz. –

+1

Wenn Sie nur eine semantische Äquivalenz mit dem Befehl benötigen, den der Benutzer ausgeführt hat, beachten Sie: 'verbose() {local cmd_q; printf -v cmd_q '% q' "$ @"; printf '% s \ n' "$ {cmd_q%}" >> mylogfile; "$ @"; } '- aber das ist nur semantische Äquivalenz, es ist nicht der genaue Text (und, sagen wir," verbose cat - "$ (etwas)"> woanders "wird weder die Weiterleitung * noch das Wissen protokollieren, dass es die Ausgabe war von "etwas" verwendet, um das letzte Argument vor der Umleitung zu bilden. –

+0

Ja, das ist ein Problem. Zum Beispiel wird "sed -i" s/Alice/Bob/g "test.txt" als "sed -is/Alice/Bob/g test.txt" protokolliert. Ich hätte gerne den genauen Originalbefehl gespeichert. –