viu*_*ser 3 terminal-emulator terminal
使用 xterm 和 bash 4.3 从(伪)终端 pts/10 我们输入(?是光标):
test@debian:~$ ps
PID TTY TIME CMD
13128 pts/10 00:00:02 bash
21037 pts/10 00:00:00 ps
test@debian:~$ ls
Mail directory file
test@debian:~$ ls directory
file1 file2 file3
test@debian:~$ ls ?
Run Code Online (Sandbox Code Playgroud)
(如你所见,后面有一个空格ls
)
然后从另一个终端我们发送一个退格:
test@debian:~$ echo -ne "\b" > /dev/pts/10
Run Code Online (Sandbox Code Playgroud)
在终端 pts/10 中,我们现在有:
test@debian:~$ ls?
Run Code Online (Sandbox Code Playgroud)
我们输入directory
,所以我们有:
test@debian:~$ lsdirectory?
Run Code Online (Sandbox Code Playgroud)
按回车键,我们会列出“目录”:
file1 file2 file3
test@debian:~$ ?
Run Code Online (Sandbox Code Playgroud)
当然,通常输入lsdirectory
会给我们一个“找不到命令”的错误。某处已节省空间。在哪里?
shell 的命令行编辑器节省了空间。事实上,它保存了您输入的所有构成命令行的字符。
我想知道您是否有这样的印象,即 shell 通过在执行命令之前读回屏幕内容来知道要执行什么命令。事实并非如此。此外,终端甚至不一定提供任何读回屏幕内容的方法,因此即使外壳愿意,也不能指望能够这样做。
另外:您应该小心同时使用同一个终端的多个应用程序。在这种情况下,您的 shell 正在终端上运行其命令行编辑器,并且您从其他地方向同一个终端回显了一个空格。你的 shell 不知道你已经这样做了,你的 shell 对光标位置的想法现在与光标在屏幕上的实际位置不同步。这可能会混淆并破坏您的 shell 正确显示命令行的能力。如果您使用箭头键和基于菜单的 Tab 补全等编辑命令行,您的 shell 将想要移动光标并重新显示命令行的部分,但它会出错,因为光标不在它认为的位置是。