OS X Terminal.app 中 sftp 的命令行历史记录和制表符补全

OS X Terminal.app 中 sftp 的命令行历史记录和制表符补全

我经常使用 Terminal.app。当通过连接ssh到远程 *nix 系统时,我可以继续使用它tab来完成命令名称并arrow-up/down浏览命令历史记录。但是,sftp这样做不起作用,我[为后者得到了 -escaped 序列,为前者得到了文字制表符。

有什么办法可以让它工作吗?有什么关系吗readline

答案1

查看使用 readline。那里有一个使用 sftp 的示例。

答案2

当我尝试在 OSX 10.7.5 上安装 with-readline 时遇到了链接器错误。

在尝试寻找这个问题的解决方案时,我发现麦金塔有一个端口OpenSSH其中包括sftp使用 readline 支持编译的实用程序。MacPorts 也将这个版本设置sftp为默认版本。

答案3

您也可以尝试雅富

答案4

在终端中输入:

which sftp

如果结果为/usr/bin/sftp,则表示您使用的 macOS 内置 SFTP 版本与 GNU 版本相比已过时。更多详细信息这里

你可以安装 Homebrew 版本(GNU 版本)

brew install openssh

并列出openssh安装路径:

brew list openssh

例如,您会在这里看到一些二进制文件:

/usr/local/Cellar/openssh/8.4p1_2/.bottle/etc/ (12 files)
/usr/local/Cellar/openssh/8.4p1_2/bin/scp
/usr/local/Cellar/openssh/8.4p1_2/bin/sftp
/usr/local/Cellar/openssh/8.4p1_2/bin/slogin
/usr/local/Cellar/openssh/8.4p1_2/bin/ssh
/usr/local/Cellar/openssh/8.4p1_2/bin/ssh-add
/usr/local/Cellar/openssh/8.4p1_2/bin/ssh-agent
/usr/local/Cellar/openssh/8.4p1_2/bin/ssh-keygen
/usr/local/Cellar/openssh/8.4p1_2/bin/ssh-keyscan
/usr/local/Cellar/openssh/8.4p1_2/libexec/ (4 files)
/usr/local/Cellar/openssh/8.4p1_2/sbin/sshd
/usr/local/Cellar/openssh/8.4p1_2/share/man/ (15 files)

现在输入:

which sftp

结果是/usr/local/bin/sftp,这是/usr/local/Cellar/openssh/8.4p1_2/bin/sftp

然后尝试 Homebrew 版本的 SFTP 并享受它!

相关内容