Как бороться с пробелами и кавычками в командной строке

Я использовал по этой ссылке , чтобы программы не могли использовать интернет-соединение в Ubuntu / Linux.

Однако я все еще не могу завершить последний шаг, как показано:

$ ni wine C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe
bash: syntax error near unexpected token `('
$ ni "wine C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `wine C:\Program Files (x86)\Foxit Software\Foxit    Reader\FoxitReader.exe'
$ ni wine "C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"
Usage: wine PROGRAM [ARGUMENTS...]   Run the specified program
       wine --help                   Display this help and exit
       wine --version                Output version information and exit
$ ni wine FoxitReader.exe
Usage: wine PROGRAM [ARGUMENTS...]   Run the specified program
       wine --help                   Display this help and exit
       wine --version                Output version information and exit
0
задан 16 June 2015 в 11:56

2 ответа

То, что сказал Энтони, является правдой, вы можете использовать «», чтобы сказать, что весь путь является строкой, но, возможно, это стоит рассмотреть, как с этим методом, который вы можете использовать, чтобы завершить ваши пути: Есть много специальных символов в Unix терминал, включая пробелы, *, переводы строки и др. Вы можете игнорировать их, набрав перед ними «\». Поэтому, если папка называется «Мой тест», вы можете использовать cd "My test" или cd My\ test, которые вы можете заполнить. Но в вине вам, вероятно, придется использовать соглашение Майклсофта Бинбоуса "". (Без обид, просто Microsoft шутит: D)

"Protip: D" Иногда вы можете по какой-то причине написать "\" персонаж. Чтобы написать это, вы должны защитить его, поэтому перед ним ставится еще один «\». Так что, если вы хотите написать «Защищенный персонаж», вы на самом деле делаете echo Protected character \\. Обратите внимание, что echo принимает строковые аргументы, поэтому вам не нужно защищать пространство.

Надеюсь, это поможет:)

0
ответ дан 16 June 2015 в 11:56

Синтаксические ошибки означают, что оболочка испытывает затруднения при интерпретации команд. Это - результат того, что оболочка разделяет слова на основе пробелов, когда она анализирует командную строку. Без кавычек каждую отдельную часть аргумента (такой как C:\Program) рассматривают как отдельный аргумент отдельно. Можно использовать кавычки для предотвращения разделения слова:

ni wine "C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"

Это передает два аргумента эти ni команда: wine и полный Windows соединяют каналом для FoxitReader.

, Когда Вы пытались поместить вводную двойную кавычку прежде wine, оболочка рассматривала всех из wine C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe как один аргумент в пользу эти ni команда.

, Если Вы хотите избежать подобных проблем в будущем, I’d рекомендуют проверить Wiki Greg’s на всестороннее объяснение на , как оболочка имеет дело с пробелами . Вы не можете понять все это, но необходимо все еще изучить, почему, когда и как избежать проблем разделения слова.

2
ответ дан 16 June 2015 в 11:56
  • 1
    @daniel f. У меня есть способный-daily.timer файл в/lib/systemd/system/, а также один в/etc/systemd/system/timers.target.wants/Однако я don' t имеют любого в самом/etc/systemd/system/как Вы. Вы знали бы, должен ли я создавать способный-daily.timer.d каталог и override.conf под/lib/systemd/system вместо этого? Весь совет с благодарностью recd с благодарностью. – Purvez 27 April 2017 в 13:24

Другие вопросы по тегам:

Похожие вопросы: