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.