空间(和管道标志)仅偶尔起作用

空间(和管道标志)仅偶尔起作用

我遇到一个问题,当我尝试写入管道符号“|”并在其后输入空格时,有时会输入错误类型的空格 (\240),导致命令失败。此问题在不同的 shell 上仍然存在。

我该如何修复这个问题?

我正在使用芬兰语键盘布局。

timo@timo-i7-ubuntu:~$ ps -ef | grep ruby
timo      7169  2633  0 12:12 pts/2    00:00:00 ruby1.9.1 /usr/local/bin/rails new admin4
timo      8736 26515  0 14:22 pts/4    00:00:00 grep --color=auto ruby
timo@timo-i7-ubuntu:~$ ps -ef | grep ruby
No command ' grep' found, did you mean:
 Command 'igrep' from package 'openimageio-tools' (universe)
 Command 'dgrep' from package 'debian-goodies' (main)
 Command 'rgrep' from package 'grep' (main)
 Command 'zgrep' from package 'gzip' (main)
 Command 'zgrep' from package 'zutils' (universe)
 Command 'sgrep' from package 'sgrep' (universe)
 Command 'lgrep' from package 'lv' (universe)
 Command 'egrep' from package 'grep' (main)
 Command 'ngrep' from package 'ngrep' (universe)
 Command 'grep' from package 'grep' (main)
 Command 'agrep' from package 'agrep' (multiverse)
 Command 'pgrep' from package 'procps' (main)
 Command 'xgrep' from package 'xgrep' (universe)
 Command 'vgrep' from package 'atfs' (universe)
 Command 'fgrep' from package 'grep' (main)
 grep: command not found

timo@timo-i7-ubuntu:~$ cat pipecom
ps -ef | grep rails
timo@timo-i7-ubuntu:~$ cat pipecom2
ps -ef | grep rails
timo@timo-i7-ubuntu:~$ ./pipecom
timo      7169  2633  0 12:12 pts/2    00:00:00 ruby1.9.1 /usr/local/bin/rails new admin4
timo      8777  8775  0 14:26 pts/4    00:00:00 grep rails
timo@timo-i7-ubuntu:~$ ./pipecom2
./pipecom2: line 1: $'\302\240grep': command not found
timo@timo-i7-ubuntu:~$ diff -w pipecom pipecom2
1c1
< ps -ef | grep rails
---
> ps -ef | grep rails

答案1

我在一个法国网站上找到了这个链接:http://forum.ubuntu-fr.org/viewtopic.php?id=65282现在我的法语很糟糕,但这个链接在 Arch Linux 论坛上也有提及(而且是英文的)。这也可能是导致您出现错误的原因:

对于某些键盘布局,键入 [AltGr] + 产品空格字符,该字符显示为空格,但 shell 并不将其解释为空格。

实际情况是,通过输入 |,您继续按 [AltGr] 输入空格。因此,bash 会查找命令 [space] grep,但该命令并不存在。

重新尝试输入、注意或者复制和粘贴,它应该可以通过。

如果问题确实存在,您应该能够调整键盘以防止它。(系统 -> 偏好设置 -> 键盘 -> 布局)

我搞明白了。键盘上的 Shift+ 会产生 nobreakspace。当我快速输入“|”时,有时在输入“|”后没有足够快地释放 Shift 键,因此我没有在“|”后输入普通空格,而是输入了 nobreakspace。

Anonymous_user,谢谢。您的帖子给了我所需的线索,让我开始朝正确的方向思考。

杰伊

来源

相关内容