Як пропустити оцінку ampersand у командному рядку?


14

Під час введення URL-адреси вказівки Google Maps в командний рядок (для відкриття за допомогою браузера хрому через Terminal &) в URL-адресі є амперсанд ( ), однак термінал розбиває його через те, що Unix є предметом Unix. Чи можу я щось набрати в термінал, що коли команда насправді проходить, вона буде розглядатися як амперсанд?

Буде; підсилювач; робота?

Відповіді:


16

Потрібно вказати адресу в лапках:

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

Гаразд, я мав цитату в кінці, але не та, яка була напередодні ... це пояснює. Дякую.
Лерон

7

Котирування виправлять це, але ви також можете уникати речей із зворотною косою рисою:

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

Не кажучи, що це краще, будь-яким способом, це просто інший варіант для подібних ситуацій.


1

Насправді це не має значення в цьому випадку, але є різниця між одинарними та подвійними.

Подвійні лапки замінять спеціальні символи, такі як "$" та цитати, тоді як одиничні цитати розглядають усе буквально, крім єдиної цитати, що закривається.

Обидва згрупують текст разом, що змушує хром обробляти його єдиним аргументом, а символи типу "; #" не мають особливого значення в цьому контексті.

Це показує використання "\", щоб уникнути подвійної лапки в межах подвійних лапок, а також зворотної косої риски:

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

З одинарними котируваннями нічого не змінюється:

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

Без лапок "&" розбиває його на дві команди:

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

Зазвичай, маючи справу з одним видом цитат, ви можете просто перекласти його в інший тип, але у вас можуть виникнути проблеми з цим:

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

Одиничні лапки не замінені, але "$" є. Наступний синтаксис працює:

mat@sen:~$ echo $'a\'bc$foo'
a'bc$foo
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.