Введение
В Bash есть несколько способов добавить текст в файл. В этой статье описаны некоторые из них.
Чтобы добавить текст в файл, у вас должны быть права на запись. В противном случае вы получите ошибку отказа в доступе.
Используйте оператор перенаправления >>
Перенаправление позволяет получать выходные данные одной команды и отправлять их в качестве входных данных другой команде или файлу. Оператор перенаправления >>
добавляет вывод в указанный файл.
Существует ряд команд, которые вы можете использовать для вывода текста на стандартный вывод и перенаправления его в файл, наиболее часто используемыми являются команды echo
и printf
.
Чтобы добавить текст в файл, укажите имя файла после оператора перенаправления:
echo "this is a new line" >> file.txt
При использовании с параметром -e
команда echo
интерпретирует экранированные символы обратной косой черты как символ новой строки \n
:
echo -e "this is a new line \nthis is another new line" >> file.txt
Если вы хотите получить более сложный вывод, используйте команду printf
, которая позволяет указать формат вывода:
printf "Hello, I'm %s.\n" $USER >> file.txt
Вы можете добавить вывод любой команды в файл. Вот пример с командой date
:
date +"Year: %Y, Month: %m, Day: %d" >> file.txt
При добавлении файла в перенаправление будьте осторожны и не используйте оператор >
, который перезаписывает существующий файл.
Используйте команду тройника
tee
— это утилита командной строки в Linux, которая одновременно читает из стандартного ввода и записывает как в стандартный вывод, так и в один или несколько файлов.
По умолчанию команда tee
перезаписывает указанный файл. Чтобы добавить вывод в файл, используйте tee
с параметром -a
( --append
):
echo "this is a new line" | tee -a file.txt
Если вы не хотите, чтобы tee
писал в стандартный вывод, перенаправьте его в /dev/null
:
echo "this is a new line" | tee -a file.txt >/dev/null
Преимущество использования команды tee
вместо оператора >>
заключается в том, что tee
позволяет добавлять текст сразу в несколько файлов и записывать в файлы, принадлежащие другим пользователям, вместе с sudo
.
Чтобы добавить текст в файл, для которого у вас нет прав на запись, добавьте sudo
перед командой tee
, как показано ниже:
echo "this is a new line" | sudo tee -a file.txt
tee
получает вывод команды echo
и с разрешениями sudo записывает в файл.
Чтобы добавить текст в несколько файлов, укажите файлы в качестве аргументов команды tee
:
echo "this is a new line" | tee -a file1.txt file2.txt file3.txt
Вывод
В Linux для добавления текста в файл используйте оператор перенаправления >>
или команду tee
.