我用来scp
将文件从远程服务器复制到本地服务器。真正不舒服的是我需要精确地输入文件路径。我习惯于依赖自动完成,因为文件名和文件夹结构可能很长。我希望能够看到每个目录中的文件名并自动完成,就像在本地浏览文件时一样。
现在,我可以单独执行 SSH、查找文件名并在 SCP 命令中使用它们。但当然,这将是巨大的精力浪费。另外,我可以使用 GUI,但我更愿意避免使用,因为命令行更轻量级。
有什么方法可以使用 SCP 而不必准确记住文件名吗?
答案1
bash-completion
(在 Cygwin、Debian、Ubuntu 和毫无疑问的许多其他发行版中都可用)支持scp
自动完成,只要 shell 可以在没有提示的情况下访问所需的服务器(它ssh
在批处理模式下使用,请参阅ssh_config(5)
手册页了解详情)。
启用此功能的最简单方法是使用ssh-agent
.您的桌面环境可能默认启用此功能;只是尝试
ssh-add
将默认密钥添加到当前运行的代理(如果有)。如果没有代理正在运行,您可以通过运行来启动代理
eval $(ssh-agent)
一旦代理知道您的密钥,您将能够自动完成scp
涉及可以使用该密钥访问的服务器的命令。
我很确定zsh
也支持scp
自动完成,但有同样的注意事项; Debian 中的软件包包含必要的支持zsh-common
。它需要在你的.zshrc
想法中启用,比如
autoload -U compinit && compinit
(加载所有支持的完成)。