在 OSX 上使用 scp 完成远程路径

问题描述 投票:0回答:2

在 Linux 上,你可以这样做

$ scp some-file.txt [email protected]:/some/pa<tab>

如果您为该主机启动并运行基于密钥的身份验证,它会自动完成远程路径。然而,在 OSX 上,使用 iTerm2 似乎不起作用。有什么提示吗?

macos bash ssh osx-yosemite scp
2个回答
2
投票

这取决于您的外壳。如果您使用 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
以正确加载它。


0
投票

对于

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 上进行了测试。

© www.soinside.com 2019 - 2024. All rights reserved.