Beliebt

WofĂŒr ist der Befehl zsh builtin `r`? - zsh

Ich habe versehentlich getippt r in die Shell und bekam, was schien, eine Wiederholung des letzten Befehls, den ich ausgefĂŒhrt habe.

man zshbuiltinsunhelferlich sagt Dies:

r - Gleich wie fc -e -.

Die Dokumentation fĂŒr fc ist fast undurchdringlich aber ich habe es geschafft, diese Zitate herauszuziehen:

  • fc [ -eename] [ -LI ] [ -mmatch] [old=new... ] [first[last] ]

  • das Editor-Programm ename wird fĂŒr eine Datei aufgerufen, die diese Verlaufsereignisse enthĂ€lt. Nach Abschluss der Bearbeitung wird der bearbeitete Befehl ausgefĂŒhrt.

  • Ob ename ist -wird kein Editor aufgerufen.

Das liest sich fĂŒr mich wie das Verhalten von r ist Ă€hnlich wie das Ausrufezeichen !, indem es die Geschichte wiederholt. In der Tat, wenn ich setopt banghist Knall wieder einzuschalten, Dinge wie r man und ! man beide scheinen meinen letzten Aufruf an den Menschen zu wiederholen.

Was sind die Gemeinsamkeiten und Unterschiede zwischen r und !? Was ist ein hypothetisches Szenario, in dem ich verwenden könnte r?

Antworten:

2 fĂŒr Antwort № 1

Sie haben gute Arbeit geleistet und die richtigen Passagen aus der Manpage zitiert.

zsh vererbt r von ksh, als auch nicht Bash oder csh kenne diesen Befehl. Ich nehme an, dass die Implementierung so gut wie möglich mit diesen drei Hauptschalen kompatibel ist.

Auf der anderen Seite schlÀgt der Mechanismus der Geschichte ! entstammt aus csh die mit deaktiviert werden kann setopt NO_BANG_HIST.

Ein Unterschied zwischen diesen beiden Mechanismen, der mir einfĂ€llt, ist der r und ! werden anders analysiert, als ! ist ein reserviertes Wort, aber r nur ein (eingebauter) Befehl. Das heißt, Sie können z.

$ echo my last command was !!

was bekommt (je nach einstellung nach drĂŒcken von SPACE oder ENTER) bis

$ echo my last command was man zshexpn

was mit nicht möglich ist r es sei denn, Sie verwenden die Befehlssubstitution $(r) Na sicher.

Also, ich denke, es lÀuft alles auf persönliche Vorlieben oder Gewohnheiten hinaus (wenn Sie es gewohnt sind) ksh oder csh) ...