前のコマンドの最後の引数を!$
で呼び出したり、前の引数をALT + .
で循環したりできることは知っていますが、現在使用されているコマンドに使用されている最後の引数を思い出せますか?
例えば、
root@chip:/# echo peckahs
root@chip:/# *_stuffthatdoesntmatter_*
root@chip:/# *_stuffthatdoesntmatter_*
root@chip:/# *_stuffthatdoesntmatter_*
root@chip:/# echo peckahs < used key shortcut to recall 'peckahs' the last used argument for echo
Bashを使用すると、次のように、求めていることをほぼ実行できます。
echo !echo:$
だからあなたがするとき
echo This is fun
ls
echo !echo:$
最後の行はfun
を出力します。 *
の代わりに $
一致するコマンドへのすべての引数を生成します。そう
echo This is fun
ls
echo !echo:*
出力This is fun
再び;しかし、あなたはただするほうがよいでしょう
!echo
この場合。
これは、同じコマンドでコマンドの引数を繰り返すことに限定されません。
printf !echo:*
詳細については、 bashリファレンスマニュアル を参照してください。これをhistverify
Shellオプションと組み合わせて、実行前にコマンドをチェックする機会を与えることもできます。これにより、キーボード操作の履歴ベースの完了に近づくことができます。
履歴拡張はどこでも使用できます。だから例えば
lastechoargs="!echo:*"
最後のecho
コマンドへのすべての引数をlastechoargs
変数に格納しました。
これは完全なコマンドでも機能します。たとえば、複雑なgit
コマンドを作成し、それをファイルに保存したいとします。
echo !git > mygitcommand
または、いくつかのディレクトリをアーカイブしたいが、最初にいくつかのファイルを削除することにしました。
ls dir1 dir2
rm dir2/somefile
tar cpzf archive.tar.gz !ls:*
Emacsモードでbashを使用できる場合は、 Ctrl+w (最後の単語を削除)次に Ctrl+u (削除された文字列を入力)
はい。どのPOSIXシェルでも実行できます...
set -o vi
^[[num]-#^[[num]_
...ここで、^[
はESC
キーを表し、[num]
は現在のコマンドから逆方向にカウントするn
thhistoryコマンドおよびn
thのオプションのパラメーターを表します。前のコマンドの引数は、それぞれ最後から逆方向にカウントします。キーボードの設定によっては、代わりにCTRLと組み合わせキーを使用できる場合があります。
このシーケンスは、番号付きコマンドを呼び出し、それに#
コメントを付加して、最後のコマンドとしてシェル履歴に保存します。次に、^[_
ショートカットは、最後のコマンドの最後の引数を呼び出します。
bash
は、デフォルトで最後の引数をシェルパラメータ$_
にも保存するため、最初の部分を実行した後、最後の引数をそのように展開することもできます。