SCP 文件名选项卡完成

13 linux ssh command-line-interface mac-osx scp

我经常使用 SCP 在服务器之间移动文件,我听说如果你使用公钥,你可以在远程服务器上使用制表符完成,但到目前为止我没有运气。

我想要完成的是以下内容:

scp -r remote.ip.address:/remote/dir/folder<TAB> /local/destiation/
Run Code Online (Sandbox Code Playgroud)

一个ls远程服务器上/dir/会显示3个文件夹:

/remote/dir/folder_1
/remote/dir/folder_2
/remote/dir/folder_3
Run Code Online (Sandbox Code Playgroud)

我希望 SCP 显示哪些文件夹匹配(如果有),就像导航本地文件系统时的正常路径完成一样。Tab 补全确实适用于scp命令行中的本地路径,但我注意到当远程机器的路径与本地路径匹配时(即:“~/”),它会从本地文件系统中完成/建议文件/文件夹,而不是比遥控器。

运行以下适用于无密码登录:

`ssh remote.ip.address`
Run Code Online (Sandbox Code Playgroud)

...所以我知道密钥设置正确。关于如何让这个工作的任何想法?

rkt*_*hkr 16

你用的是哪个壳?如果您正在使用 bash,您可能需要在 bash 中启用“高级”完成...

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
Run Code Online (Sandbox Code Playgroud)

在你的 ~/.bashrc

在 OSX 上,您可以执行以下操作:

$ sudo port install bash-completion
Run Code Online (Sandbox Code Playgroud)

在你的 ~/.profile 添加:

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi
Run Code Online (Sandbox Code Playgroud)