logo

Bash Запис у файл

Коли ми виконуємо будь-яку команду в оболонці bash, вона зазвичай друкує вихід цієї команди на термінал, щоб ми могли негайно його прочитати. Але 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

Як показано тут, вихід команди «ls» перенаправляється у файл. Щоб надрукувати вміст файлу на терміналі, ми можемо використати команду 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

Тут результат другої команди додається в кінець файлу.

k алгоритм кластеризації

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

Спосіб 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

Це не лише додасть результат у кінець файлу, але й надрукує результат на екрані.