【问题标题】:Bash piping in OSX prompts command not found, sometimesOSX 中的 Bash 管道有时会提示找不到命令
【发布时间】:2012-01-31 10:34:22
【问题描述】:

在 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 等情况下。 知道是什么原因造成的吗?

【问题讨论】:

标签: bash osx-lion pipe piping


【解决方案1】:

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

【讨论】:

  • 您好,感谢您的回复。我不确定您所说的“擦除并替换它”是什么意思,但我删除了“|”和“sort”之间的空格,它似乎可以正常工作。不过,您能解释一下原因吗?
  • 因为不是空格,所以只是看起来像一个。
  • 您的输入可能不一致(例如,Option-Space 看起来像一个空格,但实际上不是),或者剪切/粘贴或使用早期错误输入版本的历史记录。
  • 我一直这样做。 Mac 键盘(至少在世界的某些地方)使用 Alt+7 创建管道符号,然后立即意外按 Alt+Space,这会导致输入错误的字符(不是空格,而是硬-空间或其他名称)。
  • 如果您将"\xC2\xA0": " " 添加到您的~/.inputrc 中,bash 会将不间断空格视为正常空格。我blogged about this更详细。
【解决方案2】:

这可能是因为您使用了非美国布局的键盘布局(我也遇到过)。在德语布局中,管道是用 Alt+7 键入的,因此您很有可能按下 Alt+Space 之后,将产生一个non-breaking space

快速解决方案:添加行

"\xC2\xA0": " "

到您的~/.inputrc(如果您使用的是 bash)。这会将不间断的空间映射到应该解决问题的正常空间。

如果您想了解更多详细信息(或者如果您对如何追踪此类问题感兴趣),我前段时间曾写过a blog post

【讨论】:

  • 感谢@Michael,我仍然经常遇到这种情况。
  • 真棒答案+1
【解决方案3】:

~/.inputrc 的技巧不适用于 zsh。但是在这里你可以配置 iTerm 在你输入 alt+space 时发送一个空格,例如

【讨论】:

    【解决方案4】:

    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- >
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-21
      • 2017-04-14
      • 2019-10-12
      • 2016-04-17
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      相关资源
      最近更新 更多