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