Как добавить в файл с помощью Bash — Append

9 feb 2024 2 min di lettura
Как добавить в файл с помощью Bash — Append
Indice dei contenuti

Введение

При работе с 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, которая не только добавляет текст в файл, но и отображает его на экране по мере добавления.

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.