Viens no visbiežāk sastopamajiem uzdevumiem, rakstot Bash skriptus vai strādājot pie Linux komandrindas, ir failu lasīšana un rakstīšana.
Šajā rakstā ir paskaidrots, kā rakstīt tekstu failā Bash, izmantojot novirzīšanas operatorus un tee
komandu.
Rakstīšana failā, izmantojot novirzīšanas operatorus #
Programmā Bash izvades novirzīšana ļauj tvert komandas izvadi un ierakstīt failā.
Izvades novirzīšanas un rakstīšanas uz failu vispārējais formāts ir šāds:
izvade> faila izeja >> faila nosaukums
- The
>
novirzīšanas operators izraksta izvadi uz noteiktu failu. Ja fails pastāv, tas tiek saīsināts līdz nullei. Pretējā gadījumā fails tiek izveidots. Esiet īpaši piesardzīgs, lietojot šo operatoru, jo jūs varat pārrakstīt svarīgu failu. - The
>>
novirzīšanas operators pievieno izvadi dotajam failam. Fails tiek izveidots, ja tā nepastāv.
Jums jābūt faila rakstīšanas atļaujām. Pretējā gadījumā jūs saņemsit kļūdu par atteiktu atļauju.
Šeit ir vienkāršs piemērs, kas parāda, kā novirzīt atbalss
komanda failam:
echo "this is a line"> fails.txt
Lai nepieļautu esošo failu pārrakstīšanu, iespējojiet opciju “noclobber” ar komplekts
iebūvēts:
set -o noklobers
echo "this is a line"> fails.txt
bash: fails.txt: nevar pārrakstīt esošo failu
The > |
operators ļauj ignorēt opciju Bash “noclobber”:
set -o noklobers
atbalss "šī ir līnija"> | failu.txt
The >>
operators pievieno izvadi faila beigām, nevis pārraksta failu:
atbalss "šī ir līnija" >> fails.txt
Izmantojiet printf
komanda, lai izveidotu sarežģītu izvadi:
printf "Sveiki, es esmu% s.\ n "$ USER> fails.txt
Ja vēlaties failā ierakstīt vairākas rindas, izmantojiet novirzīšanu Šeit dokuments (Heredoc).
Piemēram, jūs varat nodot saturu kaķis
komandu un ierakstiet to failā:
kaķis << EOF > failu.txt Pašreizējais darba direktorijs ir: $ PWD Jūs esat pieteicies kā $ (whoami) EOF
Lai pievienotu rindas, mainiet >
ar >>
pirms faila nosaukuma:
kaķis << EOF >> fails.txt Pašreizējais darba direktorijs ir: $ PWD Jūs esat pieteicies kā $ (whoami) EOF
Jebkuras komandas izvadi varat ierakstīt failā:
datums + "Gads:% Y, Mēnesis:% m, Diena:% d"> fails.txt
Izvade datums
komanda tiks ierakstīta failā.
Rakstīšana failā, izmantojot tee
Komanda #
The tee
komanda nolasa no standarta ievades un vienlaikus raksta gan standarta izvadē, gan vienā vai vairākos failos.
atbalss "šī ir līnija" | tee fails.txt
The tee
komandas noklusējuma rīcība ir norādītā faila pārrakstīšana, tāpat kā >
operators. Lai pievienotu izvadi failam, izsauciet komandu ar -a
(--pievienot
) variants:
atbalss "šī ir līnija" | tee - fails.txt
Ja jūs nevēlaties tee
lai rakstītu uz standarta izvadi, varat to novirzīt uz / dev / null
:
atbalss "šī ir līnija" | tee fails.txt> / dev / null
Lai tekstu ierakstītu vairāk nekā vienā failā, norādiet failus kā argumentus failam tee
komanda:
atbalss "šī ir līnija" | tee file_1.txt file_2.txt fails_3.txt
Vēl viena priekšrocība tee
komanda ir tā, ka jūs varat to izmantot kopā ar sudo
un rakstīt uz failiem, kas pieder citiem lietotājiem. Lai pievienotu tekstu failam, kuram jums nav rakstīšanas atļauju, veiciet iepriekšēju iestatījumu sudo
pirms tee
:
atbalss "šī ir līnija" | sudo tee fails.txt
The atbalss
komandas izeja tiek nodota kā ievade tee
, kas paaugstina sudo atļaujas un raksta tekstu failā.
Secinājums Nr
Linux, lai rakstītu tekstu failā, izmantojiet >
un >>
novirzīšanas operatori vai tee
komandu.
Ja jums ir kādi jautājumi vai atsauksmes, droši atstājiet komentāru.