有时我需要快速将文件从远程服务器复制到本地计算机。这是我目前的工作流程:
- 我通过 SSH 连接到远程服务器,找到该文件并复制其完整路径。
- 我打开新的终端选项卡并输入:
sftp user@hostname:/path/to/file
(其中 /path/to/file 是我之前复制的路径)
这不是那么痛苦,但如果我可以跳过步骤 1 并在键入 sftp 命令时直接使用制表符完成找到文件的路径,那就太好了。
为了说明,我可以开始输入sftp user@hostname:/
pressTAB并获取 / 中的文件夹列表。然后我可以继续打字ho
press TAB,它会自动完成home
,等等。
我不确定是否存在这样的功能,否则,理论上是否可以按照所述编写自定义选项卡完成脚本?关于从哪里开始的任何指示?
感谢 shellholic 的回答,我能够使它(在某种程度上)适用于 sftp。首先,创建
/etc/bash_completion.d/sftp
具有以下内容的文件:然后在 bash 中,您需要执行
. /etc/bash_completion.d/sftp
才能加载脚本。我真正做的只是复制/粘贴 scp 完成脚本
/etc/bash_completion.d/ssh
并用 sftp 替换 scp 出现。另一种选择:使用
lftp
它,它具有出色的内置选项卡完成功能(但是一旦您启动它,而不是在外壳中)。它可以处理 sftp 和许多其他协议。不要使用
sftp
,使用scp
它就可以了。您将需要一个 ssh 密钥。我听说一个名为with-readline的程序将允许标准 OpenSSH 命令行程序sftp使用制表符完成。我无法验证它是否有效,但多年来我一直想要同样的功能。
关于 with-readline 和 sftp 的信息:http: //www.greenend.org.uk/rjk/2005/withreadline.html
with-readline 链接: http ://www.greenend.org.uk/rjk/2005/with-readline-0.1.tar.bz2
让我知道它是如何为您工作的。