%20%D0%B2%20%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B5%20rc%20(%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20Linux%2C%20%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%B8%D0%B7%20%D0%9E%D0%A1%20Plan9)%3F.png)
Я пытаюсь использовать оболочку 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
но я не думаю, что это лучше.