私は定期的にSCPを使用してサーバー間でファイルを移動し、公開鍵を使用している場合はリモートサーバーでタブ補完を使用できるとの噂を聞いていますが、これまでのところ運がありません。
私が達成しようとしていることは次のとおりです。
scp -r remote.ip.address:/remote/dir/folder<TAB> /local/destiation/
/dir/
のリモートサーバー上のls
は、次の3つのフォルダーを表示します。
/remote/dir/folder_1
/remote/dir/folder_2
/remote/dir/folder_3
ローカルファイルシステムをナビゲートするときの通常のパス完了と同じように、SCPでどのフォルダーが一致するか(存在する場合)を明らかにしたいと思います。タブ補完はscp
コマンドラインのローカルパスで機能しますが、リモートマシンのパスがローカルと一致する場合(例: "〜/")、ファイルを補完/推奨することに気づきました/リモートではなくローカルファイルシステムからのフォルダ。
次のコマンドを実行すると、パスワードなしのログインで機能します。
`ssh remote.ip.address`
...だから私はキーが正しく設定されていることを知っています。これを機能させる方法に関するアイデアはありますか?
どのシェルを使用していますか? bashを使用している場合は、bashで「高度な」補完を有効にする必要がある場合があります...
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
〜/ .bashrcで
OSXでは次のことができます。
$ Sudo port install bash-completion
〜/ .profileに追加:
if [ -f /opt/local/etc/bash_completion ]; then
. /opt/local/etc/bash_completion
fi
Rkthkrの方法でMacOSX Mountain Lionに対してこれを実行したい場合は、最初にMac Ports( http://www.macports.org/install.php )をインストールし、コマンドheを実行する必要があります。言及:
$ Sudo port install bash-completion
次に、次の手順に従ってターミナルアプリを構成します。 https://trac.macports.org/wiki/howto/bash-completion
別の、おそらくもっと簡単な解決策は、 sshfs を使用することです。
これは、SSHファイル転送プロトコルに基づくファイルシステムクライアントです。ほとんどのSSHサーバーはすでにこのプロトコルをサポートしているため、セットアップは非常に簡単です。つまり、サーバー側では何もする必要はありません。クライアント側では、ファイルシステムのマウントは、sshを使用してサーバーにログインするのと同じくらい簡単です。
これはFuseベースのファイルシステムであり、リモートフォルダをローカルフォルダにリンクします。内部ではscpが使用されますが、ローカルマシンにファイルをコピーするのと同じようにcp
コマンドを操作できます。したがって、tab-completionは自動的に機能します! sshfsは、ほとんどのディストリビューションで使用できます。行う Sudo apt-get install sshfs
(これによりFuse
カーネルモジュールもロードされます)
このように始めます:
$ Sudo mkdir /mnt/server1
$ Sudo chown local-username /mnt/server1
$ sshfs [email protected]:/home/remote-username /mnt/server1
$ ls /mnt/server1
.. <bunch of files> ...
$ cp /mnt/server1/.bash<tab><tab>
.bash_history .bash_logout .bashrc
$ cp /mnt/server1/.bashrc .
yafc を使用することを強くお勧めします。
ファイル名の補完をサポートし、他のいくつかの便利な機能もあります(例:再帰的なget/put/fxp/ls/rm)