Как добавить текст в файл?
Как проще всего добавить текст в файл в Linux?
Я посмотрел на этот вопрос, но принятый ответ использует дополнительную программу (sed
) Я уверен, что там должен быть более простой способ с echo
или аналогичные.
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