Как пропустить оценку амперсанда в командной строке?


13

При вводе URL-адреса Google Maps Directions в командную строку (для открытия с помощью браузера chromium через Терминал &) в URL-адресе присутствует амперсанд ( ), однако терминал его там разрывает из-за того, что Unix-компоненты являются Unix-компонентами. Есть ли что-то, что я могу ввести в терминал, что когда команда на самом деле проходит, она будет рассматриваться как амперсанд?

Будет; Работа?

Ответы:


15

Вам необходимо указать адрес в кавычках:

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.