在 Linux 上,你可以这样做
$ scp some-file.txt [email protected]:/some/pa<tab>
如果您为该主机启动并运行基于密钥的身份验证,它会自动完成远程路径。然而,在 OSX 上,使用 iTerm2 似乎不起作用。有什么提示吗?
这取决于您的外壳。如果您使用 bash,您需要正确的 bash 完成脚本。
请参阅 Bash finish 项目,尤其是此脚本:https://github.com/scop/bash-completion/blob/master/completions/ssh
必须放置这些内容的默认位置是
/etc/bash_completion
,然后您可以通过添加类似 .bashrc
之类的内容从 .profile
或 . /etc/bash_completion
文件加载它们(注意 . 来获取文件)
虽然专注于 Linux,但它们也应该适用于 Mac。
Homebrew 和其他软件管理器也提供 bash 补全功能。如果已安装,请根据说明检查您的
.bashrc
/.profile
以正确加载它。
对于
zsh
,截至 2019 年左右,默认 macOS shell,brew 包 zsh-completions
包含启用远程 scp 路径完成所需的功能(类似于默认 Ubuntu bash 安装中的可用功能)。
如果您尚未安装自制程序,请按照这些说明进行操作。
安装完成品:
brew install zsh-completions
要启用自动补全,请按照brew 输出上的说明进行操作。通常,这将涉及添加到
~/.zshrc
(但 brew 的输出可能是最准确/最新的):
echo 'if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi' >> ~/.zshrc
然后您需要调整一些权限:
chmod go-w '/opt/homebrew/share'
chmod -R go-w '/opt/homebrew/share/zsh'
现在远程 scp 的自动完成功能应该可以工作了。
这些说明已在 Apple 芯片 (M1) 上的 macOS Ventura 上进行了测试。