zshでbashの `history -p`を置き換えますか?

zshでbashの `history -p`を置き換えますか?

bashでは、history -p歴史は主張を拡張します。 zshの代替案は何ですか?

答え1

私は何も知りませんが、histverify履歴演算子を含む行でEnterキーを押すと、コマンドを実行せずにエディタバッファで拡張が実行されるように履歴拡張の動作を変更するオプションを参照してください。

$settopt 履歴の確認
$エコ!! Enter
$ エコ setopt histverifyEnter
setopt レコードの確認

(歴史的拡張は70年代後半からです)、歴史的修飾子(例えば、、、...)zshをパラメータ拡張(...)にも適用できます。csh:h:r:A$var:h

そして全体の記録は特別な関連配列を通してアクセスすることができます$history

この連想配列のキーは履歴番号であり、順序が定義されていない通常の連想配列とは異なり、キーの数値に基づいて降順にソート$history[@]されます。

${history:0:1}最後の歴史的項目についても同様です。したがって、パラメータスプレッド演算子を使用すると、過去のスプレッド演算子と同じ結果を得ることができます。たとえば、次のように!$:hなります。${${(z)history:0:1}[-1]:h}

答え2

Bashでは、次のようにコマンドを拡張できます。

history -p !23 

したがって、23にls -lがある場合、戻りは次のようになります。

ls 
-l 

zshでは、次のようにして同様の(ただし同じではない)動作を再現できます。

history 23 23 | xargs -n1 | tail -n+2

関連情報