Jak zapisovat do souboru v Bash

How Write File Bash

Jedním ze základních úkolů, které při práci se skriptováním bash provádíme, je čtení a zápis souborů. V této příručce se zaměříme na to, jak číst soubory v bash a jak je upravovat.

Existuje několik způsobů, jak číst a zapisovat soubor v bash. Nejjednodušší způsob je použití operátorů> a >>.



  • > operátor přepíše stávající data
  • >> operátor připojí data

Obecný formát používání operátorů přesměrování je:



Data> Název souboru
Data >> Název souboru

Pojďme pochopit postup zápisu do souboru na příkladu:



Jak zapsat soubor pomocí operátorů přesměrování

Jak bylo uvedeno výše, jednoduchý a přímý přístup k zápisu do souboru používá operátory přesměrování. Pokud například chcete změnit text již existujícího souboru, vytvořte nejprve textový soubor s názvem testfile.txt a napište do něj cokoli:

Uložte textový soubor.



Do terminálu zadejte níže uvedený příkaz:

$ echo Přepsání stávajícího textu v souboru> testfile.txt

Přetahování může být riskantní; proto je dobrou praxí povolit noclobber. Nastavení noclobberu zablokuje jakékoli přepisování na jakýkoli ukončující soubor.

$ set –o noclobber
$ echo Přepsání stávajícího textu v souboru> testfile.txt

Pokud však chcete obejít noclobber, použijte > | operátor místo > :

$ echo Přepsání stávajícího textu v souboru> | testfile.txt

Nebo můžete jednoduše vypnout noclobber:

$ set + nebo noclobber

Tento příkaz však odebere ochranu všem souborům.

Výše uvedený výstup naznačuje, že stávající text byl přepsán. Pojďme tedy použít >> operátor:

$ echo Připojování textu k existujícímu textovému souboru >> testfile.txt

vyhodil není vždy ideální k použití, protože nemůžete formátovat text pomocí něj, proto použijte printf místo echa k formátování textu, jak ukazuje následující příkaz:

$ printf Vítejte n Toto je nový textový soubor. > newtestfile.txt

Pojďme pochopit koncept pomocí příkladu bash skriptu. Otevřete Vim zadáním vim do terminálu. Pokud v zařízení nemáte editor Vim, nainstalujte jej pomocí:

$ sudo apt install vim

Zadejte skript:

#! /bin/bash
echo Zadejte své jméno
přečíst jméno
echo $ name> data_dir.txt
echo Zadejte svůj věk
číst věk
echo $ věk >> data_dir.txt
kočka data_dir.txt

The kočka příkaz slouží k vytváření a úpravám souborů. Uložte výše uvedený skript do Vim přepnutím režimu po stisknutí Esc klíč a poté zadejte : v myscript.sh . Otevřete terminál a spusťte kód:

Jak napsat soubor pomocí Heredoc

Pokud chcete psát více řádků, je nejjednodušší použít Heredoc. Zde je dokument, známý také jako Heredoc, víceúčelovým blokem kódu. Syntaxe Heredoc je:

Příkaz<<[-] Delimiter
.
text/příkazy
.

Oddělovač

Místo Oddělovače lze použít libovolný řetězec a - lze jej také použít k odebrání mezer na záložkách v souboru. Pojďme to pochopit na jednoduchém příkladu:

#! /bin/bash

kočka<< TEXTFILE
Toto je textový soubor.
Tento soubor je vytvořen pomocí heredoc.
TEXTOVÝ SOUBOR

Výše uvedený příkaz script cat vytvoří textový soubor s názvem TEXTFILE a zapíše text do právě vytvořeného souboru. Nyní uložte soubor pod názvem myscript.sh . Spusťte terminál a spusťte skript.

Jak napsat soubor pomocí příkazu Tee

Další metodou zápisu souboru je použití příkazu Tee. Jak název naznačuje, tento příkaz přebírá vstup a zapisuje do souboru a současně zobrazuje výstup. Ve výchozím nastavení příkaz Tee přepíše stávající data.

$ echo Toto je nějaký text | tričko textfile.txt

Chcete -li připojit použití –a:

$ echo Toto je další text | tričko - textový soubor.txt

Chcete -li napsat více řádků, použijte:

$ echo Přidání textu do více souborů | tričko textfile1.txt textfile2.txt textfile3.txt

Výše uvedený příkaz vytvoří tři soubory, pokud neexistují, a do každého z nich napíše text.

Závěr

Tato příručka se zaměřuje na více přístupů k zápisu do souboru v bash s příklady. V bash skriptování existuje několik způsobů, jak zapsat soubor, ale nejjednodušší je použití operátorů přesměrování>, >>. Pro zápis více řádků lze použít heredoc, a pokud chcete zapsat stejná data na více řádků, pak je příkaz tee docela šikovný.