Macで、パイプ(|)文字の後にスペース文字を使用すると、その間に非表示の文字が挿入されることがよくあります。
これは、コマンドを無効にするため、端末を使用するときに特に厄介です。
Iterm2に次のように入力すると、次のようになることがよくあります。
ls | cat
zsh: command not found: cat
上矢印キーを押して前のコマンドを取得し、|
とcat
の間のスペースを削除して再挿入すると、コマンドは機能します。
動作中のコマンドと動作していないコマンドをコピーしてファイルに貼り付けると、次のようになります。
non-working: ls | cat
working: ls | cat
Hex Fiend で開きます。次のように表示されます。
non-working: ls | cat
working: ls | cat
角かっこを使用したSublimeText2でも同じ種類の問題が発生しました([])の後にスペースが続きます。だから私はそれがiTerm2の問題だとは思わない。
何が起こるかはあなたが押し続けることです ⌥ スペースバーを使用すると、
参照を介してHTMLで認識される 改行なしスペース が挿入されます。この改行しないスペースは、「OSX」の「OS」と「X」のように、特定の単語をくっつけたいテキスト処理で役立ちます。
明らかに、これはユニコード文字(00A0
)であるため、_cat
(_
は改行なしスペース)を参照するbashなど、ほとんどのコマンドラインユーティリティは失敗します。 、およびHex Fiendは、不適切な表現を使用しています。一方、一部のエディターは黙ってそれを取り除きます(たとえば、このエディターはここにあります)が、他のエディターはそれを特別に表現しています(たとえば、TextMateは空白の代わりにドットを表示します)。
2つの解決策があります:
手放すためにもっと注意を払う ⌥ スペースバーを押すときにキーを押します。ちなみに、それは私にもいつも起こります。
組み合わせを完全に無効にします: 改行しないスペースのOption-Spaceキーの組み合わせを無効にする方法は?