scp はターゲットマシンのパスを認識しますか?

scp はターゲットマシンのパスを認識しますか?

最近、個人使用のために OSX から Linux に切り替えました。ヘッドレス Ubuntu を実行しているホーム メディア サーバーがあり、現在は Mint を実行しているラップトップがあります。私の習慣は、 を使用してサーバーにデータを移動することですscp。以前は、OSX でターゲットをコピーするために入力する場合、パスの各文字を苦労して入力していました。習慣的に Tab で補完しようとすると、マシンが不調になり、もう一度やり直さなければならなかったからです。ただし、新しいコンピューターの ssh キーをセットアップし、scpラップトップからサーバーにファイルをコピーしているときに、誤って Tab を押したところ、驚いたことに、パスが正しく補完されました。これは通常の動作ですか? OSX の term2 ではなぜ機能しなかったのですか? 注: 別のターミナル ウィンドウでサーバーへの接続を開いていました。

答え1

これはシェルのコマンド補完の動作です。現在のコマンドラインが で始まる場合scp、特定のコンテキストでは、パスを補完するためにターゲット システムに接続する必要があることを「認識」します (可能な場合)。キーがロードされているため、これは透過的に実行できます。

/usr/share/bash-completion/completions/scpこれは通常、 (Bash を使用している場合) または/usr/share/zsh/functions/Completion/Unix/_ssh(Zsh の場合)で実装されています。

関連情報