端末(Ubuntu)で次のように入力することがあります。
ls | grep toto
次のエラーが表示されます。
grep: command not found*
シェルが先頭にスペースを付けて grep を書き込んでいることに注意してください。これはどのように可能ですか?
<元の質問のソースを確認します>
<pre style="width:650px; white-space:pre-wrap">Sometimes on my terminal (Ubuntu) when I type : ls | grep toto
実際の行をコピーして貼り付けてくれてありがとう!(しかし、あなたはエラー メッセージをコピー アンド ペーストしませんでした。いたずらです!) 問題がわかりましたか? パイプ記号の後に改行できないスペースがあります。シェルは ASCII 文字のみを理解します。U+00A0 NO-BREAK SPACE を含むすべての非 ASCII 文字は単語構成要素として扱われるため、改行不能スペースはコマンド名の位置にある単語の一部として扱われます。
AltGrおそらく、入力するために押し続ける必要があるキーボードレイアウトを使用しています|
。の代わりに誤って+を入力しないように、必ずAltGr修飾子を離してください。そこにスペースは必要ないことに注意してください。指が使いやすい場合は入力できます。AltGrSpaceSpacels |grep toto
Gilles の回答を完成させるには、Ubuntu/Gnome でこの動作を無効にすることができます。これには、キーボード レイアウト設定で改行不可のスペース文字を通常のスペースに置き換えます。
[設定] -> [キーボード] -> [レイアウト] -> [オプション] で、[スペース キーを使用して改行できないスペース文字を入力する] を選択し、[任意のレベルで通常のスペースを使用] に設定します。
またはコマンドラインから
setxkbmap -option "nbsp:none"
この修正はhttp://my.opera.com/nicomen/blog/unrecognized-character-xc2で見つけました。
これは、中かっこを使用する Perl スクリプトのフランス語キーボードや、スペースが続くコメントにハッシュ記号を使用する Python の場合にも迷惑でした。