Как добавить несколько строк в файл с помощью bash, с символом «-» перед строкой

Вопрос очень похож на Как добавить несколько строк в файл с bash, но я хочу запустить файл с -- , а также добавить к файлу, если это возможно.

 printf "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test 

Проблема заключается в том, что файл начинается с «-»:

 -bash: printf: --: invalid option printf: usage: printf [-v var] format [arguments] 

Есть ли способ избежать -- ? Есть ли альтернативы? Я не уверен, как делать несколько строк с использованием echo , а cat не очень хорошая опция, я хотел бы иметь ее в автоматическом скрипте.

One Solution collect form web for “Как добавить несколько строк в файл с помощью bash, с символом «-» перед строкой”

Большинство команд, которые принимают --foo как параметр, также принимают -- само по себе как маркер «end of options, start of arguments», чтобы вы могли:

 printf -- "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test 

Но более конкретный ответ на ваш точный пример состоит в том, что первый аргумент printf является спецификатором формата, и вы делаете что-то более сложным, чем необходимо, не используя printf для его способностей форматирования. Это будет лучший способ сделать то, что вы хотите:

 printf "%s\n" --no-color --format-doc --no-profile >> ~/.rspec-test 

Это говорит printf, чтобы получить каждый аргумент, который он получает, и распечатать его, а затем новую строку. Легче повторять \n самостоятельно, и это позволяет избежать проблем, с которыми вы столкнулись. И он устраняет необходимость избегать любых знаков % которые могут содержать ваши строки.

Что касается того, как делать несколько строк с echo , вы можете использовать:

 echo -ne "--no-color\n--format-doc\n--no-profile\n" >> ~/.rspec-test 

Или, гораздо более портативно:

 { echo --no-color; echo --format-doc; echo --no-profile; } >> ~/.rspec-test 

Или используя кошку вместе с документом here-doc:

 cat >>.rspec-test <<EOF --no-color --format-doc --no-profile EOF 
  • Почему это «while kill -0 $ PID», а не «до kill -0 $ PID»?
  • Установить идентификатор родительского процесса из ShellScript, позже удалить все дочерние процессы
  • Сравнение строки по значению плавающего числа с числом
  • Как присвоить значение переменной, когда значение содержит символ $ в ней
  • Как проверить, существует ли один или оба из двух файлов?
  • Выполнение перенаправления 2> и 1 внутри скрипта
  • Как подсчитать значения, соответствующие определенному условию?
  • Изменение размера изображения в скрипте с помощью Imagemagick
  • Статус последнего выхода из скрипта без источника
  • Прочитайте файл и прокомментируйте строку, соответствующую строке, с помощью сценария оболочки
  • Как выполнить скрипт R, связав его с сценарием оболочки в Linux?
  • Interesting Posts

    Баш: «плохой интерпретатор: слишком много уровней символических ссылок» Ошибка

    Как запросить размер страницы pdf из командной строки?

    Как я могу grep результаты FIND с использованием -EXEC и все еще выводятся в файл?

    Каков наиболее эффективный способ перемещения большого количества файлов, которые находятся в одном каталоге?

    Как распечатать пять самых высоких чисел из столбца?

    установить параметры, определяющие общий ресурс на mac

    Bactrack5 + VMWare + Ошибка GNOME

    Хорошо ли иметь несколько версий ядра Linux?

    Какова цель запуска xterm из обычного терминала

    Изменение размера логического тома без бесплатных экстентов, но с свободным дисковым пространством

    Как работает эта команда sed?

    Как восстановить отсутствующий файл Grub

    Lightdm, показывающий greeter на внешнем мониторе

    Скрипты для размещения домена на сервере

    Какой дистрибутив для обучения LPIC?

    Linux и Unix - лучшая ОС в мире.