端末で作業するときは、次のコマンドシーケンスに頻繁に遭遇します。
cat long/path/to/file/xyz.file
nano long/bath/to/file/xyz.file
bash long/path/to/file/xyz.file
など
通常、Ctrl + Aを押して右矢印を数回押し、バックスペースを数回押して新しいコマンドを作成します。
しかし、これを行う10秒間、これを行うことができる魔法のような近道があるかどうかはいつも気になります。だから私の質問は...
コマンドを削除するがパラメータを保持する端末ショートカットはありますか?
そうでない場合は、自分のショートカットを作成する方法はありますか?
私が主に使用する端末はUbuntuとOSXです(存在する場合)。
答え1
多くのシェルでは、カーソルAltDからカーソルの下の単語の終わりまで削除が発生するため、CtrlA次のようにしてAltD最初の単語を削除できます。
または、履歴操作を含むシェルで!:1-$
前のコマンドのすべてのパラメータを置き換えるため、新しいコマンドを入力した後にこのコマンドを入力して、前のコマンドのパラメータをコピーすることもできます。
$ echo Hello sudo rm -rf slash
Hello sudo rm -rf slash
$ printf "%s " !:1-$
Hello sudo rm -rf slash
!$
コマンドに引数が1つしかない場合、または最後の引数にのみ興味がある場合。
$ cat long/path/to/file/xyz.file
$ nano !$
$ bash !$
答え2
!:1-$
すべてのパラメータインポートを使用することに加えて、他のアプローチを提供します。
スペルエラー修正モードを使用してに^strA^strB
置き換えることができます。たとえば、strA
strB
$ cat path/to/file
あなたはできます:
$ ^cat^nano
cat
これにより、前のコマンドの最初のエントリが変更され、コマンドが再実行されます。明らかに、このトリックは、非常に長いコマンドの途中でファイル名を変更したい場合など、他の状況でより便利です。
答え3
わかりましたので、以下はbashシェルにのみ適用されるのか、それがすべてのシェルに適用されるのかわかりません。
各後続のコマンドでコマンドラインパラメータを使用するとします。
cat long/path/to/file/xyz.file
したがって、次のコマンドでは、 "long/path/to/file/xyz.file" パラメータを同じままにしたいのですが、コマンドを変更したいと思います。これにより、nano !$
次の後続のコマンドでも同じことができます。もの。bash !$
。したがって、!$
最後のコマンドの最後のパラメータを変更せずに維持してください。たとえば、tail -f /var/log/messages
somecommand !$
実際には最後のコマンドを変更せずにそのままにすることができる別の機能がありますsomecommand /var/log/messages
。somecommand -f /var/log/messages
たとえば、sudo権限で最後のコマンドを実行したいとします。実行したがtail /var/log/messages
内容を表示する権限がないと仮定すると、sudoを使用して完全なコマンドを作成する必要はありません。sudo !!
bashシェルを実行すると、自動的に次のように変換されます。sudo tail /var/log/messages