Det er flere måter å lese og skrive en fil på bash. Den enkleste måten er å bruke operatorer> og >>.
- > operatøren vil overskrive eksisterende data
- >> operatøren vil legge til data
Det generelle formatet for bruk av omdirigeringsoperatorer er:
Data> Filnavn
Data >> Filnavn
La oss forstå skriving til en filprosedyre med et eksempel:
Hvordan skrive en fil ved hjelp av omdirigeringsoperatorer
Som omtalt ovenfor bruker den enkle og greie tilnærmingen til å skrive til en fil omdirigeringsoperatorer. For eksempel, hvis du vil endre teksten til en allerede eksisterende fil, må du først lage en tekstfil med navnet på testfile.txt og skriv noe i det:
Lagre tekstfilen.
Skriv inn kommandoen nedenfor i terminalen:
$ echo Overskrive den eksisterende teksten i filen> testfile.txt
Overvridning kan være risikabelt; Derfor er det god praksis å aktivere noclobber. Innstilling av noclobber vil blokkere enhver overskriving til en hvilken som helst spennende fil.
$ set –o noclobber$ echo Overskrive den eksisterende teksten i filen> testfile.txt
Men hvis du vil omgå noclobber, bruk deretter > | operatør i stedet for > :
$ echo Overskrive den eksisterende teksten i filen> | testfile.txtEller du kan ganske enkelt deaktivere noclobber:
$ set + eller noclobber
Men denne kommandoen vil fjerne beskyttelsen fra alle filene.
Utdataene ovenfor indikerer at den eksisterende teksten er overskrevet. La oss nå bruke >> operatør:
$ echo Legger til tekst i den eksisterende tekstfilen >> testfile.txt
kastet ut er ikke alltid ideell å bruke siden du ikke kan formatere tekst ved å bruke den, derfor bruk printf i stedet for ekko for å formatere teksten som vist i følgende kommando:
$ printf Velkommen n Dette er en ny tekstfil. > newtestfile.txt
La oss forstå konseptet med et bash script -eksempel. Åpne Vim ved å skrive vim i terminalen. Hvis du ikke har Vim -editor på enheten, må du installere den ved hjelp av:
$ sudo apt install vimSkriv inn skriptet:
#! /bin/bashecho Skriv inn navnet ditt
lese navn
ekko $ name> data_dir.txt
echo Skriv inn alderen din
les alder
ekko $ age >> data_dir.txt
katt data_dir.txt
De katt kommandoen brukes til å lage og redigere filene. Lagre skriptet ovenfor i Vim ved å bytte modus etter å ha trykket på Esc tast og skriv deretter inn : i myscript.sh . Åpne terminalen og kjør koden:
Hvordan skrive en fil ved hjelp av Heredoc
Hvis du vil skrive flere linjer, er den enkleste metoden å bruke Heredoc. Her er dokumentet, også kjent som Heredoc, en flerbruks kodeblokk. Syntaksen til Heredoc er:
Kommando<<[-] Delimiter.
tekst/kommandoer
.
Avgrensning
Enhver streng kan brukes i stedet for Delimiter, og - kan også brukes til å fjerne eventuelle tabulatorrom i filen. La oss forstå det ved å bruke et enkelt eksempel:
#! /bin/bashkatt<< TEXTFILE
Dette er en tekstfil.
Denne filen er opprettet ved hjelp av heredoc.
TEKSTFIL
Ovennevnte script cat -kommando oppretter en tekstfil med navnet TEXTFILE, og skriver tekst inn i filen som nettopp er opprettet. Lagre filen med navnet på myscript.sh . Start terminalen og kjør skriptet.
Hvordan skrive en fil ved hjelp av Tee -kommandoen
En annen metode for å skrive en fil er å bruke Tee -kommandoen. Som navn indikerer denne kommandoen tar input og skriver til en fil og viser output samtidig. Som standard vil Tee -kommandoen overskrive eksisterende data.
$ echo Dette er litt tekst | tee tekstfil.txt
For å legge til bruk –a:
$ echo Dette er en annen tekst | tee –en tekstfil.txt
For å skrive flere linjer, bruk:
$ echo Legge til tekst i flere filer | tee tekstfil1.txt tekstfil2.txt tekstfil3.txt
Kommandoen ovenfor vil opprette tre filer hvis de ikke eksisterer og skrive tekst til hver av dem.
Konklusjon
Denne guiden fokuserer på flere tilnærminger for å skrive til en fil i bash med eksempler. I bash -skripting er det flere måter å skrive en fil på, men den enkleste er å bruke omdirigeringsoperatorer>, >>. For å skrive flere linjer, kan heredoc brukes, og hvis du vil skrive de samme dataene til flere linjer, er tee -kommandoen ganske praktisk.