⌥が見つかりました 。 ( alt 。 他の多くの場合)ターミナルで作業するときに非常に便利で、現在のプロンプトの最後の行から最後の引数を挿入します。ただし、最後の行がコメント化された場合は機能しません(set -o interactivecomments
を想定) 。
正確なユースケースを考えることはできませんが、実行前に気付いたコマンドをその時点で必要なものではないとコメントアウトし、その最後の引数を求めたことが何度かありました。後続のコマンド。
コメントアウトされたものをすべて無視するロジックがあることを認識しています。これは、解釈されることはなく、したがって、いずれも引数にトークン化されないためです。しかし 私がやりたいことをする方法はありますか?
別のキーストロークを使用する必要がある場合は、理想的ではありませんが、使用可能です。別のコマンドにバインドして、必要な処理を実行します。
私はZshを使用していますが、Bashソリューションが機能するか、Zshで実行する必要があるものに近い可能性があります。
承認された回答:
コマンドをコメントアウトしないでください。
代わりに、:
を入力してください #
ではなく前面に 。これにより、コマンドテキスト引数がnullユーティリティ:
になります。 、実行しても何もしません。引数はまだコマンドであるため、トークン化および解析されますが、それ以外の処理は行われません。
これが適切でない場合があります。特に、コマンド自体を理解する場合です。 副作用があります。簡単な例はコマンド置換です:
$ : log $(find -print -delete) --target /var/run/cache
この場合、$(...)
内のコマンド 実行され、:
の引数に置き換えられます 、元のコマンド自体は実行されませんが。破壊的でないケースは${foo:=default}
です。 パラメータ拡張。これには、$foo
に値を割り当てるという副作用があります。 。
最後に、リダイレクトまたはパイプは引き続き実行されます:
$ : foo > outfile
$ : bar | grep x | ...
どちらの場合も、空の出力を宛先に送信します。これにより、ファイルが切り捨てられるか作成されるか、後続のコマンドが実行されますが、取得した空の入力が気に入らない場合があります。
コマンドに特別な懸念がない場合、これは完全に安全であり、zsh、Bash、およびPOSIX互換シェルで機能します(ただし、その後の代替動作はどこでも機能しません)。
>
特に最後の単語である場合、zshは、コマンドラインを操作するために使用できるカスタマイズ可能なキーバインディングとコマンドを提供します。 bindkey '^K' kill-region
の場合 次に、 Ctrlという単語の前に戻ることができます。 – K 行の先頭まで消去するには、: 、次に、気になる単語を1つだけ残して安全なコマンドを実行します。