logo

Bash Escriure a un fitxer

Quan executem qualsevol ordre en un intèrpret d'ordres bash, generalment imprimeix la sortida d'aquesta ordre al terminal perquè puguem llegir-la immediatament. Però bash també ofereix una opció per 'redirigir' la sortida de qualsevol comanda bash a un fitxer de registre. Pot desar la sortida en un fitxer de text perquè puguem revisar-la més tard sempre que sigui necessari.

Mètode 1: escriviu la sortida només en un fitxer

Per escriure la sortida de les ordres Bash en un fitxer, podem utilitzar el signe de claudàtor d'angle recte (>) o el signe d'angle recte doble (>>):

Signe de suport d'angle recte (>)

S'utilitza per escriure la sortida de l'ordre bash en un fitxer de disc. Si no hi ha cap fitxer amb el nom especificat, es crea un fitxer nou amb el mateix nom. Si el fitxer hi és amb el nom especificat, el contingut del fitxer se sobreescriurà.

Signe de doble angle recte (>>)

S'utilitza per escriure la sortida de les ordres bash a un fitxer, afegint la sortida al contingut existent del fitxer. Si el fitxer no està present, se'n crea un de nou amb el nom especificat.

Tècnicament, ambdós operadors redirigeixen 'stdout (la sortida estàndard)' a un fitxer.

D'una manera senzilla, quan estem escrivint el fitxer per primera vegada i no volem que les dades anteriors estiguin presents al fitxer, hauríem d'utilitzar el signe de claudàtor en angle recte (>). Sobreescriurà el contingut si ja està present al fitxer. I en l'script posterior, podem utilitzar el signe doble d'angle recte (>>) per afegir les dades a un fitxer.

Exemple

L'ordre 'ls' s'utilitza per imprimir tots els fitxers i carpetes presents al directori actual. Però quan executem l'ordre 'ls' amb un signe de claudàtor en angle recte (>), no imprimirà la llista de fitxers i carpetes a la pantalla. Desarà la sortida al fitxer que especifiquem amb ell, és a dir, com es mostra a continuació:

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 

Sortida

Fitxer d'escriptura Bash

Com es mostra aquí, la sortida de l'ordre 'ls' es redirigeix ​​a un fitxer. Per imprimir el contingut d'un fitxer al terminal, podem utilitzar l'ordre 'cat' de la forma següent:

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 

Sortida

Fitxer d'escriptura Bash

Si volem redirigir la sortida de diverses ordres a un sol fitxer sense eliminar les dades disponibles, podem utilitzar l'operador >>. Suposem que volem afegir la informació del sistema al fitxer especificat, ho podem fer de la següent manera:

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 

Sortida

Fitxer d'escriptura Bash

Aquí, el resultat de la segona ordre s'afegeix al final del fitxer.

bloquejar anuncis a youtube Android

Podem repetir aquest procés diverses vegades per seguir afegint la sortida al final del fitxer.

Mètode 2: imprimiu la sortida normalment i escriviu-la en un fitxer

Algunes persones poden no agradar escriure la sortida en un fitxer amb els operadors > o >>, ja que no hi haurà sortida de l'ordre al terminal. Per això s'utilitza l'ordre 'tee'. L'ordre 'tee' s'utilitza per imprimir l'entrada que rep a la pantalla. Pot desar la sortida en un fitxer alhora.

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 

Sortida

Fitxer d'escriptura Bash

Això anul·larà el contingut del fitxer, igual que l'operador >, però també imprimirà la sortida a la pantalla.

Si volem escriure la sortida en un fitxer sense eliminar el contingut del fitxer mitjançant l'ordre tee, podem utilitzar el següent formulari que també imprimirà la sortida al 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 

Sortida

Fitxer d'escriptura Bash

Això no només afegirà la sortida al final del fitxer, sinó que també imprimirà la sortida a la pantalla.