Rouru (|) znáte? A co < a >? Víte jak tyhle věcí fungují a k čemu je můžete použít? Liší se to nějak mezi operačními systémy?
Každý program má standardní vstup (stdin), standardní výstup (stdout) a často taky standardní chybový výstup (stderr). V rámci toho jsou pak |, < a > operátory přesměrování – rourou se propojí výstup z jednoho programu jako vstup do jiného. A menšítko a většítko umožní propojit soubor místo klávesnice/obrazovky.
Pipe | – roura mezi programy
Obecná idea (ve všech systémech stejná):
program1 | program2
Postará se o to, že stdout (výstup) programu1 putuje ns stdin (vstup) programu2. Tedy to co “leze ven” z prvního, se stane vstupem pro druhý.
Příklad z Linuxu:
ls | grep txt
ls vypíše obsah složky a grep txt ho dostane jako vstup aby v něm vyhledal “txt” a poskytl to jako finální výstup.
Důležité je, že ve většině shellů je do pípy přenášen jen stdout nikoliv stderr.
Pozor, v PowerShell (Windows, Linux, macOS) nepředává text, ale .NET objekty.
Get-Process | Where-Object CPU -gt 10 | Sort-Object CPU -Descending
Když ale pipujete do externího programu (typicky klasické exe jako findstr, git), PowerShell ty objekty převádí na řetězce
ipconfig | findstr IPv4
PowerShell má navíc datové proudy 1–6 (oprotí běžným 0 – stdin, 1 – stdout a 2 – stderr):
1 – Success (běžný výstup)
2 – Error
3 – Warning
4 – Verbose
5 – Debug
6 – Information
Přesměrování: < a >
Základní významy (platí ve všech světech, jen drobné odchylky):
> – přesměruj stdout do souboru, soubor přepiš
ls > soubor.txt
ls vypisuje obsah složky, tady přesměrováním dojde k uložení výpisu do souboru. Soubor ale bude vytvořen znovu, pokud tedy existuje, bude přepsán.
>> – přesměruj stdout do souboru, připoj na konec
Pokud chcete aby výstup byl přidán na konec souboru (pokud existuje, jinak bude vytvořen), tak je nutné použít >>
< – čti stdin ze souboru místo z klávesnice
sort < soubor.txt
Vezme obsah souboru soubor.txt a pustí ho do sort, ten ho utřídí a výsledek zobrazí (protože půjde na stdout).
2> – přesměruj stderr do souboru
Jak bylo naznačeno výše, pípa nepracuje s stderr, tedy chybovými hláškami. Můžete ale využít 2> a chybové výstupy ukládat do souboru.
2>&1 – přesměruj stderr tam, kam už jde stdout
ls > vse.log 2>&1
Speciální „černá díra“
/dev/null v Unixu, NUL ve Windows. Můžete používat například takto:
příkaz > /dev/null 2>&1 # zahodí všechen výstup (stdout i stderr)
příkaz > NUL 2>&1 # totéž ve Windows CMD
„Černá díra“ v PowerShellu
cmd | Out-Null
&> – stdout i stderr do jednoho souboru
|& – pipe pro stdout + stderr:
Nefunguje všude – bash/zsh, ale ne čisté POSIX sh
cmd &> vse.log
cmd |& grep error
Shrnutí v jedné tabulce (pozor, sestavila ChatGPT)
| Operátor | Název / význam | Unix (bash/zsh) | CMD/DOS | PowerShell |
| ` | ` | pipe / roura, pipeline | stdout → stdin | stdout → stdin |
| > | přesměrování stdout, přepsat soubor | ano | ano | přesměruje success stream (1), alias Out-File |
| >> | přesměrování stdout, připojit na konec | ano | ano | ano (append) |
| < | přesměrování stdin ze souboru | ano | ano | funguje, ale méně používané (častěji Get-Content) |
| 2> | přesměrování stderr / error | ano (2> → stderr) | ano (2> → stderr) | ano (error stream 2) |
| 2>&1 | stderr → tam, kam jde stdout | ano | ano | funguje (přesměruje stream 2 na cíl streamu 1) |
| &> | stdout+stderr → soubor | bash/zsh rozšíření | ne | ne, místo toho *> |
| *> | všechny streamy → soubor | ne | ne | ano |
| /dev/null / NUL | „černá díra“ pro výstup | /dev/null | NUL | NUL, $null, Out-Null |
Pár praktických příkladů
Unix/Linux/MacOS
# Spočítej, kolik řádků obsahuje "error" v logu
grep error /var/log/syslog | wc -l
# Ulož seznam souborů, chyby bokem
ls /etc > seznam.txt 2> chyby.txt
# Zahoď všechen výstup
příkaz > /dev/null 2>&1
Windows CMD
REM Vyhledej "ERROR" ve výpisu služeb a ulož jen nalezené řádky
sc query | find "ERROR" > error_services.txt
REM Zahoď výstup i chyby
příkaz > NUL 2>&1
PowerShell
# Seznam procesů podle CPU
Get-Process | Where-Object CPU -gt 1 | Sort-Object CPU -Descending
# Ulož běžný výstup a chyby samostatně
příkaz 1> out.log 2> err.log
# Varování a chybové hlášky do souborů, výstup nech na obrazovce
příkaz 3> warnings.log 2> errors.log
Další tipy týkající se Linuxu (a podobných věcí)
-
TIP#2782: Jak na Raspberry Pi (Linuxu) otestovat rychlost internetového připojení
Čas od času budete chtít vědět jak rychlé internetové připojení má váš počítač s Linuxem/Raspberry Pi. Ať už pro případné řešení problémů nebo prostě jen ze zvědavosti. Související příspěvky TIP#3092: Jak v…
-
TIP#2773: Jak na Raspberry Pi (Linuxu, ale i Windows) otestovat rychlost síťového připojení?
Pro test rychlosti lokální sítě ale i případně spojení mezi dvě vzdálenými stroji je možné dobře použít iperf3 případně předchozí iperf . Funguje jako klient-server, tedy na jednom stroji/počítači spustíte “server” a…
-
TIP#2770: Jak dostat na jedno místo (ideálně do Windows) fotografie z iPhone a Samsungu (Androidu). A jak s nimi dál pracovat?
Ptal se na to před pár dny Jindra. Má iPhone i Samsung (stejně jako já) a řešil jak na jedno místo dodat fotky z obou a pak s nimi moci pracovat. Dokonce…
-
TIP#2765: Raspberry Pi a vzdálený přístup pomocí RDP?
RDP (Remote Desktop Protocol) je věc známá více ve Windows než v Linuxovém světě – používá se pro vzdálený přístup na stroje s Windows, ale vcelku nic nebrání stejný nástroj (Připojení ke…
-
TIP#2762: Jak na QNAP aktivovat SSH (a SFTP) přístup?
Jsou věci, které na QNAP bez přístupu přes SSH prostě neuděláte. Jsou sice vždy poněkud pokročilejší, ale časem k nim asi stejně dorazíte. SSH (a SFTP) není na QNAP NAS ve výchozím…
-
TIP#2755: Proč se mi na Raspberry Pi připojil USB disk sám? Jak to vypnout/zapnout?
Na Raspberry Pi asi budete trochu překvapeni tím, že po vsunutí (připojení do portu) USB disku se automaticky připojí do /media/username/nazev_disku – na svědomí to má GUI a tamní souborový manažer. Související příspěvky…
-
TIP#2748: Tailscale: VPN přístup na Raspberry či jiný stroj za NATem i navzájem mezi čímkoliv, kdekoliv
Moc šikovná věc, máte někde (doma například) stroj, na který se chcete připojit, když jste mimo domov. A nechcete nic moc řešit, jen nainstalovat, zprovoznit a používat. Klasicky do “doma” je připojení…
-
TIP#2745: Jak na iPhone/iPadu na vzdálený přístup k Linuxovým strojům. VNC, SSH …
Máte někde nějaké ty “Linuxové” stroje (virtuály, skutečně, Raspberry Pi, atd) a chcete mít možnost na ně přistupovat z iPadu či iPhone? Vlastně to není až tak složité, fungují klasické cesty a…
-
TIP#2733: Vývojová prostředí pro lokální vývoj pro WordPress (a webdesign vůbec)
Lokální vývojové prostředí vám umožní na vašem lokálním stroji mít vše co potřebujete pro provozování webu (s WordPressem, ale může to být i cokoliv jiného) – tedy web server (Apache, například), SQL…
-
TIP#2730: Jak na Raspberry Pi (a Linuxu vůbec) sledovat teplotu CPU, GPU a dalších částí počítače. Zkuste Psensor
Na i něčem tak základním jako Raspberry Pi můžete sledovat (nejen) teplotu a dá se pro to použít velmi nenáročný Psensor. Související příspěvky TIP#2933: Jak RaspBerry Pi spouštět z USB externího disku?…
-
TIP#2720: Zprovoznění RaspBerry Pi5. Co koupit abyste měli vše potřebné
Už to bude docela dost let co jsem zprovozňoval první RaspBerry Pi – to co posloužilo pro celou sérií tipů (začínají v Jak na Raspberry Pi? Co si k samotnému Raspberry koupit?…
-
TIP#2582: Zcela nepostradatelné pomůcky (software) do počítače, vydání pro rok 2024
Inspirací není nikdy dost, takže tak trochu aktuální přehled toho co je zásadní pro moji práci ve Windows a na Mac Booku. Možná se ještě vrátím s mobilními aplikacemi v samostatném tipu.…
-
TIP#2479: Jak aktualizovat Ubuntu?
Nejsnazší způsob jak aktualizovat Ubuntu je spustit Terminal. Pokud chcete jen aktualizovat stávající verzi operačního systému a balíčku, tak k tomu využijte dva následující příkazy Související příspěvky TIP#2095: Jak v Ubuntu zvětšit…
-
TIP#2454: Jaké jsou (nejlepší) terminálové aplikace pro Linux?
V každém Linuxu budete mít “terminál”. Nakonec ho budete mít i v MacOS, ne zcela “terminál” najdete i ve Windows – příkazovou řádku, ať už klasické cmd.exe nebo novější PowerShell. Související příspěvky…
-
TIP#2443: Jak na QNAP NAS provozovat webový server (Apache). Základní cesta. A jak tam dostat WordPress
Součástí QNAP NAS je možnost mít Apache. Instalace v Control Panel -> Applications kde najdete Web Server. Tam pak už stačí zaškrtnout Enable Web Server. Vytvoří se tím i network share Web…

















