Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Как насчет:

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>

Ссылки

Ответ 3

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

echo "text" | tee -a filename

Параметр -a добавится в конце файла.

Ответ 4

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

Вам нужно что-то отличное от CTRL-D, чтобы назначить конец, если использовать его в script. Вместо этого попробуйте:

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