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#2436: Jak si na QNAP NAS pořídit SQL Server? Nejsnazší varianta
Chcete mít doma či ve firmě k dispozici SQL server pro vývoj či provoz aplikací a máte QNAP NAS? Dobrá zpráva je, že právě SQL Server je součástí základního vybavení a stačí…
-
TIP#2415: Co je to PWA (Progressive Web App, progresivní webová aplikace)?
PWA je zkratka pro „Progressive Web App„. Jedná se o webové aplikace, které se snaží poskytnout uživatelům podobnou uživatelskou zkušenost jako nativní aplikace, tedy aplikace stahované a nainstalované na zařízení. Související příspěvky…
-
TIP#2368: Jak na Raspberry Pi zakázat Wi-Fi a ponechat si klasické Ethernet připojení
Mám (už dlouho) Raspberry Pi (nakonec je tu i seriál, který vznikl v době, kdy jsem si ho pořídil, viz konec tipu). Je připojené Ethernet kabelem, ale protože má také Wi-Fi, tak…
-
TIP#2350: Jak ve WSL pod Windows používat grafické aplikace?
Docela dobrá věc, pokud se vám to podaří rozchodit. WSL 2 (v jedničce to nejde není možné), tedy Linux ve Windows, je ta nejsnazší část. Můžete na to jít třeba tak, že…
-
TIP#2339: Jak na QNAP změnit PATH
PATH určuje co se prohledává, když zadáte nějaký příkaz/povel. Po instalaci Entware by se v PATH mělo objevit i /share/CACHEDEV1_DATA/.qpkg/Entware/bin, ale v mém případě se tak nestalo. Takže přes Entware qpkg pořízené…
-
TIP#2307: Chrome nově umí šetřit baterii notebooků. Stačí si to zapnout
Od Chrome 108 (prosinec 2022) je možné zapnout Energy Saver režim pro ty, kdo chtějí prodloužit výdrž baterie notebooku. Související příspěvky TIP#1969: Jak stáhnout a nainstalovat Google Chrome TIP#1925: Co je to…
-
TIP#2310: Jak je na tom QNAP s ohledem na Linux? Má QNAP Linux?
Tohle je taková složitější věc. QNAP můžete používat přes SSH, klasicky se přihlásit do něčeho do dost hodně vypadá jako počítač s Linuxem. Jenže vlastně není – realisticky je to okleštěná podoba…
-
TIP#2274: Jak v Linuxu (a na QNAP) sledovat vytížení disků?
👉 iostat kupodivu najdete i přímo v QNAPu, jen tedy v okleštěné verzi, která neumí některé přepínače a v některých případech zobrazuje trochu nepoužitelný výstup. Funguje, tak že ve vámi vybraném intervalu…
-
TIP#2271: QNAP a Entware. Jak si na QNAP pořídit normální package manager
Tohle je taková trochu komplikovaná záležitost – entware je package manager, nahradil dříve používané optware/ipkg. Hodí se enormně, protože umožňuje instalovat věci, které jinak dostupné nejsou. Můžete ho najít v QNAP Club…
-
TIP#2264: Jak využít QNAP pro monitoring běhu webových serverů? A nejenom QNAP
Monitoring běhu/dostupnosti webových serverů tu řeší tip Jak na monitoring dostupnosti/funkčnosti serveru? Je tam řeč o WEDOS.online, které je dostupné zdarma v beta verzi a docela dlouho ho používám pro monitoring –…
-
TIP#2260: Co dělat, když nejde smazat soubor nebo složka na QNAP NAS?
Nemožnost smazat soubor nebo složku na QNAP NAS má jednu z následujících možných důvodů. Související příspěvky TIP#3058: QNAP TS-130 malý NAS. Jaký je? Zprovoznění a užitečné drobnosti TIP#2994: QNAP TS-130 malý NAS.…
-
TIP#2258: Jak z Linuxu prověřit web s WordPressem? Použijte WPscan
WPScan je CLI pomůcka pro Linux, open source, snadno použitelné pro kontrolu webu s WordPressem zvenčí. Prozradí vám verzi WordPressu, http serveru, jaké pluginy jsou instalované, podívá se na uživatelská jméno, umí…
-
TIP#2257: QNAP a virtualizace – Ubuntu Linux Station
Jedna z věcí na kterou jsem se hodně těšil (a ještě víc byl zvědavý) byla virtualizace. QNAP totiž umí provozovat virtuální stroje – máte-li Intel QNAP a dostatek paměti a výkonu, tak…
-
TIP#2253: Jak použít wget pro zálohování webu přes FTP?
O wget je dost detailně řeč v K čemu se vám může hodit wget? Ke stahování a zrcadlení!, ale není tam úplně zmíněna možnost využití pro zálohování webu, pokud máte přístup přes…
-
TIP#2169: K čemu slouží příkaz ping, co je to ping plotter a k čemu se to hodí?
Co je to ping už jsme tu řešili trochu v Jak si hlídat rychlost internetového připojení? A proč to dělat? a padla tam i zmínka o PingChart pro Rainmeter. Případně v Jak…

















