logo

Bash запис във файл

Когато изпълним която и да е команда в bash shell, тя обикновено отпечатва изхода от тази команда на терминала, така че да можем да я прочетем незабавно. Но bash също предоставя опция за 'пренасочване' на изхода на всяка команда bash към лог файл. Той може да запази резултата в текстов файл, така че да можем да го прегледаме по-късно, когато е необходимо.

Метод 1: Запишете изход само във файл

За да запишем изхода на Bash командите във файл, можем да използваме знак за права ъглова скоба (>) или двоен знак за прав ъгъл (>>):

Права ъглова скоба (>)

Използва се за запис на изхода на командата bash в дисков файл. Ако няма файл с посоченото име, тогава се създава нов файл със същото име. Ако файлът е там с посоченото име, съдържанието на файла ще бъде презаписано.

Знак за двоен прав ъгъл (>>)

Използва се за запис на изхода на bash командите във файл, добавяйки изхода към съществуващото съдържание на файла. Ако файлът не присъства, той създава нов с посоченото име.

Технически и двата оператора пренасочват 'stdout (стандартния изход)' към файл.

По прост начин, когато пишем файла за първи път и не искаме предишни данни да присъстват във файла, трябва да използваме знака с дясна ъглова скоба (>). Той ще презапише съдържанието, ако вече присъства във файла. И в следващия скрипт можем да използваме знак с двоен десен ъгъл (>>), за да добавим данните към файл.

Пример

Командата 'ls' се използва за отпечатване на всички файлове и папки в текущата директория. Но когато изпълним командата 'l' със знак в права ъглова скоба (>), тя няма да отпечата списъка с файлове и папки на екрана. Той ще запази изхода във файла, който сме посочили с него, т.е. както е показано по-долу:

Bash скрипт

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Checking the content of the file gedit output_file.txt 

Изход

Файл за запис на Bash

Както е показано тук, резултатът от командата 'l' се пренасочва към файл. За да отпечатаме съдържанието на файл на терминала, можем да използваме командата 'cat' в следната форма:

Bash скрипт

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Printing the content of the file cat $output 

Изход

Файл за запис на Bash

Ако искаме да пренасочим изхода на множество команди към един файл, без да изтриваме наличните данни, тогава можем да използваме оператора >>. Да предположим, че искаме да добавим системната информация към посочения файл, можем да направим това по следния начин:

Bash скрипт

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls > $output #Appending the system information uname -a >> $output #Checking the content of the file gedit output_file.txt 

Изход

Файл за запис на Bash

Тук резултатът от втората команда се добавя към края на файла.

употреби на операционна система

Можем да повторим този процес няколко пъти, за да продължим да добавяме изхода към края на файла.

Метод 2: Отпечатайте изхода нормално и го запишете във файл

Някои хора може да не харесат записването на изход във файл с помощта на > или >> оператори, тъй като няма да има изход от командата в терминала. Ето защо се използва командата 'tee'. Командата 'tee' се използва за отпечатване на входа, който получава на екрана. Той може да запише изхода във файл едновременно.

Bash скрипт

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt #Write data to a file ls | tee $output 

Изход

Файл за запис на Bash

Това ще замени съдържанието на файла, точно като оператора >, но също така ще отпечата изхода на екрана.

Ако искаме да запишем изхода във файл, без да премахваме съдържанието на файла с помощта на команда tee, можем да използваме следната форма, която също ще отпечата изхода на терминала:

Bash скрипт

 #!/bin/bash #Script to write the output into a file #Create output file, override if already present output=output_file.txt echo '<<>>' | tee -a $output #Write data to a file ls | tee $output echo | tee -a $output #Append System Information to the file echo '<<>>' | tee -a $output uname | tee -a $output 

Изход

Файл за запис на Bash

Това не само ще добави изхода към края на файла, но и ще отпечата изхода на екрана.