Det finns flera sätt att läsa och skriva en fil i bash. Det enklaste sättet är att använda operatorer> och >>.
- > operatören kommer att skriva över befintlig data
- >> operatören kommer att lägga till data
Det allmänna formatet för att använda omdirigeringsoperatorer är:
Data> Filnamn
Data >> Filnamn
Låt oss förstå skrivningen till en filprocedur med ett exempel:
Hur man skriver en fil med omdirigeringsoperatorer
Som diskuterats ovan använder den enkla och okomplicerade metoden att skriva till en fil omdirigeringsoperatorer. Om du till exempel vill ändra texten i en redan befintlig fil, skapa först en textfil med namnet testfil.txt och skriv vad som helst i den:
Spara textfilen.
Skriv kommandot nedan i terminalen:
$ echo Skriv över den befintliga texten i filen> testfile.txt
Över vridning kan vara riskabelt; därför är det bra att aktivera noclobber. Inställning av noclobber skulle blockera eventuell överskrivning till alla spännande filer.
$ set –o noclobber$ echo Skriv över den befintliga texten i filen> testfile.txt
Men om du vill kringgå noclobber använder du > | operatör istället för > :
$ echo Skriv över den befintliga texten i filen> | testfil.txtEller så kan du helt enkelt inaktivera noclobber:
$ set + eller noclobber
Men det här kommandot tar bort skyddet från alla filer.
Ovanstående utmatning indikerar att den befintliga texten har skrivits över. Nu, låt oss använda >> operatör:
$ echo Lägga till text i den befintliga textfilen >> testfile.txt
kastade ut är inte alltid idealisk att använda eftersom du inte kan formatera text med den, använd därför printf i stället för eko för att formatera texten som visas i följande kommando:
$ printf Välkommen n Detta är en ny textfil. > newtestfile.txt
Låt oss förstå konceptet med ett bash script -exempel. Öppna Vim genom att skriva vim i terminalen. Om du inte har Vim -editor på din enhet installerar du den med:
$ sudo apt installera vimSkriv in skriptet:
#! /bin/bashecho Ange ditt namn
läs namn
echo $ name> data_dir.txt
echo Ange din ålder
läs ålder
echo $ age >> data_dir.txt
katt data_dir.txt
De katt kommandot används för att skapa och redigera filerna. Spara ovanstående skript i Vim genom att växla läge efter att du tryckt på Esc nyckel och skriv sedan : i myscript.sh . Öppna terminalen och kör koden:
Hur man skriver en fil med Heredoc
Om du vill skriva flera rader är det enklast att använda Heredoc. Här är dokument, även känt som Heredoc, ett flerfunktionellt kodblock. Syntaxen för Heredoc är:
Kommando<<[-] Delimiter.
text/kommandon
.
Avgränsare
Vilken sträng som helst kan användas i stället för avgränsare, och - kan också användas för att ta bort alla flikutrymmen i filen. Låt oss förstå det med ett enkelt exempel:
#! /bin/bashkatt<< TEXTFILE
Detta är en textfil.
Den här filen skapas med heredoc.
TEXTFIL
Ovanstående script cat -kommando skapar en textfil med namnet TEXTFILE och skriver text i filen som just skapats. Spara nu filen med namnet myscript.sh . Starta terminalen och kör skriptet.
Hur man skriver en fil med Tee -kommandot
En annan metod för att skriva en fil är att använda kommandot Tee. Som namn anger detta kommando tar inmatning och skriver till en fil och visar utmatning samtidigt. Som standard kommer Tee -kommandot att skriva över befintliga data.
$ echo Detta är lite text | tee textfile.txt
För att lägga till användning –a:
$ echo Detta är en annan text | tee –en textfil.txt
För att skriva flera rader, använd:
$ echo Lägga till text i flera filer | tee textfile1.txt textfile2.txt textfile3.txt
Kommandot ovan skapar tre filer om de inte finns och skriver text till var och en av dem.
Slutsats
Den här guiden fokuserar på flera metoder för att skriva till en fil i bash med exempel. I bash scripting finns det flera sätt att skriva en fil, men det enklaste är att använda omdirigeringsoperatorer>, >>. För att skriva flera rader kan heredoc användas, och om du vill skriva samma data till flera rader är tee -kommandot ganska praktiskt.