有时在我的终端(Ubuntu)上,当我输入:
ls | grep toto
我收到了这个错误信息:
grep: command not found*
注意到Shell在grep前加了一个空格。这是如何可能的?
<查看您原始问题的源代码>
<pre style="width:650px; white-space:pre-wrap">Sometimes on my terminal (Ubuntu) when I type :
ls | grep toto
感谢您复制并粘贴实际行!(但是您没有复制并粘贴错误消息,你真不好!)看到问题了吗?在竖杠符号后面有一个不间断空格。Shell 只能理解 ASCII 字符;所有非 ASCII 字符包括 U+00A0 不间断空格都会被视为单词构成部分,因此不间断空格会被视为命令名称位置的一部分。|
的键盘布局。确保释放 AltGr 修改器,以免意外键入 AltGr+Space 而不是 Space。请注意,您不需要在那里输入空格,如果这样更容易操作,可以键入 ls |grep toto
。Shift + Space
(我的管道字符需要 shift
)。 - jcuenodsetxkbmap -option "nbsp:none"
我在http://my.opera.com/nicomen/blog/unrecognized-character-xc2上找到了这个解决方法。
在使用花括号编写Perl脚本或在Python中使用哈希符号进行注释并跟随空格时,法语键盘也会遇到此问题,这也很令人烦恼。
ls |\ grep toto
来重现该错误。你的终端是否可能发送了一些非实际空格,比如某些类似空格的Unicode字符? - ghoti