OSX中的Bash管道有时会提示找不到命令

wpp*_*wpp 13 bash pipe piping osx-lion

在OSX终端中:

du -h | sort -nr
-bash:  sort: command not found

which sort
/usr/bin/sort
Run Code Online (Sandbox Code Playgroud)

奇怪的是:我尝试重现错误,它似乎是完全随机的.我的PATH回应道:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/texbin:/Users/sytycs/.rvm/bin
Run Code Online (Sandbox Code Playgroud)

这种情况只发生在管道与发生grep,more,less等任何想法是什么原因造成的?

Mic*_*nek 35

这可能是因为您使用非美国布局的键盘布局(也发生在我身上).在德语布局中,管道是用Alt+ 键入的7,所以你之后按Alt+ 键的可能性很高Space,这将产生一个不间断的空间.

快速解决方案:添加行

"\xC2\xA0": " "
Run Code Online (Sandbox Code Playgroud)

到你的~/.inputrc.这会将不间断的空间映射到应该解决问题的正常空间.

如果你想要更多细节(或者如果你对如何追踪这类问题感兴趣,我前段时间写了一篇关于它的博客文章).


Ign*_*ams 32

那个空间不是空间.擦除并替换它.

  • 我一直这样做.Mac键盘(至少在世界的某些地方)使用Alt + 7创建管道符号,然后立即意外按下Alt + Space,这会导致输入错误的字符(不是空格,而是硬盘)空间或任何他们被称为的东西). (11认同)
  • 如果你添加`"\ xC2\xA0":""`你的`〜/ .inputrc` bash将非破坏空格视为普通空格.我更详细地讨论了这个问题(http://www.relativkreativ.at/articles/why-chaining-commands-with-pipes-in-mac-os-x-does-not-always-work). (5认同)