Obstaja več načinov za branje in pisanje datoteke v bash. Najenostavnejši način je uporaba operatorjev> in >>.
- > bo operater prepisal obstoječe podatke
- >> bo operater dodal podatke
Splošna oblika uporabe operaterjev preusmeritev je:
Podatki> Ime datoteke
Podatki >> Ime datoteke
Razumemo postopek zapisovanja v datoteko s primerom:
Kako napisati datoteko z operaterji preusmeritve
Kot smo že omenili, enostaven in enostaven pristop pisanja v datoteko uporablja operaterje preusmerjanja. Na primer, če želite spremeniti besedilo že obstoječe datoteke, najprej ustvarite besedilno datoteko z imenom testfile.txt in vanj napiši karkoli:
Shranite besedilno datoteko.
V terminal vnesite spodnji ukaz:
$ echo Prepis obstoječega besedila v datoteki> testfile.txt
Prekrivanje je lahko tvegano; zato je dobra praksa omogočiti noclobber. Nastavitev noclobber bi blokirala kakršno koli prepisovanje v katero koli izhodno datoteko.
$ set –o noclobber$ echo Prepis obstoječega besedila v datoteki> testfile.txt
Če pa želite obiti noclobber, uporabite > | operater namesto > :
$ echo Prepis obstoječega besedila v datoteki> | testfile.txtAli pa preprosto onemogočite noclobber:
$ set + ali noclobber
Toda ta ukaz bo odvzel zaščito vsem datotekam.
Zgornji izhod pomeni, da je bilo obstoječe besedilo prepisano. Zdaj pa uporabimo >> operater:
$ echo Dodajanje besedila obstoječi besedilni datoteki >> testfile.txt
vrgel ven ni vedno idealen za uporabo, saj z njim ne morete oblikovati besedila, zato za oblikovanje besedila uporabite printf namesto odmeva, kot je prikazano v naslednjem ukazu:
$ printf Dobrodošli n To je nova besedilna datoteka. > newtestfile.txt
Razumejmo koncept s primerom bash skripta. Odprite Vim tako, da v terminal vnesete vim. Če v napravi nimate urejevalnika Vim, ga namestite z:
$ sudo apt install vimVnesite skript:
#! /bin/bashecho Vnesite svoje ime
preberi ime
echo $ name> data_dir.txt
echo Vnesite svojo starost
beri starost
echo $ age >> data_dir.txt
mačka data_dir.txt
The mačka ukaz se uporablja za ustvarjanje in urejanje datotek. Zgornji skript shranite v Vim s preklopom načina po pritisku na Esc tipko in nato vnesite : v myscript.sh . Odprite terminal in zaženite kodo:
Kako napisati datoteko s programom Heredoc
Če želite napisati več vrstic, potem je najlažji način uporaba Heredoca. Tu je dokument, znan tudi kot Heredoc, večnamenski kodni blok. Sintaksa Heredoca je:
Ukaz<<[-] Delimiter.
besedilo/ukazi
.
Ločilo
Namesto ločila lahko uporabite poljuben niz in - lahko uporabite tudi za odstranitev vseh zavihkov v datoteki. Razumejmo to s preprostim primerom:
#! /bin/bashmačka<< TEXTFILE
To je besedilna datoteka.
Ta datoteka je ustvarjena z uporabo heredoc.
TEXTFILE
Zgornji ukaz cat skript ustvari besedilno datoteko z imenom TEXTFILE in zapiše besedilo v pravkar ustvarjeno datoteko. Zdaj shranite datoteko z imenom myscript.sh . Zaženite terminal in zaženite skript.
Kako napisati datoteko z ukazom Tee
Drug način pisanja datoteke je uporaba ukaza Tee. Kot ime, ki označuje ta ukaz, vnese in zapiše v datoteko ter hkrati prikaže izhod. Privzeto bo ukaz Tee prepisal obstoječe podatke.
$ echo To je nekaj besedila | tee textfile.txt
Če želite dodati uporabo –a:
$ echo To je drugo besedilo | tee - besedilna datoteka.txt
Če želite napisati več vrstic, uporabite:
$ echo Dodajanje besedila v več datotek | tee textfile1.txt textfile2.txt textfile3.txt
Zgornji ukaz bo ustvaril tri datoteke, če ne obstajajo, in v vsako zapisal besedilo.
Zaključek
Ta vodnik se osredotoča na več pristopov za pisanje v datoteko v bash s primeri. Pri skriptiranju bash obstaja več načinov za pisanje datoteke, vendar je najpreprostejši operater preusmeritev>, >>. Za zapis več vrstic lahko uporabite heredoc, in če želite iste podatke zapisati v več vrstic, je ukaz tee zelo priročen.