Существует несколько способов чтения и записи файла в bash. Самый простой способ - использовать операторы> и >>.
- > оператор перезапишет существующие данные
- >> оператор добавит данные
Общий формат использования операторов перенаправления:
Данные> Имя файла
Данные >> Имя файла
Давайте разберемся с записью в файловую процедуру на примере:
Как записать файл с помощью операторов перенаправления
Как обсуждалось выше, простой и понятный подход к записи в файл заключается в использовании операторов перенаправления. Например, если вы хотите изменить текст уже существующего файла, сначала создайте текстовый файл с именем testfile.txt и напишите в нем что угодно:
Сохраните текстовый файл.
Введите в терминале указанную ниже команду:
$ echo Перезапись существующего текста в файле> testfile.txt
Чрезмерное отжимание может быть рискованным; поэтому рекомендуется включать noclobber. Установка noclobber заблокирует любую перезапись любого существующего файла.
$ set –o noclobber$ echo Перезапись существующего текста в файле> testfile.txt
Но если вы хотите обойти noclobber, используйте > | оператор вместо > :
$ echo Перезапись существующего текста в файле> | testfile.txtИли вы можете просто отключить noclobber:
$ set + или noclobber
Но эта команда снимет защиту со всех файлов.
Приведенный выше вывод указывает, что существующий текст был перезаписан. Теперь давайте воспользуемся >> оператор:
$ echo Добавление текста в существующий текстовый файл >> testfile.txt
выбросил не всегда идеально использовать, поскольку вы не можете форматировать текст с его помощью, поэтому используйте printf вместо echo для форматирования текста, как показано в следующей команде:
$ printf Добро пожаловать n Это новый текстовый файл. > newtestfile.txt
Давайте разберемся в концепции на примере сценария bash. Откройте Vim, набрав vim в терминале. Если на вашем устройстве нет редактора Vim, установите его, используя:
$ sudo apt install vimВведите сценарий:
#! / bin / bashэхо Введите ваше имя
читать имя
echo $ name> data_dir.txt
эхо Введите свой возраст
читать возраст
echo $ age >> data_dir.txt
cat data_dir.txt
В Кот команда используется для создания и редактирования файлов. Сохраните приведенный выше скрипт в Vim, переключив режим после нажатия кнопки Esc ключ, а затем введите : в myscript.sh . Откройте терминал и запустите код:
Как написать файл с помощью Heredoc
Если вы хотите написать несколько строк, то самый простой способ - использовать Heredoc. Здесь документ, также известный как Heredoc, представляет собой многоцелевой блок кода. Синтаксис Heredoc:
Командование<<[-] Delimiter.
текст / команды
.
Разделитель
Вместо разделителя можно использовать любую строку, а - также можно использовать для удаления любых пробелов табуляции в файле. Давайте разберемся с этим на простом примере:
#! / bin / bashКот<< TEXTFILE
Это текстовый файл.
Этот файл создан с использованием heredoc.
ТЕКСТОВЫЙ ФАЙЛ
Приведенная выше команда сценария cat создает текстовый файл с именем TEXTFILE и записывает текст в только что созданный файл. Теперь сохраните файл под именем myscript.sh . Запускаем терминал и запускаем скрипт.
Как записать файл с помощью команды Tee
Другой метод записи файла - использование команды Tee. Как указывает имя, эта команда принимает ввод и записывает в файл и одновременно показывает вывод. По умолчанию команда Tee перезапишет существующие данные.
$ echo Это какой-то текст | тройник textfile.txt
Чтобы добавить, используйте –a:
$ echo Это еще один текст | tee –a textfile.txt
Чтобы написать несколько строк, используйте:
$ echo Добавление текста в несколько файлов | tee textfile1.txt textfile2.txt textfile3.txt
Приведенная выше команда создаст три файла, если они не существуют, и напишет текст в каждый из них.
Заключение
В этом руководстве основное внимание уделяется нескольким подходам к записи в файл в bash с примерами. В сценариях bash существует несколько способов записи файла, но самый простой - использовать операторы перенаправления>, >>. Для записи нескольких строк можно использовать heredoc, и если вы хотите записать одни и те же данные в несколько строк, то команда tee весьма удобна.