SCP文件名选项卡完成


13

我定期使用SCP在服务器之间移动文件,并且听说有传言说,如果您使用的是公钥,则可以在远程服务器上使用制表符补全功能,但到目前为止我还没有运气。

我要完成的工作如下:

scp -r remote.ip.address:/remote/dir/folder<TAB> /local/destiation/

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

/remote/dir/folder_1
/remote/dir/folder_2
/remote/dir/folder_3

我想让SCP揭示哪些文件夹匹配(如果有),就像导航本地文件系统时的正常路径完成一样。制表符补全确实​​可以在scp命令行中的本地路径上运行,但是我注意到,当远程计算机的路径与本地(即“〜/”)匹配时,它会从本地文件系统完成/建议使用文件/文件夹比遥控器。

运行以下内容可进行无密码登录:

`ssh remote.ip.address`

...所以我知道按键设置正确。关于如何使它工作的任何想法?


刚刚使用过-omgbbq
William Entriken

Answers:


16

您正在使用哪个外壳?如果您使用的是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

我使用OSX作为工作站,该文件不存在。但是,我假设在进行任何分散操作时都需要安装bash-completion软件包才能使其正常工作?

我将更新我的答案..
rkthkr

我自己完成了这些步骤,一切都很好。谢了哥们!

没问题,乐于帮助!
rkthkr

1
当然,如果您已经安装了MacPorts软件包(www.macports.org),则OS X的端口安装部分仅适用。而且我猜想如果您应该使用fink而不是MacPorts,则有可用的软件包。
斯文

2

如果有人想使用rkthkr的方法为Mac OSX Mountain Lion进行此操作,则必须先安装Mac Ports(http://www.macports.org/install.php),然后运行他提到的命令:

$ sudo port install bash-completion

然后按照以下说明配置其终端应用程序:https : //trac.macports.org/wiki/howto/bash-completion


当您有足够的声誉来发表评论时,对现有答案的补充通常会更好地使用这些评论。(如果您不打算编辑答案)
Andrew B

谢谢。那就是我想要做的,但是,正如您提到的,我没有足够的代表来这样做。
肖恩·康

0

另一个也许更简单的解决方案是使用sshfs

这是基于SSH文件传输协议的文件系统客户端。由于大多数SSH服务器已经支持该协议,因此设置非常容易:即在服务器端无需执行任何操作。在客户端安装文件系统就像使用ssh登录服务器一样容易。

这是一个基于保险丝的文件系统,可将您的远程文件夹链接到本地​​文件夹。在后台使用了scp,但是您可以cp像在本地计算机上复制文件一样操作命令。因此,制表符自动完成sshfs可用于大多数发行版,例如do sudo apt-get install sshfs(这也会加载fuse内核模块)

这样开始:

$ sudo mkdir /mnt/server1
$ sudo chown local-username /mnt/server1
$ sshfs remote-username@server1.example.com:/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 .

0

我强烈建议使用yafc

它支持文件名完成,并且还具有其他一些有用的功能(例如,递归get / put / fxp / ls / rm)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.