GNU/Linux >> Linux Esercitazione >  >> Linux

Bash:Scrivi su file

Una delle attività più comuni quando si scrivono script Bash o si lavora sulla riga di comando di Linux è leggere e scrivere file.

Questo articolo spiega come scrivere del testo in un file in Bash, usando gli operatori di reindirizzamento e tee comando.

Scrivere su un file utilizzando gli operatori di reindirizzamento #

In Bash, il reindirizzamento dell'output consente di acquisire l'output da un comando e scriverlo in un file.

Il formato generale per reindirizzare e scrivere l'output in un file è il seguente:

output > filename 
output >> filename 
  • Il > l'operatore di reindirizzamento scrive l'output in un determinato file. Se il file esiste, viene troncato a lunghezza zero. In caso contrario, il file viene creato. Fai molta attenzione quando usi questo operatore poiché potresti sovrascrivere un file importante.
  • Il >> l'operatore di reindirizzamento aggiunge l'output a un determinato file. Il file viene creato se non esiste.

È necessario disporre dei permessi di scrittura sul file. In caso contrario, riceverai un errore di autorizzazione negata.

Ecco un semplice esempio che mostra come reindirizzare l'output di echo comando in un file:

echo "this is a line" > file.txt

Per evitare di sovrascrivere i file esistenti, abilita l'opzione "noclobber" con il set integrato:

set -o noclobberecho "this is a line" > file.txt
bash: file.txt: cannot overwrite existing file

Il >| operatore ti consente di ignorare l'opzione "noclobber" di Bash:

set -o noclobberecho "this is a line" >| file.txt

Il >> l'operatore aggiunge l'output alla fine del file, invece di sovrascrivere il file:

echo "this is a line" >> file.txt

Usa il printf comando per creare un output complesso:

printf "Hello, I'm %s.\n" $USER > file.txt

Se vuoi scrivere più righe in un file, usa il reindirizzamento Here document(Heredoc).

Ad esempio, puoi passare il contenuto al cat comando e scrivilo in un file:

cat << EOF > file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

Per aggiungere le righe, cambia > con >> prima del nome del file:

cat << EOF >> file.txt
The current working directory is: $PWD
You are logged in as $(whoami)
EOF

Puoi scrivere l'output di qualsiasi comando in un file:

date +"Year: %Y, Month: %m, Day: %d" > file.txt

L'output della date il comando verrà scritto nel file.

Scrivere su un file usando il tee Comando #

La tee il comando legge dallo standard input e scrive sia nello standard output che in uno o più file contemporaneamente.

echo "this is a line" | tee file.txt

La tee il comportamento predefinito del comando consiste nel sovrascrivere il file specificato, come il > operatore. Per aggiungere l'output al file, invoca il comando con -a (--append ) opzione:

echo "this is a line" | tee -a file.txt

Se non vuoi il tee per scrivere sullo standard output, puoi reindirizzarlo a /dev/null :

echo "this is a line" | tee file.txt >/dev/null

Per scrivere il testo su più di un file, specifica i file come argomenti per il tee comando:

echo "this is a line" | tee file_1.txt file_2.txt file_3.txt

Un altro vantaggio del tee comando è che puoi usarlo insieme a sudo e scrivere su file di proprietà di altri utenti. Per aggiungere del testo a un file per il quale non hai i permessi di scrittura, anteponi sudo prima di tee :

echo "this is a line" | sudo tee file.txt

L'echo l'output del comando viene passato come input al tee , che eleva le autorizzazioni sudo e scrive il testo nel file.

Conclusione #

In Linux, per scrivere del testo in un file, utilizzare > e >> operatori di reindirizzamento o il tee comando.


Linux
  1. Come scrivere un ciclo in Bash

  2. Il Bash '?

  3. Eseguire operazioni di scrittura atomica in un file in Bash?

  4. Scrivi tutto Tmux Scorri indietro su un file?

  5. Scrivere su file .txt?

Bash:aggiungi al file

Sostituzione di String in Bash

35 Esempi di script Bash

Scripting Bash:come scrivere dati su file di testo

Scripting Bash(III)

Tutorial Unix Sed:come scrivere su un file usando Sed