Една от най-често срещаните задачи при писане на Bash скриптове или работа по командния ред на Linux е четенето и писането на файлове.
Тази статия обяснява как да напишете текст във файл в Bash, като използвате операторите за пренасочване и тройник
команда.
Записване във файл с помощта на оператори за пренасочване #
В Bash пренасочването на изхода ви позволява да заснемете изхода от команда и да го запишете във файл.
Общият формат за пренасочване и запис на изходни данни във файл е както следва:
изход> име на файл изход >> име на файл
- The
>
оператор за пренасочване записва изхода в даден файл. Ако файлът съществува, той е съкратен до нулева дължина. В противен случай файлът се създава. Бъдете особено внимателни, когато използвате този оператор, тъй като можете да презапишете важен файл. - The
>>
оператор за пренасочване добавя изхода към даден файл. Файлът се създава, ако не съществува.
Трябва да имате разрешения за запис във файла. В противен случай ще получите грешка при отказано разрешение.
Ето един прост пример, показващ как пренасочването на изхода на ехо
команда към файл:
echo "това е ред"> файл.текст
За да предотвратите презаписване на съществуващи файлове, активирайте опцията “noclobber” с комплект
вграден:
set -o noclobber
echo "това е ред"> файл.текст
bash: файл.txt: не може да презапише съществуващ файл
The > |
операторът ви позволява да замените опцията Bash „noclobber“:
set -o noclobber
echo "това е ред"> | файл.текст
The >>
оператор добавя изхода към края на файла, вместо да презаписва файла:
echo "това е ред" >> файл.текст
Използвай printf
команда за създаване на сложен изход:
printf "Здравейте, аз съм% s.\ n "$ USER> файл.текст
Ако искате да напишете няколко реда във файл, използвайте пренасочването на документа Here (Heredoc).
Например можете да предадете съдържанието на котка
команда и я запишете във файл:
котка << EOF > файл.txt Текущата работна директория е: $ PWD Влезли сте като $ (whoami) EOF
За да добавите редовете, променете >
с >>
преди името на файла:
котка << EOF >> файл.txt Текущата работна директория е: $ PWD Влезли сте като $ (whoami) EOF
Можете да запишете изхода на всяка команда във файл:
дата + "Година:% Y, Месец:% m, Ден:% d"> файл.текст
Резултатът от дата
команда ще бъде записана във файла.
Записване във файл с помощта на тройник
Команда #
The тройник
команда чете от стандартния вход и записва едновременно в стандартен изход и един или повече файлове.
echo "това е линия" | тройник файл.текст
The тройник
поведението по подразбиране на командата е да презапише посочения файл, същото като >
оператор. За да добавите изхода към файла, извикайте командата с -а
(--добави
) опция:
echo "това е линия" | тройник-файл.текст
Ако не искате тройник
за да пишете на стандартния изход, можете да го пренасочите към / dev / null
:
echo "това е линия" | тройник файл.txt> / dev / null
За да напишете текста в повече от един файл, посочете файловете като аргументи на тройник
команда:
echo "това е линия" | tee файл_1.txt файл_2.txt файл_3.текст
Друго предимство на тройник
команда е, че можете да го използвате заедно с Судо
и пишете във файлове, притежавани от други потребители. За да добавите текст към файл, за който нямате разрешения за запис, добавете Судо
преди тройник
:
echo "това е линия" | sudo tee файл.текст
The ехо
командният изход се предава като вход към тройник
, което издига разрешенията за sudo и записва текста във файла.
Заключение №
В Linux, за да напишете текст във файл, използвайте >
и >>
оператори за пренасочване или тройник
команда.
Ако имате въпроси или отзиви, не се колебайте да оставите коментар.