En af de mest almindelige opgaver, når du skriver Bash-scripts eller arbejder på Linux-kommandolinjen, er læsning og skrivning af filer.
Denne artikel forklarer, hvordan man skriver tekst til en fil i Bash ved hjælp af omdirigeringsoperatorerne og tee
kommando.
Skrivning til en fil ved hjælp af omdirigeringsoperatører #
I Bash giver omdirigering af output dig mulighed for at fange output fra en kommando og skrive det til en fil.
Det generelle format til omdirigering og skrivning af output til en fil er som følger:
output> filnavn output >> filnavn
- Det
>
omdirigeringsoperatør skriver output til en given fil. Hvis filen findes, afkortes den til nul længde. Ellers oprettes filen. Vær ekstra forsigtig, når du bruger denne operatør, da du måske overskriver en vigtig fil. - Det
>>
omdirigeringsoperatør føjer output til en given fil. Filen oprettes, hvis den ikke findes.
Du skal have skrivetilladelser til filen. Ellers modtager du en tilladelse nægtet fejl.
Her er et simpelt eksempel, der viser, hvordan omdirigere output fra ekko
kommando til en fil:
ekko "dette er en linje"> fil.txt
For at forhindre overskrivning af eksisterende filer skal du aktivere indstillingen “noclobber” med sæt
indbygget:
sæt -o noclobber
ekko "dette er en linje"> fil.txt
bash: fil.txt: kan ikke overskrive eksisterende fil
Det > |
giver dig mulighed for at tilsidesætte Bash "noclobber" -indstillingen:
sæt -o noclobber
ekko "dette er en linje"> | fil.txt
Det >>
operatør tilføjer output til slutningen af filen i stedet for at overskrive filen:
ekko "dette er en linje" >> fil.txt
Brug printf
kommando til at oprette en kompleks output:
printf "Hej, jeg er% s.\ n "$ USER> fil.txt
Hvis du vil skrive flere linjer til en fil, skal du bruge omdirigering her-dokumentet (Heredoc).
For eksempel kan du videregive indholdet til kat
kommando og skriv det til en fil:
kat << EOF > fil.txt Den aktuelle arbejdsmappe er: $ PWD Du er logget ind som $ (whoami) EOF
For at tilføje linjerne skal du ændre >
med >>
foran filnavnet:
kat << EOF >> fil.txt Den aktuelle arbejdsmappe er: $ PWD Du er logget ind som $ (whoami) EOF
Du kan skrive output fra enhver kommando til en fil:
dato + "År:% Y, måned:% m, dag:% d"> fil.txt
Resultatet af dato
kommando vil blive skrevet til filen.
Skrivning til en fil ved hjælp af tee
Kommando #
Det tee
kommandoen læser fra standardindgangen og skriver til både standardoutput og en eller flere filer samtidigt.
ekko "dette er en linje" | tee-fil.txt
Det tee
kommandos standardadfærd er at overskrive den angivne fil, den samme som >
operatør. For at tilføje output til filen skal du påkalde kommandoen med --en
(--Tilføj
) mulighed:
ekko "dette er en linje" | tee-en fil.txt
Hvis du ikke vil have tee
for at skrive til standardoutputtet kan du omdirigere det til / dev / null
:
ekko "dette er en linje" | tee-fil.txt> / dev / null
For at skrive teksten til mere end en fil skal du angive filerne som argumenter for tee
kommando:
ekko "dette er en linje" | tee-fil_1.txt-fil_2.txt-fil_3.txt
En anden fordel ved tee
kommandoen er, at du kan bruge den sammen med sudo
og skriv til filer, der ejes af andre brugere. For at tilføje tekst til en fil, som du ikke har skrivetilladelser til, skal du gå ind sudo
Før tee
:
ekko "dette er en linje" | sudo tee-fil.txt
Det ekko
kommandoutput sendes som input til tee
, som hæver sudo-tilladelserne og skriver teksten til filen.
Konklusion #
Brug Linux til at skrive tekst til en fil i Linux >
og >>
omdirigeringsoperatører eller tee
kommando.
Hvis du har spørgsmål eller feedback, er du velkommen til at efterlade en kommentar.