Поиск по сайту:

Дадим потребителю не то, что он хочет, а то, в чем он нуждается! (А.Б. Мигдал).

Bash. Запись в файл3 мин для чтения

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
14 января 2021
Bash Heredoc
Одна из наиболее распространенных задач при написании сценариев Bash или работе в командной строке Linux – это чтение и запись файлов.

В этой статье объясняется, как записать текст в файл в Bash, используя операторы перенаправления и команду tee.

 

Запись в файл с использованием операторов перенаправления

В Bash перенаправление вывода позволяет вам захватить вывод команды и записать его в файл.

Общий формат перенаправления и записи вывода в файл следующий:

output > filename 
output >> filename 
  • Оператор перенаправления > записывает вывод в указанный файл. Если файл существует, он обрезается до нулевой длины. В противном случае создается файл. Будьте особенно осторожны при использовании этого оператора, так как вы можете перезаписать важный файл.
  • Оператор перенаправления >> добавляет вывод в указанный файл. Если файл не существует, он создается.

У вас должны быть права на запись в файл. В противном случае вы получите сообщение об ошибке в разрешении отказано.

Вот простой пример, показывающий, как перенаправить вывод echoкоманды в файл:

echo "this is a line" > file.txt

 

Чтобы предотвратить перезапись существующих файлов, включите опцию «noclobber» с помощью встроенной команды set:

set -o noclobberecho "this is a line" > file.txt
bash: file.txt: cannot overwrite existing file

 

Оператор >| позволяет переопределить в Bash вариант «noclobber»:

set -o noclobber echo "this is a line" >| file.txt

 

Оператор >> добавить вывод в конец файла, а не перезаписывать файл:

echo "this is a 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

 

Для добавления строк, изменения > с >> перед именем файла:

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

 

Читать  Команда ln в Linux. Создание мягких и жестких ссылок

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

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

 

Вывод команды date будет записан в файл.

 

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

Команда teeсчитывает из стандартного ввода и записывает как в стандартный вывод, так и в один или несколько файлов одновременно.

echo "this is a line" | tee file.txt

 

По умолчанию команда tee перезаписывает указанный файл, как и оператор >. Чтобы добавить вывод в файл, вызовите команду с параметром -a ( –append):

echo "this is a line" | tee -a file.txt

 

Если вы не хотите, чтобы  команда tee писал на стандартный вывод, вы можете перенаправить его на /dev/null:

echo "this is a line" | tee file.txt >/dev/null

 

Чтобы записать текст более чем в один файл, укажите файлы в качестве аргументов teeкоманды:

echo "this is a line" | tee file_1.txt file_2.txt file_3.txt

 

Еще одно преимущество teeкоманды состоит в том, что вы можете использовать ее вместе с файлами sudo, принадлежащими другим пользователям, и записывать в них. Чтобы добавить текст в файл, для которого у вас нет прав на запись, добавьте sudo перед tee:

echo "this is a line" | sudo tee file.txt

 

Вывод команды echo передаются в качестве входных данных к tee, который возводит разрешения SUDO и записывает текст в файл.

 

Заключение

В Linux для записи текста в файл используйте операторы перенаправления > и >> или команду tee.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читайте также

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close