一般的に使用されるコマンド「テンプレート」:パラメータ拡張エスケープ文字の削除

一般的に使用されるコマンド「テンプレート」:パラメータ拡張エスケープ文字の削除

私は少し異なるパラメータを使っていくつかの長いコマンドを使い続けています。たとえば、

rsync -havu --progress --rsh='ssh -l mylogin' some.machine.somewhere:/some/path /some/local/path

zshプロンプトでコマンドを簡単に挿入し、コマンドラインを参照してパス、ホスト、およびログインに必要な変更を加えることができます。 zshパラメーターを設定しました。

FOO="rsync -havu --progress --rsh='ssh -l mylogin' some.machine.somewhere:/some/path /some/local/path"

$FOOその後、プロンプトに従って拡張できます。ただし、拡張コマンドのすべてのスペースと引用符はバックスラッシュでエスケープされます。zsh拡張子にエスケープ文字を入れない方法はありますか?

同様のコマンドの履歴を検索して編集できることを知っています。ただし、各新しいシェルに長い文字列を一度だけ入力する必要があります。私はまた私の目的を達成する他の方法で開いています。 Pythonスクリプトなどを書くことができますが、これはかなり簡単な作業に比べて多くのオーバーヘッドのようです。

ベストアンサー1

頻繁に変更するオプションの引数を受け入れる関数を使用することをお勧めします。これをZSH構成に入れて対話的に実行できます。例は次のとおりです。

myrsync() {
   username=$1
   srchost=$2
   srcpath=$3
   destpath=$4
   rsync -havu --progress --rsh="ssh -l $username" "${srchost}:${srcpath}" "$destpath"
}

myrsync mylogin some.machine.somewhere /some/path /some/local/path

おすすめ記事