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) ...