logo

Bash Scrie într-un fișier

Când rulăm orice comandă într-un shell bash, în general, imprimă rezultatul acelei comenzi pe terminal, astfel încât să o putem citi imediat. Dar bash oferă și o opțiune de „redirecționare” a ieșirii oricărei comenzi bash către un fișier jurnal. Poate salva rezultatul într-un fișier text, astfel încât să îl putem revizui mai târziu ori de câte ori este nevoie.

Metoda 1: Scrieți rezultatul numai într-un fișier

Pentru a scrie rezultatul comenzilor Bash într-un fișier, putem folosi semnul parantezei în unghi drept (>) sau semnul dublu în unghi drept (>>):

Semn de paranteză în unghi drept (>)

Este folosit pentru a scrie rezultatul comenzii bash pe un fișier de disc. Dacă nu există niciun fișier cu numele specificat, atunci se creează un fișier nou cu același nume. Dacă fișierul este acolo cu numele specificat, atunci conținutul fișierului va fi suprascris.

Semn dublu în unghi drept (>>)

Este folosit pentru a scrie rezultatul comenzilor bash într-un fișier, adăugând rezultatul la conținutul existent al fișierului. Dacă fișierul nu este prezent, se creează unul nou cu numele specificat.

Din punct de vedere tehnic, ambii acești operatori redirecționează „stdout (ieșirea standard)” către un fișier.

Într-un mod simplu, atunci când scriem fișierul pentru prima dată și nu dorim ca datele anterioare să fie prezente în fișier, ar trebui să folosim semnul parantezei cu unghi drept (>). Acesta va suprascrie conținutul dacă este deja prezent în fișier. Și în scriptul suplimentar, putem folosi semnul dublu în unghi drept (>>) pentru a atașa datele la un fișier.

Exemplu

Comanda „ls” este folosită pentru a tipări toate fișierele și folderele prezente în directorul curent. Dar când rulăm comanda „ls” cu un semn de paranteză în unghi drept (>), aceasta nu va tipări lista de fișiere și foldere pe ecran. Acesta va salva rezultatul în fișierul pe care îl specificăm împreună cu acesta, adică, așa cum se arată mai jos:

Bash Script

 #!/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 

Ieșire

Fișier de scriere Bash

După cum se arată aici, rezultatul comenzii „ls” este redirecționat într-un fișier. Pentru a imprima conținutul unui fișier pe terminal, putem folosi comanda „cat” în următoarea formă:

Bash Script

 #!/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 

Ieșire

Fișier de scriere Bash

Dacă dorim să redirecționăm ieșirea mai multor comenzi către un singur fișier fără a șterge datele disponibile, atunci putem folosi operatorul >>. Să presupunem că vrem să atașăm informațiile de sistem la fișierul specificat, putem face asta în următorul mod:

Bash Script

 #!/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 

Ieșire

Fișier de scriere Bash

Aici, rezultatul celei de-a doua comenzi este atașat la sfârșitul fișierului.

powershell mai mic sau egal cu

Putem repeta acest proces de mai multe ori pentru a continua să atașăm rezultatul la sfârșitul fișierului.

Metoda 2: Imprimați normal rezultatul și scrieți-l într-un fișier

Este posibil ca unora să nu le placă scrierea ieșirii într-un fișier folosind operatorii > sau >>, deoarece nu va exista nicio ieșire a comenzii în terminal. De aceea este folosită comanda „tee”. Comanda „tee” este folosită pentru a imprima pe ecran intrarea pe care o primește. Poate salva ieșirea într-un fișier în același timp.

Bash Script

 #!/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 

Ieșire

Fișier de scriere Bash

Aceasta va suprascrie conținutul fișierului, la fel ca operatorul >, dar va imprima și rezultatul pe ecran.

Dacă dorim să scriem rezultatul într-un fișier fără a elimina conținutul fișierului folosind comanda tee, putem folosi următorul formular care va tipări și rezultatul pe terminal:

Bash Script

 #!/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 

Ieșire

Fișier de scriere Bash

Acest lucru nu numai că va adăuga rezultatul la sfârșitul fișierului, ci și va imprima rezultatul pe ecran.