コマンドラインでアンパサンドの評価をスキップする方法は?


13

Google Maps Directions URLをコマンドラインに入力する場合(Terminalを介してChromeブラウザで開くため&)、URLにアンパサンド()がありますが、UnixがUnixのものであるため、端末はそこでアンパサンドを打ちます。コマンドを実際に実行したときに、アンパサンドのように処理される端末に入力できるものはありますか?

ウィル; amp; 作業?

回答:


15

アドレスを引用符で囲む必要があります。

chromium-browser 'http://whatever.com/?x=1&y=2'

さて、最後に引用文がありましたが、前のものはありませんでした...それはそれを説明しています。ありがとうございました。
レロン

7

引用符で修正できますが、バックスラッシュでエスケープすることもできます:

echo http://whatever.com/?x=1\&y=2

これが良いとは言いませんが、どういうわけか、このような状況の別の選択肢にすぎません。


1

この場合、実際には問題になりませんが、一重引用符と二重引用符には違いがあります。

二重引用符は、「$」や引用符などの特殊文字に置き換えられますが、単一引用符は、単一引用符を除くすべてを文字通り処理します。

両方ともテキストをグループ化するため、chromiumは単一の引数として処理し、「;#&」などの文字はそのコンテキストでは特別な意味を持ちません。

これは、二重引用符内の二重引用符とバックスラッシュ自体をエスケープするための「\」の使用を示しています。

mat@sen:~$ echo "a&bc\\#de\"f"
a&bc\#de"f

単一引用符を使用しても変更はありません。

mat@sen:~$ echo 'a&bc\\#de\"f'
a&bc\\#de\"f

引用符がないと、「&」はそれを2つのコマンドに分割します。

mat@sen:~$ echo a&bc\\#de\"f
[1] 2619
a
bc\#de"f: command not found
[1]+  Done                    echo a
[1]+  Done                    echo a

通常、1種類の引用を処理するときは、他の種類の引用で囲むことができますが、これで問題が発生する可能性があります。

mat@sen:~$ echo "'a'bc$foo"
'a'bc

単一引用符は置換されませんが、「$」は置換されます。ただし、次の構文は機能します。

mat@sen:~$ echo $'a\'bc$foo'
a'bc$foo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.