毎回入力せずにシェルのすべてのコマンドにプレフィックスを追加するにはどうすればよいですか?
マイユースケース1:
$ git init
$ git add -A
$ git commit
$ git push
プレフィックスはgit␣
(␣
は空白文字です)でなければなりません。
init
add -A
commit
push
マイユースケース2:
sudo docker run my-repo/my-image
sudo docker ps
sudo docker images
接頭辞は次のようになります。sudo docker␣
run my-repo/my-image
ps
images
次のようなことができれば一番いいでしょう。
$ git init
$ use_prefix sudo docker
> ps
> images
> exit
$ sudo docker run my-repo/my-image
答え1
次の機能を使用できます。
use_prefix () {
while read -ra c; do
"$@" "${c[@]}"
done
}
次に、プレフィックスをuse_prefix
コマンドの引数として受け入れ、標準入力からプレフィックスを付ける各コマンドを読み取ります。
注:while readループを終了するには、ctrl + cを使用する必要があります。
答え2
答え3
1つの回避策はエイリアスを設定することですが、組み込みコマンドやシステムバイナリ(たとえば)と競合するときは注意が必要ですps
。
次の行を追加した後~/.bashrc
(次にbashを起動するか、を入力したときに適用されますsource ~/.bashrc
):
alias commit='git commit'
alias docker='sudo docker'
alias images='docker images'
alias ps='docker ps'
実際に実行するには、またはをps
入力する必要があります。エイリアスをスクリプトで使用できるように特に設定しない限り、これは通常コマンドラインの入力にのみ影響します。command ps
\ps
ご提案いただいたようなインタラクティブなシェルインターフェイスの場合は、より多くの参加が必要です。
つまり、@Jesse_Bの良い提案を拡張したのです。
use_prefix () {
while read -p "$* >" -ra c; do
[ "${c[0]}" = "exit" ] && break
"$@" "${c[@]}"
done
}
キーワードを有効にしexit
て通知を追加して、現在やっていることを思い出してください。
答え4
こんにちは。ウェブサイトへようこそ。
この問題を解決するための1つの考えられる解決策は、次のものを使用することです。aliasing
「プレフィックス」を否定しませんが、多くの時間を節約します。
例えば
alias g=git
$ g init
$ g add -A
$ g commit
$ g push
または
単語が複数ある場合は、引用符を使用してください。
alias sd="sudo docker"
sd run my-repo/my-image
sd ps
sd images
ただし、各セッションでこれらのエイリアスをリセットする必要があります。