Как добавить текст в файл?
Как проще всего добавить текст в файл в 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/nullThe
-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