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


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

Will; amp; Работа?


12
2018-06-28 06:18


происхождения




ответы:


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

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

12
2018-06-28 06:21



Ладно, у меня была цитата в конце, но не первая, это объясняет это. Спасибо. - Leron


Цитаты исправит это, но вы также можете избежать вещей с помощью обратной косой черты:

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

Не сказать, что это лучше, любым способом, это просто еще один вариант для подобных ситуаций.


7
2018-06-28 09:37





В этом случае это не имеет значения, но есть разница между одинарными кавычками и двойными кавычками.

Двойные кавычки заменят специальные символы, такие как «$» и кавычки, тогда как одинарные кавычки обрабатывают все буквально, за исключением закрывающей одинарной кавычки.

Оба будут группировать текст вместе, что заставляет хром рассматривать его как один аргумент, а символы типа «; # &» не имеют особого значения в этом контексте.

Это показывает использование '\' для избежания двойной кавычки в двойных кавычках и самой обратной косой черты:

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

1
2017-07-01 19:57