En av de vanligaste uppgifterna när du skriver Bash-skript eller arbetar på Linux-kommandoraden är att läsa och skriva filer.
Den här artikeln förklarar hur man skriver text till en fil i Bash med hjälp av omdirigeringsoperatorerna och tee
kommando.
Skriva till en fil med omdirigeringsoperatörer #
I Bash tillåter omdirigering av utdata dig att fånga utdata från ett kommando och skriva den till en fil.
Det allmänna formatet för omdirigering och skrivning av utdata till en fil är som följer:
output> filnamn output >> filnamn
- De
>
omdirigeringsoperatören skriver utdata till en viss fil. Om filen finns trunkeras den till noll längd. Annars skapas filen. Var extra försiktig när du använder den här operatören, eftersom du kan skriva över en viktig fil. - De
>>
omdirigeringsoperatören lägger till utdata i en viss fil. Filen skapas om den inte finns.
Du måste ha skrivbehörighet till filen. Annars får du ett tillstånd nekat fel.
Här är ett enkelt exempel som visar hur omdirigera utdata från eko
kommando till en fil:
eko "detta är en rad"> fil.Text
För att förhindra att befintliga filer skrivs över aktiverar du alternativet “noclobber” med uppsättning
inbyggt:
set -o noclobber
eko "detta är en rad"> fil.Text
bash: fil.txt: kan inte skriva över befintlig fil
De > |
med operatören kan du åsidosätta alternativet Bash "noclobber":
set -o noclobber
eko "detta är en rad"> | fil.Text
De >>
operatören lägger till utdata till slutet av filen snarare än att skriva över filen:
echo "detta är en rad" >> fil.Text
Använd tryckf
kommando för att skapa en komplex utgång:
printf "Hej, jag är% s.\ n "$ USER> fil.Text
Om du vill skriva flera rader till en fil, använd omdirigeringen här-dokumentet (Heredoc).
Till exempel kan du skicka innehållet till katt
kommandot och skriv det till en fil:
katt << EOF > fil.txt Den nuvarande arbetskatalogen är: $ PWD Du är inloggad som $ (whoami) EOF
För att lägga till raderna, ändra >
med >>
före filnamnet:
katt << EOF >> fil.txt Den nuvarande arbetskatalogen är: $ PWD Du är inloggad som $ (whoami) EOF
Du kan skriva utdata från valfritt kommando till en fil:
datum + "År:% Y, månad:% m, dag:% d"> fil.Text
Resultatet av datum
kommandot kommer att skrivas till filen.
Skriva till en fil med hjälp av tee
Kommando #
De tee
kommandot läser från standardinmatningen och skriver till både standardutgången och en eller flera filer samtidigt.
eko "detta är en rad" | tee-fil.Text
De tee
kommandots standardbeteende är att skriva över den angivna filen, samma som >
operatör. För att lägga till utdata till filen, anropa kommandot med -a
(--bifoga
) alternativ:
eko "detta är en rad" | tee-en fil.Text
Om du inte vill ha tee
för att skriva till standardutgången kan du omdirigera den till / dev / null
:
eko "detta är en rad" | tee-fil.txt> / dev / null
Om du vill skriva texten till mer än en fil anger du filerna som argument för tee
kommando:
eko "detta är en rad" | tee-fil_1.txt-fil_2.txt-fil_3.Text
En annan fördel med tee
kommandot är att du kan använda det tillsammans med sudo
och skriva till filer som ägs av andra användare. För att lägga till text till en fil som du inte har skrivbehörighet till, förbereda sudo
innan tee
:
eko "detta är en rad" | sudo tee-fil.Text
De eko
kommandoutgången skickas som ingång till tee
, vilket höjer sudo-behörigheterna och skriver texten till filen.
Slutsats #
Använd Linux för att skriva text till en fil i Linux >
och >>
omdirigeringsoperatörer eller tee
kommando.
Om du har några frågor eller feedback, lämna gärna en kommentar.