Bash: добавить текст в файл

В 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

Другой способ добавить текст в файл — использовать документ Here (Heredoc). Это тип перенаправления, который позволяет передавать команде несколько строк ввода.

Например, вы можете передать содержимое команде cat и добавить его в файл:

cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as: $(whoami)
EOF

Вы можете добавить вывод любой команды в файл. Вот пример с командой date :

date +"Year: %Y, Month: %m, Day: %d" >> file.txt

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

Добавить в файл с помощью команды tee

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 .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий