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