Bourne Shell 中的 TAB 自动完成

Tho*_*nry 7 shell ssh autocomplete os390

我不知道如何使用 TAB 键来自动完成文件名、命令或任何东西。

我在类 Unix 系统 (OS/390) 上并依赖于在 sh(Bourne shell,而不是 BASH)中工作的几个脚本,但不在其他 shell(例如 tcsh)中,所以我无法切换 shell . 我通常通过 ssh 或 telnet 从本地运行 bash 的 Ubuntu GNOME 终端连接到这个系统。其他人从 Windows XP 命令提示符通过 telnet 连接到 OS/390 系统,并且他们能够在发出“set -o emacs”后使用 TAB 键自动完成。当我发出“set -o emacs”时,我得到了一些适当的功能(例如,ctrl-p 可以倒退历史记录),但不会自动完成。

我知道“set -o vi”选项,但使用“ESC-*”等并不吸引我,因为我知道简单的 TAB 键对其他人有效。

是否有关于 Ubuntu、GNOME 终端、bash 或 ssh 发送与运行 telnet 的 Windows XP 命令提示符不同的制表符的东西?

有没有人知道为什么我可能无法让选项卡自动完成,而在同一台远程机器上运行相同 shell 的人可以?

应该怎么做才能启用选项卡自动完成

Gil*_*il' 5

(无法回答您的确切问题,但有许多解决方法。)

您不需要将脚本 shell 与交互式 shell 相匹配。(例如,大多数 (t)csh 或 zsh 用户编写 sh 脚本)。如果您拥有或可以安装比 Bourne shell(zsh、bash、tcsh)更好的交互式 shell,那就去吧。即使你不能,看看是否有一个 ksh,它的交互功能可能比 Bourne shell 稍好一些。

您可以通过输入echo ' Ctrl+来检查 Tab 键发送的字符V Tab ' | od -t x1 Enter0000000 09 0a(即在位置 0,两个字符,一个制表符和一个换行符)是预期的输出。我不希望这成为问题。

如果无法获得舒适的环境,可以尝试远程做更多的事情,尽可能使用本地机器进行交互。这有其起起落落。

  • 在 Linux(或大多数其他 unices 包括 OSX,但不是来自 Windows),您可以使用sshfs访问远程文件系统。
  • 在 Emacs 中,您可以通过TRAMP轻松浏览远程文件(打开/os390hostname:/path/on/remote/machine,您将完成)。也可以使用Eshell获取远程 shell 接口(一个 Emacs 内置的 shell);如果您更改到远程目录 ( cd /os390hostname:/path/on/remote/machine),您启动的外部命令将在远程机器上执行。如果您需要以 root 身份运行命令,Tramp(以及基于它的 Eshell)可以将 ssh 与 su 或 sudo 结合使用