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

时间:2012-01-01 17:33:04

标签: bash osx-lion pipe piping

在OSX终端中:

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

which sort
/usr/bin/sort

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

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/texbin:/Users/sytycs/.rvm/bin

只有当管道发生时才会发生这种情况,grepmoreless等。 知道是什么导致了这个吗?

4 个答案:

答案 0 :(得分:35)

这可能是因为您使用非美国布局的键盘布局(也发生在我身上)。在德语布局中,管道输入为 Alt + 7 ,因此按 Alt + Space 之后,这将产生non-breaking space

快速解决方案:添加行

"\xC2\xA0": " "

~/.inputrc。这会将不间断的空间映射到正常的空间,以解决问题。

如果你想要更多细节(或者如果你对如何追踪这类问题感兴趣,我前段时间写过a blog post)。

答案 1 :(得分:27)

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

答案 2 :(得分:0)

〜/ .inputrc的技巧对zsh不起作用。但是在这里你可以配置iTerm在你键入alt + space时发送一个空格,例如

答案 3 :(得分:0)

在进行管道传输时,Bash对空间非常敏感。全部删除 。 通过运行以下命令,我遇到了同样的问题:

|awk '{$1=$1};1' |  tr '[:upper:]' '[:lower:]' |  sort | uniq 
| awk '{ print length, $0 }' | sort -n -s | cut -d" " -f2- > dest_file

错误如下:

zsh: command not found:   tr
zsh: command not found:   sort

然后我删除了所有空格并解决了该问题:

|awk '{$1=$1};1'|tr '[:upper:]' '[:lower:]'|sort|uniq|awk '{ print length, $0 
}'|sort -n -s|cut -d" " -f2- >