Как добавить текст в файл?


Как проще всего добавить текст в файл в Linux?

Я посмотрел на этот вопрос, но принятый ответ использует дополнительную программу (sed) Я уверен, что там должен быть более простой способ с echo или аналогичные.

4 74

4 ответа:

cat >> filename
This is text, perhaps pasted in from some other source.
Or else entered at the keyboard, doesn't matter. 
^D

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

как насчет:

echo "hello" >> <filename>

С помощью >> оператор будет добавлять данные в конце файла, используя > перезапишет содержимое файла, если он уже существует.

вы также можете использовать printf точно так же:

printf "hello" >> <filename>

обратите внимание, что это может быть опасно для использования выше. Например, если у вас уже есть файл и нужно добавлять данные в конец файла и вы забыли добавить последний > все данные в файле будут уничтожены. Вы можете изменить это поведение, установив noclobber переменной в .bashrc:

set -o noclobber

теперь, когда вы пытаетесь сделать echo "hello" > file.txt вы получите предупреждение о том,cannot overwrite existing file.

для принудительной записи в файл теперь необходимо использовать специальный синтаксис:

echo "hello" >| <filename>

вы также должны знать, что по умолчанию echo добавляет завершающий символ новой строки, который можно подавить с помощью -n флаг:

echo -n "hello" >> <filename>

ссылки

другой возможный способ:

echo "text" | tee -a filename >/dev/null

The -a добавит в конце файла.

при необходимости sudo использовать:

echo "text" | sudo tee -a filename >/dev/null

следуйте принятому ответу.

вам нужно что-то другое, чем сочетания клавиш Ctrl-D, чтобы обозначить конец, если с помощью этого скрипта. Попробуйте вместо этого:

cat << EOF >> filename
This is text entered via the keyboard or via a script.
EOF

это добавит текст к указанному файлу (не включая "EOF").

Он использует вот документ (или heredoc).

однако, если вам нужно sudo, чтобы добавить к указанному файлу, вы столкнетесь с проблемой использования heredoc из-за перенаправления ввода / вывода, Если вы вводить непосредственно в командной строке.

этот вариант будет работать, когда вы набираете непосредственно в командной строке:

sudo sh -c 'cat << EOF >> filename
This is text entered via the keyboard.
EOF'

или вы можете использовать tee вместо того, чтобы избежать проблемы командной строки sudo видно при использовании heredoc с cat:

tee -a filename << EOF
This is text entered via the keyboard or via a script.
EOF