実行したい内容を簡単に入力できることがわかります。
func()
{
cd scripts
./excellent/script
}
しかし、私が望むのは、入力せずに./excellent/script
コマンドラインに入力することです。そのように実行すると、func
必要なものをそこに置き、デモが準備されるまで待ちます。
$ func
$ ./excellent/script
答え1
これは基本的に達成できます。実際に起こるのは、コマンドラインプロンプトが偽のプロンプトにすぎないことです。ただし、入力した内容はすぐに実行されるため、実際のコマンドプロンプトでもかまいません。
func() {
cd scripts
read -e -p '$ ' -i './excellent/script' command
eval $command
}
プロンプトがそれより複雑な場合は、正しく表示されるように、その行の$
前に行または類似の行-p '$ '
をecho -ne "[whatever] "
削除して追加する必要がありますread
。
答え2
readline を使用する場合 (例: bash など)、テキスト値を割り当てる単純な関数にキー押下をバインドできます。
bind -x '"\C-T": READLINE_LINE=./excellent/script'
クリックすると、指定されたテキストを含む現在のコマンドライン(入力)が削除されますControlt。このアイデアの欠点は、いくつかの例を準備したい場合は、キーボードショートカットが不足していることです。
からインスピレーションを受けるモスベイ ここに答えてください。