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