Как создать файл с несколькими строками из командной строки?

Как я могу ввести следующее содержимое в файл:

Hi abcd 

Я попытался использовать echo "Hi\nabcd" >> ab.txt , но в файле он написан как есть ( \n включен, вместо новой строки)

6 Solutions collect form web for “Как создать файл с несколькими строками из командной строки?”

Вы должны сказать echo чтобы почтить escape-последовательности.

 echo -e "Hi\nabcd" >> ab.txt 

Поведение echo варьируется от оболочки до оболочки 1; Поведение printf более стандартное.

 printf "Hi\nabcd" >> ab.txt 

¹ «Невозможно использовать эхо- портабельность во всех системах POSIX, если оба -n (как первый аргумент) и escape-последовательности не указаны».

Вы также можете просто сделать cat > file , затем набрать и нажать Ctrl-D, когда закончите.

Вы также можете играть в игры со ссылкой:

  % echo 'Hi > abcd' >> ab.txt 

Вы вводите это в bash, нажимая «Enter» после «Hi». Bash использует '>' в качестве приглашения на ее продолжение для меня. По какой-то причине я не мог избежать индивидуального возвращения с обратной косой чертой.

Я бы предложил использовать функцию оболочки bash под названием Here Document . Похоже, самая элегантная форма для достижения того, что вы описываете. Самое главное, многострочный контент выглядит точно так же, как и в выходном файле (в отличие от нечитабельных, длинных, \n разделенных строк).

 cat > ab.txt <<EOL Hi abcd EOL 

EOL здесь – это маркер, который сообщает, какую оболочку следует искать, чтобы найти конец документа здесь . Вы можете произвольно выбрать слово, которое позволит вам выбрать то, что не будет совпадало бы с самим содержимым этого документа . Приятно, что у вас может быть оболочка ${VARIABLES} которая будет заменена. Если это как-то нежелательно, вы всегда можете обернуть открывающее (только открывающее!) Маркерное слово кавычками ( ' ), чтобы предотвратить его.

Я лично использую это в сценариях init для создания небольших файлов конфигурации при настройке моей среды, например:

 cat > ~/.screenrc <<END_OF_HEREDOC_MARKER defscrollback ${MAX_LINES} END_OF_HEREDOC_MARKER 
 cp /dev/tty file 

нажмите Ввод. затем начните вводить текст. продолжайте печатать столько, сколько захотите. когда вы заполнили всю информацию, введите строку tty EOT. это обычно отправляется с помощью CTRL+D теперь, возможно, нажмите его еще раз. все готово.

  • Почему только 4 символа отправляются в последовательный порт через командную строку
  • Есть ли разница между двойным цитированием переменной или целой строкой в ​​эхо
  • Вернуться к спине Трубы в команду
  • эхо цветной текст с вкладками
  • Невозможно использовать параметр echo в файле сценария оболочки
  • Можно ли сделать здесь-документ в одной строке или эхо-дословно?
  • В чем разница между echo `date`, echo" date "и echo '' date`?
  • Что означает echo -e \ e - как побег?
  • эхо-файл в виде отдельной строки с \ n
  • Ubuntu unattended install: echo keypress to dialog
  • Комбинированный генератор с памятью и управлением ресурсами
  • Interesting Posts

    Как быстро суммировать все числа в файле?

    IP-адреса, которые я связывал, продолжают перестать отвечать на ping

    таймер systemd OnUnitActiveSec vs OnCalendar для замены anacron

    Реконструкция записи с разделителями табуляции в bash не работает

    Отключить вывод журнала на консоль

    Каковы директивы chkconfig (классический стиль) в сценарии init.d?

    Список названных пунктов назначения в формате PDF

    Как bash печатать на экране, если нет с фреймбуфером?

    Установка драйвера на ноутбуке Debian Squeeze

    Установить теорию с помощью инструментов unix: «расслабленное» пересечение двух списков, где элемент в наборе 1 является по меньшей мере подстрокой элементов в наборе 2

    Ubuntu, установленный из mini-ISO под VirtualBox, не загружается

    Ctrl-C не работает с сеансом pppd без отсоединения

    Как мы можем избежать перезагрузки системы после изменения раздела с помощью fdisk?

    Размещение окна при переключении на несколько мониторов

    1 FastCGI, отправленный в stderr: «Сообщение PHP: PHP Неустранимая ошибка: session_start (): Не удалось инициализировать модуль памяти:

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