Kako pisati v datoteko v Bashu

How Write File Bash



Eno bistvenih nalog, ki jih opravljamo pri delu s skriptom bash, je branje in pisanje datotek. V tem priročniku se bomo osredotočili na to, kako brati datoteke v bashu in kako jih urejati.

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.txt

Ali 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 vim

Vnesite skript:

#! /bin/bash
echo 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/bash

mač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.