GNU/Linux >> Znalost Linux >  >> Linux

Přesměrování vstupu/výstupu v Linuxu/Unixu

Co je přesměrování?

Přesměrování je funkce v Linuxu, takže při provádění příkazu můžete změnit standardní vstupní/výstupní zařízení. Základní pracovní postup jakéhokoli příkazu Linuxu spočívá v tom, že přijímá vstup a poskytuje výstup.

Typy přesměrování

1. Přepsat

  • “>“ Standardním vstupním (stdin) zařízením je klávesnice.
  • „<“ Standardním výstupním (stdout) zařízením je obrazovka.

2. Přikládá

  • Standardní výstup „>>“
  • Standardní vstup „<<“

3. Sloučita

  • „p> &q“ Sloučí výstup z proudu p s proudem q
  • „p <&q“ Sloučí vstup z proudu p s proudem q
Přesměrování výstupu

‘> symbol ‘ se používá pro přesměrování výstupu (STDOUT).

Příklad:

ls -al > listings

Zde je výstup příkazu ls -al přesměrován do souboru „listings“ namísto vaší obrazovky.

Poznámka :„Při přesměrování výstupu příkazu do souboru použijte správný název souboru. Pokud existuje soubor se stejným názvem, přesměrovaný příkaz smaže obsah tohoto souboru a poté může být přepsán.“

— Pokud nechcete, aby byl soubor přepsán, ale chcete do existujícího souboru přidat další obsah, měli byste použít ‘>> operátor ‘.

— Standardní výstup můžete přesměrovat nejen na soubory, ale i na zařízení!

cat music.mp3 > /dev/audio

Příkaz cat načte soubor music.mp3 a odešle výstup do /dev/audio, což je zvukové zařízení. Pokud jsou však konfigurace zvuku ve vašem PC správné, tento příkaz přehraje soubor music.mp3

Přesměrování vstupu

‘< symbol ‘ se používá pro přesměrování vstupu (STDIN)

Tím by se soubor připojil k e-mailu a byl by odeslán příjemci.

„News Today“ je předmět e-mailu, „[email protected]“ je e-mailová adresa a „NewsFlash“ je soubor přílohy.

Výše uvedené příklady byly jednoduché. Podívejme se na některé pokročilé techniky přesměrování, které využívají deskriptory souborů.

Deskriptory souborů (FD)

V Linuxu/Unixu je vše soubor. Běžný soubor, adresáře a dokonce i zařízení jsou soubory. Každý soubor má přiřazené číslo nazývané deskriptor souboru (FD).

Vaše obrazovka má také deskriptor souboru. Když je program spuštěn, je výstup odeslán do File Descriptor na obrazovce a výstup programu vidíte na svém monitoru. Pokud je výstup odeslán do deskriptoru souboru tiskárny, výstup programu by byl vytištěn.

Chyba přesměrování

Kdykoli spustíte program/příkaz na terminálu, jsou vždy otevřeny 3 soubory, tj. standardní vstup, standardní výstup, standardní chyba.

Tyto soubory jsou vždy přítomny při každém spuštění programu. Jak bylo vysvětleno dříve, deskriptor souboru je spojen s každým z těchto souborů.

Soubor Deskriptor souboru
Standardní vstupní STDIN 0
Standardní výstup STDOUT 1
Standardní chyba STDERR 2

Ve výchozím nastavení se na obrazovce zobrazuje chybový proud. Chyba přesměrování je směrování chyb do jiného souboru, než je obrazovka.

Proč došlo k chybě přesměrování?

Přesměrování chyb je jednou z velmi oblíbených funkcí Unixu/Linuxu.

Častí uživatelé UNIXu budou počítat s tím, že mnoho příkazů vám způsobí obrovské množství chyb.

  • Například při hledání souborů se obvykle objeví chyby odepřené oprávnění. Tyto chyby obvykle nepomohou osobě, která hledá konkrétní soubor.
  • Při provádění skriptů shellu často NECHCETE, aby chybové zprávy zaplňovaly běžný výstup programu.

Řešením je přesměrování chybových zpráv do souboru.

Příklad 1

 myprogram 2>errorsfile

Výše jsme spustili program s názvem myprogram.

Deskriptor souboru pro standardní chybu je 2.

Pomocí „2>“ přesměrujeme chybový výstup do souboru s názvem „errorfile“

Výstup programu tak není zahlcen chybami.

Příklad 2

Zde je další příklad, který používá příkaz find –

find . -name 'my*' 2>error.log

Pomocí „najít “, hledáme „. “ aktuální adresář pro soubor s „název “ začínající na „moje

Příklad 3

Podívejme se tedy na složitější příklad

Správci serveru často vypisují adresáře a ukládají chybový i standardní výstup do souboru, který lze zpracovat později. Zde je příkaz.

ls Documents ABC> dirlist 2>&1

Tady,

  • který zapíše výstup z jednoho souboru na vstup jiného souboru. 2>&1 znamená, že STDERR přesměrovává na cíl STDOUT (což je adresář souborů)
  • Přesměrováváme chybový výstup na standardní výstup, který je zase přesměrován do souboru dirlist. Výstup je tedy zapsán do souboru dirlist

Shrnutí

  • Každý soubor v systému Linux má přiřazený odpovídající deskriptor souboru
  • Klávesnice je standardní vstupní zařízení, zatímco vaše obrazovka je standardní výstupní zařízení
  • „>“ je operátor přesměrování výstupu. „>>“ připojí výstup k existujícímu souboru
  • „<“ je operátor přesměrování vstupu
  • „>&“ přesměruje výstup jednoho souboru na jiný.
  • Chybu můžete přesměrovat pomocí příslušného deskriptoru souboru 2.

Linux
  1. Jak počítat řádky v souboru v UNIX/Linux

  2. příklady příkazů tail v UNIX/Linux

  3. Přesměrování výstupu z funkčního bloku do souboru v Linuxu

  1. Jak uložit výstup příkazu do souboru v Linuxu

  2. Jak přesměrovat výstup do souboru a Stdout v Linuxu

  3. Unix/Linux obnovit/obnovit smazané soubory

  1. Linux – Rozumíte unixovým oprávněním a typům souborů?

  2. Pipes a přesměrování v Linuxu – vysvětleno!

  3. Jak odstranit setgid (linux/unix)?