Jedním z nejběžnějších úkolů při psaní skriptů Bash nebo při práci na příkazovém řádku systému Linux je čtení a zápis souborů.
Tento článek vysvětluje, jak psát text do souboru v Bash pomocí operátorů přesměrování a tričko
příkaz.
Zápis do souboru pomocí operátorů přesměrování #
V Bash 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í:
výstup> název souboru výstup >> název souboru
- The
>
operátor přesměrování zapíše výstup do daného souboru. Pokud soubor existuje, je zkrácen na nulovou délku. Jinak je soubor vytvořen. Při používání tohoto operátoru buďte velmi opatrní, protože můžete přepsat důležitý soubor. - The
>>
operátor přesměrování připojí výstup k danému souboru. Soubor neexistuje, pokud neexistuje.
Musíte mít oprávnění k zápisu do souboru. Jinak se zobrazí chyba s odepřením oprávnění.
Zde je jednoduchý příklad, který ukazuje, jak přesměrovat výstup souboru echo
příkaz do souboru:
echo "toto je řádek"> soubor.txt
Chcete-li zabránit přepsání existujících souborů, povolte pomocí volby „noclobber“ soubor
vestavěný:
set -o noclobber
echo "toto je řádek"> soubor.txt
bash: soubor.txt: nelze přepsat existující soubor
The > |
operátor umožňuje přepsat volbu Bash „noclobber“:
set -o noclobber
echo "toto je řádek"> | soubor.txt
The >>
operátor připojí výstup na konec souboru, místo aby soubor přepsal:
echo "toto je řádek" >> soubor.txt
Použijte printf
příkaz pro vytvoření komplexního výstupu:
printf "Dobrý den, jsem% s.\ n "$ USER> soubor.txt
Chcete-li do souboru zapsat více řádků, použijte přesměrování dokumentu Here (Heredoc).
Můžete například předat obsah do kočka
příkaz a zapište jej do souboru:
kočka << EOF > soubor.txt Aktuální pracovní adresář je: $ PWD Jste přihlášeni jako $ (whoami) EOF
Chcete-li připojit řádky, změňte je >
s >>
před názvem souboru:
kočka << EOF >> soubor.txt Aktuální pracovní adresář je: $ PWD Jste přihlášeni jako $ (whoami) EOF
Výstup libovolného příkazu můžete zapsat do souboru:
datum + "rok:% Y, měsíc:% m, den:% d"> soubor.txt
Výstup z datum
příkaz bude zapsán do souboru.
Zápis do souboru pomocí tričko
Příkaz #
The tričko
příkaz čte ze standardního vstupu a zapisuje do standardního výstupu i do jednoho nebo více souborů současně.
echo "toto je řádek" | tee soubor.txt
The tričko
výchozí chování příkazu je přepsat zadaný soubor, stejně jako >
operátor. Chcete-li připojit výstup do souboru, vyvolajte příkaz pomocí -A
(--připojit
) možnost:
echo "toto je řádek" | tee -a soubor.txt
Pokud nechcete tričko
Chcete-li zapsat na standardní výstup, můžete jej přesměrovat na / dev / null
:
echo "toto je řádek" | tee soubor.txt> / dev / null
Chcete-li zapsat text do více než jednoho souboru, zadejte soubory jako argumenty pro tričko
příkaz:
echo "toto je řádek" | tee file_1.soubor txt_2.soubor txt_3.txt
Další výhodou tričko
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 do souboru, do kterého nemáte oprávnění k zápisu, předpřipravte ho sudo
před tričko
:
echo "toto je řádek" | sudo tee soubor.txt
The echo
výstup příkazu je předán jako vstup do tričko
, což zvyšuje oprávnění sudo a zapisuje text do souboru.
Závěr #
V Linuxu můžete k psaní textu do souboru použít >
a >>
operátoři přesměrování nebo tričko
příkaz.
Máte-li jakékoli dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.