GNU/Linux >> Znalost Linux >  >> Linux

Bash:Zápis do souboru

Jedním z nejběžnějších úkolů při psaní skriptů Bash nebo práci na příkazovém řádku Linuxu je čtení a zápis souborů.

Tento článek vysvětluje, jak zapsat text do souboru v Bash pomocí operátorů přesměrování a tee příkaz.

Zápis do souboru pomocí operátorů přesměrování #

V Bash vám přesměrování výstupu umožňuje zachytit výstup z příkazu a zapsat jej do souboru.

Obecný formát pro přesměrování a zápis výstupu do souboru je následující:

output > filename 
output >> filename 
  • > operátor přesměrování zapíše výstup do daného souboru. Pokud soubor existuje, je zkrácen na nulovou délku. V opačném případě je soubor vytvořen. Při používání tohoto operátoru buďte zvlášť opatrní, protože můžete přepsat důležitý soubor.
  • >> Operátor přesměrování připojí výstup k danému souboru. Soubor je vytvořen, pokud neexistuje.

Musíte mít oprávnění k zápisu do souboru. V opačném případě se zobrazí chyba oprávnění odepřeno.

Zde je jednoduchý příklad ukazující, jak přesměrovat výstup echo příkaz do souboru:

echo "this is a line" > file.txt

Chcete-li zabránit přepsání existujících souborů, povolte volbu „noclobber“ pomocí set vestavěný:

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

>| operátor vám umožňuje přepsat volbu Bash „noclobber“:

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

>> operátor připojí výstup na konec souboru, místo aby soubor přepsal:

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

Použijte printf příkaz k vytvoření komplexního výstupu:

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

Pokud chcete do souboru zapsat více řádků, použijte přesměrování Here document(Heredoc).

Obsah můžete například předat cat a zapište jej do souboru:

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

Chcete-li přidat řádky, změňte > pomocí >> před názvem souboru:

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

Výstup libovolného příkazu můžete zapsat do souboru:

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

Výstup date příkaz bude zapsán do souboru.

Zápis do souboru pomocí tee Příkaz #

tee příkaz čte ze standardního vstupu a zapisuje jak na standardní výstup, tak na jeden nebo více souborů současně.

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

tee výchozím chováním příkazu je přepsání zadaného souboru, stejně jako > operátor. Chcete-li připojit výstup k souboru, vyvolejte příkaz s -a (--append ) možnost:

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

Pokud nechcete tee pro zápis na standardní výstup jej můžete přesměrovat na /dev/null :

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

Chcete-li zapsat text do více než jednoho souboru, zadejte soubory jako argumenty pro tee příkaz:

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

Další výhoda tee příkaz je, že jej můžete použít ve spojení s sudo a zapisovat do souborů vlastněných jinými uživateli. Chcete-li přidat text k souboru, do kterého nemáte oprávnění k zápisu, přidejte před sudo před tee :

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

echo výstup příkazu je předán jako vstup do tee , což zvýší oprávnění sudo a zapíše text do souboru.

Závěr č.

V Linuxu k zápisu textu do souboru použijte > a >> operátory přesměrování nebo tee příkaz.


Linux
  1. Jak napsat smyčku v Bash

  2. Přesměrujte veškerý výstup do souboru v Bash

  3. Jak zapsat celé číslo do binárního souboru pomocí Bash?

  1. Může být Bash skript připojen k souboru?

  2. The Bash ‘?

  3. Provádění operací atomického zápisu do souboru v bash

  1. Provádění operací atomového zápisu v souboru v Bash?

  2. Zapsat do souboru .txt?

  3. Přesměrovat veškerý výstup do souboru pomocí Bash na Linuxu?