Ist es möglich, nach dem Befehl ein Trennzeichen in eine Eingabeaufforderung einzufügen? Dies ist ein Beispiel:
~/Desktop: ls -al
-------------------------------------
total 80
drwx------+ 6 eddie staff 204B Apr 29 16:57 .
drwxr-xr-x+ 54 eddie staff 1.8K Apr 30 10:54 ..
~/Desktop:
Insbesondere möchte ich den --------- Teil nach der Ausgabe eines Befehls hinzufügen, um den Befehl leichter vom Ergebnis zu unterscheiden
Antworten:
In zsh können Sie die Hook-Funktion so definieren
preexec
, dass eine bestimmte Zeichenfolge wiederholt wird, bevor jeder Befehl ausgeführt wird.In Bash können Sie die
DEBUG
Falle verwenden, um einen Preexec-Hook einzurichten, um dasselbe zu tun.Sie würden eine preexec () - Funktion wie folgt definieren:
Weitere Informationen finden Sie unter Hat bash einen Hook, der ausgeführt wird, bevor ein Befehl ausgeführt wird?
Ich denke nicht, dass dies in allen Versionen von Bash funktioniert. Auf meinem alten Ubuntu Server laufen bash 3.2.39 (1),
help trap
sagtAuf einem anderen Server, auf dem bash 4.1.2 (1) ausgeführt wird, heißt es
Welches ist, was wir brauchen. Stellen Sie also sicher, dass in Ihrer Version von bash
help trap
" vor jedem einfachen Befehl" steht.quelle
Wenn Sie bash oder ksh für Ihre Shell verwenden, können Sie eine Funktion in einer Ihrer Punktedateien (.profile, .bash_profile usw.) wie folgt erstellen:
Anschließend können Sie Befehlen voranstellen, wann immer Sie möchten, dass dieses Trennzeichen
&&
oder;
als Befehlstrennzeichen verwendet wird. Wie in:oder
Ich mache das Ich habe eine zweite Funktion, die auch einen dickeren Separator druckt.
Ich verwende diese Funktionen häufig in Shell-Skripten, um verschiedene Teile der Skripte zu trennen, z. B.
hr2
zwischen Hauptaufgaben undhr
zwischen Elementen in einer Schleifenanweisung. Dies erleichtert das Lesen der Skriptausgabe erheblich.quelle
function hr { echo '---…'; "$@"; }
stattdessen? Dann können Sie es ohne&&
oder;
auch verwenden :hr ls -la
. Ein noch dickerer Separator :figlet -- '---…'
.