Linux

Bash Skriv till fil

Bash Skriv till fil

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 

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 noclobbereko "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 noclobbereko "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.

HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...
Hur man använder AutoKey för att automatisera Linux-spel
AutoKey är ett verktyg för desktopautomatisering för Linux och X11, programmerat i Python 3, GTK och Qt. Med hjälp av dess skript och MACRO-funktional...
Hur man visar FPS-räknare i Linux-spel
Linux-spel fick ett stort tryck när Valve tillkännagav Linux-stöd för Steam-klient och deras spel 2012. Sedan dess har många AAA- och indiespel tagit ...