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.txtNebo 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 vimZadejte skript:
#! /bin/bashecho 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/bashkoč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ý.