Я пытаюсь использовать оболочку rc (порт Linux из ОС Plan9) и получаю сообщения «синтаксическая ошибка» при использовании программ с такими аргументами, какарг=значение.
; dd if=/dev/zero of=/dev/null
syntax error
; ls --color=auto
syntax error
Я предполагаю, что оболочка rc видит"="sign и обрабатывает оператор как присваивание переменной, а не запуск программы. Может быть, в Plan9 нет программы dd или других программ, использующих этот тип аргументов. Но как я могу использовать его в Linux, где они широко используются?
Я пытался сбежать"="типа dd if\=... of\=
, не помогло.
Я пробовал цитировать аргументы типа dd 'if=/dev/zero' 'of=/dev/null' 'bs=1M' 'count=1'
и это сработало. Но это не очень удобно. Есть ли другой более удобный способ?
Я использую rc shell из репозитория Ubuntu 11.10: версия пакета 1.7.1-3ubuntu1.
решение1
в соответствии с man rc
:
Следующие символы являются специальными: # ; & | ^ $ = ` ' { } ( ) < > Одинарная кавычка (') предотвращает специальную обработку любого символа, кроме самого себя.
Так же =
есть специальный символ, от которого вам нужно убежать.
Если вам не нравится синтаксис:
ls '--color=auto'
вы можете экранировать только =
символ:
ls --color'='auto
но я не думаю, что это лучше.