コマンドを実行せずに端末プロンプトに入力する方法

コマンドを実行せずに端末プロンプトに入力する方法

実行したい内容を簡単に入力できることがわかります。

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。このアイデアの欠点は、いくつかの例を準備したい場合は、キーボードショートカットが不足していることです。

からインスピレーションを受けるモスベイ ここに答えてください

関連情報