Linux

Bash skriv til fil

Bash skriv til fil

En av de vanligste oppgavene når du skriver Bash-skript eller jobber med Linux-kommandolinjen, er å lese og skrive filer.

Denne artikkelen forklarer hvordan du skriver tekst til en fil i Bash, ved hjelp av viderekoblingsoperatorene og tee kommando.

Skrive til en fil ved hjelp av omdirigeringsoperatører #

I Bash lar omdirigering av utdata deg fange utdata fra en kommando og skrive den til en fil.

Det generelle formatet for omdirigering og skriving av utdata til en fil er som følger:

output> filnavn output >> filnavn 

Du må ha skrivetillatelse til filen. Ellers vil du motta en tillatelsesfeil.

Her er et enkelt eksempel som viser hvordan omdirigere utdata fra ekko kommando til en fil:

ekko "dette er en linje"> fil.tekst

For å forhindre overskriving av eksisterende filer, aktiver "alternativet" noclobber med sett innebygd:

sett -o noclobberekko "dette er en linje"> fil.tekst
bash: fil.txt: kan ikke overskrive eksisterende fil 

De > | operatøren lar deg overstyre alternativet Bash “noclobber”:

sett -o noclobberekko "dette er en linje"> | fil.tekst

De >> operatøren legger utgangen til slutten av filen, i stedet for å overskrive filen:

ekko "dette er en linje" >> fil.tekst

Bruke printf kommando for å lage en kompleks utgang:

printf "Hei, jeg er% s.\ n "$ USER> fil.tekst

Hvis du vil skrive flere linjer til en fil, bruker du omdirigering her-dokumentet (Heredoc).

For eksempel kan du overføre innholdet til katt kommandoen og skriv den til en fil:

katt << EOF > fil.txt Den nåværende arbeidskatalogen er: $ PWD Du er logget på som $ (whoami) EOF 

For å legge til linjene, endre > med >> før filnavnet:

katt << EOF >> fil.txt Den nåværende arbeidskatalogen er: $ PWD Du er logget på som $ (whoami) EOF 

Du kan skrive utdataene fra en hvilken som helst kommando til en fil:

dato + "År:% Y, Måned:% m, Dag:% d"> fil.tekst

Resultatet av Dato kommandoen vil bli skrevet til filen.

Skrive til en fil ved hjelp av tee Kommando #

De tee kommandoen leser fra standardinngangen og skriver til både standardutdata og en eller flere filer samtidig.

ekko "dette er en linje" | tee-fil.tekst

De tee kommandos standardoppførsel er å overskrive den angitte filen, den samme som > operatør. For å legge til utdataene i filen, påkaller du kommandoen med -en (--legge til) alternativ:

ekko "dette er en linje" | tee-en fil.tekst

Hvis du ikke vil ha tee for å skrive til standardutgangen, kan du omdirigere den til / dev / null:

ekko "dette er en linje" | tee-fil.txt> / dev / null

For å skrive teksten til mer enn én fil, spesifiser du filene som argumenter for tee kommando:

ekko "dette er en linje" | tee-fil_1.txt-fil_2.txt fil_3.tekst

En annen fordel med tee kommandoen er at du kan bruke den sammen med sudo og skriv til filer som eies av andre brukere. Hvis du vil legge til tekst i en fil som du ikke har skrivetillatelser til, må du legge den til sudo før tee:

ekko "dette er en linje" | sudo tee-fil.tekst

De ekko kommandoutgang sendes som inngang til tee, som hever sudo-tillatelsene og skriver teksten til filen.

Konklusjon #

For å skrive tekst til en fil i Linux, bruk > og >> viderekoblingsoperatører eller tee kommando.

Hvis du har spørsmål eller tilbakemeldinger, er du velkommen til å legge igjen en kommentar.

Hvordan utvikle et spill på Linux
For et tiår siden ville ikke mange Linux-brukere forutsi at deres favorittoperativsystem en dag ville være en populær spillplattform for kommersielle ...
Åpne kildeporter for kommersielle spillmotorer
Gratis, åpen kildekode og plattformspillmotorrekreasjoner kan brukes til å spille gamle så vel som noen av de ganske nylige spilletitlene. Denne artik...
Beste kommandolinjespill for Linux
Kommandolinjen er ikke bare din største allierte når du bruker Linux, den kan også være kilden til underholdning fordi du kan bruke den til å spille m...