scpコマンドを入力して、リモートファイルをタブで補完できる魔法とは何ですか?


16

これはおそらく、私のoh-my-zshセットアップで有効にしたプラグインによって提供される機能です(zshを何年も使用しています)。

公開キーをサーバーに追加してから(パスワードを入力せずにサーバーにSSH接続できるようになった)、scpシェルでコマンドを作成すると、実際にリモートファイルパスをタブ補完できることに気付きました!

例えば

$ diff <(scp Remoteuser@remote.domain.net:/var/www/html/

私はタブを押すと、それはちょうど動作します!(コマンド自体で達成しようとしていることについては、scpstdoutに「コピー」し、それをファイルとしてdiffにフィードします。この方法で、サーバーに展開する正確な変更を確認できます実行中rsync

私はこの作品をこれほどうまく作っている作品に興味があります。zシェルと統合されたscpに組み込まれているものですか?または、他の何か?

回答:


16

ああ、見つけた は説明た

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

zshシェルには、リモートタブ補完などの(複数の)優れた機能が付属しています。たとえば、scpを介してファイルをコピーする場合は、リモートホスト上のファイル名の任意の部分でタブを押すだけです。zshはバックグラウンドでsshセッションを確立し、関連情報を取得できるため、リモートファイルをタブ補完できます。

投稿はzstyle完了を達成するいくつかの宣言を示していますが、前述のようなzshパッケージを使用することを強くお勧めします oh-my-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)"}%%
[# ]*}//,/ })'

<...>

すごい!! この機能はに限定されていzshますか?それが可能ですbash
シヴァム

1
@shivams これは、bashのニーズに関連する可能性があります。oh-my-zshのセットアップは非常に簡単で、しかもzshのセットアップは本当に素晴らしいようです。ただし、本当に気になれば、zshでできること、bashでできないことはあまりありません(逆も確かに当てはまります)。単にあなたがそれにどれだけの労力を費やすかという問題です。
スティーブンルー

7
@shivams私にとっては、常にbashで動作しているだけです。ある日、scpコマンドで本能的に「タブ」を押すだけで、オートコンプリートに驚いたのです。あちこち探して、bash-completionパッケージをまだインストールしていない場合はインストールする必要があるように見えます。このunix.seの質問は関連しています。
ポン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.