Існує кілька способів читати та писати файл у bash. Найпростіший спосіб - використовувати оператори “>” та “>>”.
- Оператор “>” замінить наявні дані
- Оператор “>>” додасть дані
Загальним форматом використання операторів перенаправлення є:
Дані> Назва файлуДані >> Назва файлу
Давайте розберемося із процедурою запису у файл на прикладі:
Як написати файл за допомогою операторів переспрямування
Як обговорювалося вище, простий і зрозумілий підхід до запису у файл використовує оператори перенаправлення. Наприклад, якщо ви хочете змінити текст уже існуючого файлу, спершу створіть текстовий файл з ім'ям “тестовий файл.txtІ напишіть у ньому що-небудь:
Збережіть текстовий файл.
Введіть згадану нижче команду в терміналі:
$ echo “Перезапис існуючого тексту у файлі”> тестовий файл.txt
Надмірне віджимання може бути ризикованим; отже, гарною практикою є ввімкнення "noclobber". Встановлення “noclobber” заблокує будь-який перезапис будь-якого вихідного файлу.
$ set -o noclobber$ echo “Перезапис існуючого тексту у файлі”> тестовий файл.txt
Але якщо ви хочете обійти “noclobber”, використовуйте “> |”Оператор замість“>”:
$ echo “Перезапис існуючого тексту у файлі”> | тестовий файл.txtАбо ви можете просто відключити “noclobber”:
$ set + o noclobber
Але ця команда позбавить захисту всіх файлів.
Наведений вище результат свідчить про те, що існуючий текст було перезаписано. Тепер давайте використаємо “>>”Оператор:
$ echo “Додавання тексту до існуючого текстового файлу” >> тестовий файл.txt
“відлуння"Не завжди ідеально підходить для використання, оскільки ви не можете форматувати текст, використовуючи його, тому використовуйте" printf "замість" echo "для форматування тексту, як показано в такій команді:
$ printf “Ласкаво просимо \ n Це новий текстовий файл.”> Newtestfile.txt
Давайте розберемося в концепції на прикладі сценарію bash. Відкрийте Vim, набравши в терміналі “vim”. Якщо на вашому пристрої немає редактора Vim, встановіть його за допомогою:
$ sudo apt встановити vimВведіть сценарій:
#! / bin / bashecho “Введи своє ім’я”
прочитане ім'я
echo $ name> data_dir.txt
ехо “Введіть свій вік”
прочитаний вік
echo $ age >> data_dir.txt
cat data_dir.txt
“кішкаКоманда ”використовується для створення та редагування файлів. Збережіть вищезазначений сценарій у Vim, переключивши режим після натискання кнопки “вихідКлавішу, а потім введіть “: w myscript.ш". Відкрийте термінал і запустіть код:
Як написати файл за допомогою Heredoc
Якщо ви хочете написати кілька рядків, то найпростішим методом є використання “Heredoc”. Тут документ, також відомий як "Heredoc", є багатофункціональним кодовим блоком. Синтаксис Heredoc:
Команда <<[-] Delimiter.
текст / команди
.
Розділювач
Будь-який рядок можна використовувати замість “Розділювач”, а “-” також можна використовувати для видалення будь-яких пробілів табуляції у файлі. Давайте зрозуміємо це на простому прикладі:
#! / bin / bashкішка << TEXTFILE
Це текстовий файл.
Цей файл створений за допомогою heredoc.
ТЕКСТИФ
Наведена вище команда "кішка" сценарію створює текстовий файл з назвою "TEXTFILE" і записує текст у щойно створений файл. Тепер збережіть файл за назвою “таємниця.ш". Запустіть термінал і запустіть скрипт.
Як написати файл за допомогою команди Tee
Іншим способом написання файлу є використання команди “Tee”. В якості імені, що вказує, ця команда бере вхід, записує у файл і одночасно відображає вихід. За замовчуванням команда “Tee” замінить наявні дані.
$ echo “Це якийсь текст” | текстовий файл трійника.txt
Щоб додати використання -a:
$ echo “Це інший текст” | трійник - текстовий файл.txt
Щоб написати кілька рядків, використовуйте:
$ echo “Додавання тексту до декількох файлів” | текстовий файл трійника1.txt текстовий файл2.txt текстовий файл3.txt
Вищенаведена команда створить три файли, якщо вони не існують, і напише текст до кожного з них.
Висновок
Цей посібник зосереджений на декількох підходах для запису у файл у bash з прикладами. У скриптах bash існує кілька способів написати файл, але найпростіший - використання операторів перенаправлення “>”, “>>”. Для написання декількох рядків можна використовувати “heredoc”, і якщо ви хочете записати однакові дані в кілька рядків, тоді команда “tee” дуже зручна.