Коли ми виконуємо будь-яку команду в оболонці 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
Вихід
Як показано тут, вихід команди «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
#!/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
Вихід
Тут результат другої команди додається в кінець файлу.
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
Вихід
Це замінить вміст файлу, як і оператор >, але також виведе результат на екран.
Якщо ми хочемо записати вивід у файл, не видаляючи вміст файлу за допомогою команди 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
Вихід
Це не лише додасть результат у кінець файлу, але й надрукує результат на екрані.