実行前のシェルコマンドの変更

実行前のシェルコマンドの変更

サブコマンドを必要とするコマンドはかなり多いです(例:git、またはtasktaskwarriorから)。場合によっては、別のサブコマンドを使用してこのコマンドを実行する専用のターミナルウィンドウがあります。常にメインコマンドを入力する必要がないことを願っています。 taskwarrior(「ToDo List Manager」)の例を挙げて説明します。

$ task add proj:job +hard Refactor the API -- Add task to project 'job' tagged 'hard'
$ task proj:job +easy add prio:H Fix typo in README -- Tag is 'easy', priority 'high'
$ task proj:job next -- List tasks in project 'job', ordered by 'urgency'

ご覧のとおり、orなどのサブコマンドの配置はtask非常に柔軟です。今私がプロジェクト(例えば「仕事」)を進行しているなら、もっと深く探求したいと思います。それは次のとおりです。addnext

$ CONTEXT="task proj:job"
[task proj:job] $ add +hard Refactor the API
[task proj:job] $ +easy add prio:H Fix typo in README
[task proj:job] $ next

この質問のタイトルは非常に広範です(コマンドを実行する前にsedスクリプトを実行することをお勧めします)。しかし、次のいずれかを見ればうれしいです。

  1. CONTEXT例に示すように、いくつかの変数を設定して実行する前に、各コマンドの前にその値を追加できます。
  2. CONTEXTまたは、コマンド入力を開始する前にコマンドラインに値を入力できることをお勧めします。これにより、時々バックスペースキーを押すか、Ctrl-U状況に合わないコマンドを実行したいときに使用できます。

頼む。zsh説明された機能を備えたシェル(例えばbashのようなものが望ましい)はありますか?

ベストアンサー1

正確な質問ではなく、ワークフローを解決するためにこの場合は関数を使用します。

t() { task proj:job "$@"; }

t add +hard Refactor the API
t +easy add prio:H Fix typo in README
t next

エイリアスと比較して関数の利点は、プレースホルダを行末だけでなくコマンドテンプレートのどこにでも配置できることです。

Leadingのオーバーヘッドを避けたいコマンドで判断すると、t次のように試してみることができるようです。

add() { task proj:job add "$@"; }
next() { task proj:job next; }

add +hard Refactor the API
add +easy prio:H Fix typo in README
next

おすすめ記事