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
- De
>
viderekoblingsoperatør skriver utdataene til en gitt fil. Hvis filen eksisterer, blir den avkortet til null lengde. Ellers opprettes filen. Vær ekstra forsiktig når du bruker denne operatøren, da du kan overskrive en viktig fil. - De
>>
viderekoblingsoperatør legger utdataene til en gitt fil. Filen opprettes hvis den ikke eksisterer.
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 noclobber
ekko "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 noclobber
ekko "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.