scpコマンドを入力したときにリモートファイルをタブに完成させる魔法はありますか?

scpコマンドを入力したときにリモートファイルをタブに完成させる魔法はありますか?

おそらくこれは私のoh-my-zsh設定で有効にしたいくつかのプラグインによって提供される機能です(私は長年zshを使用してきました)。

サーバーに公開鍵を追加した後(パスワードを入力せずにサーバーにSSH経由で接続できる)、scpシェルでコマンドを作成すると、実際にリモートファイルパスにタブ補完機能を使用できることがわかりました!

例えば

$ diff <(scp [email protected]:/var/www/html/

タブをクリックすると機能します! (コマンド自体でやりたいことは、scpstdoutに「コピー」を使用し、それをdiffにファイルとして提供します。これにより、以前の実行でサーバーに展開した正確な変更を確認できます。rsync

この作品がこんなにすごい理由が何なのか気になります。 z シェルと統合される scp に組み込まれているものはありますか?それとも別のものですか?

答え1

ああ、見つけました。説明

関連部分を引用するには:

zshシェルには、リモートタブの完成など、いくつかの優れた機能があります。たとえば、scpを介してファイルをコピーするには、リモートホストのファイル名の任意の部分でTabキーを押すだけです。 zshはバックグラウンドでSSHセッションを確立し、関連情報を取得できるため、リモートファイルを介してタブを完成させることができます。

投稿はまだzstyle実装が完了したいくつかの説明を示していますが、前述のようなzshパッケージを使用することをお勧めします。ああ、OSSコミュニティにこれらのものを維持するようにしてください。

私のシステムの.oh-my-zshディレクトリに示されているように関連性があるようです。

$ ack scp 
plugins/common-aliases/common-aliases.plugin.zsh
85:zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%
[# ]*}//,/ })'

<...>

関連情報