<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>shell - Hard Wired</title>
	<atom:link href="https://www.hardwired.dev/tag/shell/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.hardwired.dev</link>
	<description></description>
	<lastBuildDate>Mon, 07 Jul 2025 06:04:17 +0000</lastBuildDate>
	<language>cs</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://www.hardwired.dev/wp-content/uploads/2022/10/android-chrome-256x256-1-150x150.png</url>
	<title>shell - Hard Wired</title>
	<link>https://www.hardwired.dev</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Nushell</title>
		<link>https://www.hardwired.dev/2025/06/12/2771/</link>
		
		<dc:creator><![CDATA[John Doe]]></dc:creator>
		<pubDate>Thu, 12 Jun 2025 21:20:19 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[nushell]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">https://www.hardwired.dev/?p=2771</guid>

					<description><![CDATA[<p>Nushell je zajímavou alternativou k asi nejrozšířenější variantě shellu Bash. Nepatří do top pětky, ten kromě Bashe okupují Tcsh/Csh, Ksh, &#62;&#62;&#62;</p>
<p>The post <a href="https://www.hardwired.dev/2025/06/12/2771/">Nushell</a> first appeared on <a href="https://www.hardwired.dev">Hard Wired</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="bsf_rt_marker"></div><p><a href="https://www.nushell.sh">Nushell</a> je zajímavou alternativou k asi nejrozšířenější variantě <a href="https://en.wikipedia.org/wiki/Shell_(computing)">shellu</a> <a href="https://www.gnu.org/software/bash/">Bash</a>. Nepatří do top pětky, ten kromě Bashe okupují <a href="Tcsh/Cs">Tcsh/Cs</a>h, <a href="http://kornshell.com/">Ksh</a>, <a href="https://www.zsh.org/">Zsh</a> a <a href="https://fishshell.com/">Fish</a>. </p>
<p>Dle autorů je Nushell nový typ shellu a už v <a href="https://www.nushell.sh/book/">úvodu dokumentace</a> se dozvíte hlavní rozdíl. Programy v tradičních shellech spolu komunikují pomocí textových řetězců. Program zapíše text na standardní výstup a druhý program tento text přečte a zpracuje ze standardního vstupu.</p>
<p>To mohlo stačit v dobách kdy byly tyto shelly vytvořeny, ale doba se posunula. Dnes je v mnoha aplikacích defacto standard JSON. Například Bash v základu práci s JSON formátem nepodporuje a je potřeba použít nějaký JSON processor. Například  <a href="https://jqlang.org/">jq</a>.</p>
<p>Nushell tuto filozofii neboří, naopak rozšiřuje a umožňuje posílat i jiné <a href="https://www.nushell.sh/book/types_of_data.html#types-at-a-glance">datové typy</a>. </p>
<pre><code class="language-shell">Integers            -65535
Floats (decimals)   9.9999, Infinity
Strings             "hole 18", 'hole 18', <code>hole 18</code>, hole18, r#'hole18'#
Booleans            true
Dates               2000-01-01
Durations           2min + 12sec
File-sizes          64mb
Ranges              0..4, 0..<5, 0.., ..4
Binary              0x[FE FF]
Lists               [0 1 'two' 3]
Records             {name:"Nushell", lang: "Rust"}
Tables              [{x:12, y:15}, {x:8, y:9}], [[x, y]; [12, 15], [8, 9]]
Closures            {|e| $e + 1 | into string }, { $in.name.0 | path exists }
Cell-paths          $.name.0
Blocks              if true { print "hello!" }, loop { print "press ctrl-c to exit" }
Null (Nothing)      null
Any                 let p: any = 5</code></pre>
<p>Jednou z výhod tohoto přístupu je, že výstupem může být tabulka, kterou další programy mohou zpracovat. Pokud chcete v Bashi například seřadit a filtrovat výstup příkazu ls, tak to bude kombinace příkazů ls, sort, grep, cut a možná i dalších. Největší obtíž bude kontext. Výstupy mezi program budou jen textové řetězce bez kontextu. <a href="https://www.youtube.com/results?search_query=ba%C5%99inka+bash">Ale zkušený Linux admin to určitě zvládne s přehledem</a>.</p>
<p>V Nushelu další program ví, že je to tabulka, která má nějaké sloupce co se nějak jmenují a hodnoty ve sloupcích mají nějaký typ. Tím výsledná sekvence příkazů vypadá mnohem přirozeněji a intuitivněji.</p>
<p>Příklad 1: Proces co zabírá nejvíc paměti</p>
<pre><code class="language-shell">~/bin> ps
╭───┬──────┬──────┬──────┬──────────┬──────┬──────────┬──────────╮
│ # │ pid  │ ppid │ name │  status  │ cpu  │   mem    │ virtual  │
├───┼──────┼──────┼──────┼──────────┼──────┼──────────┼──────────┤
│ 0 │    1 │    0 │ init │ Sleeping │ 0.00 │ 339.9 kB │ 997.3 GB │
│ 1 │ 1724 │    1 │ init │ Sleeping │ 0.00 │ 249.8 kB │ 997.3 GB │
│ 2 │ 1725 │ 1724 │ bash │ Sleeping │ 0.00 │   3.5 MB │ 222.2 GB │
│ 3 │ 1762 │ 1725 │ sudo │ Sleeping │ 0.00 │   2.5 MB │ 309.2 GB │
│ 4 │ 1763 │ 1762 │ nu   │ Running  │ 0.00 │  18.4 MB │ 150.1 GB │
╰───┴──────┴──────┴──────┴──────────┴──────┴──────────┴──────────╯</code></pre>
<p>Výstupem je tabulka, co má sloupce. V našem případě nás zajímá sloupec mem. Ten má jako řádky hodnoty typu file-size podle kterých lze sortovat.</p>
<pre><code class="language-shell">~/bin> ps | sort-by mem
╭───┬──────┬──────┬──────┬──────────┬──────┬──────────┬──────────╮
│ # │ pid  │ ppid │ name │  status  │ cpu  │   mem    │ virtual  │
├───┼──────┼──────┼──────┼──────────┼──────┼──────────┼──────────┤
│ 0 │ 1724 │    1 │ init │ Sleeping │ 0.00 │ 249.8 kB │ 997.3 GB │
│ 1 │    1 │    0 │ init │ Sleeping │ 0.00 │ 339.9 kB │ 997.3 GB │
│ 2 │ 1762 │ 1725 │ sudo │ Sleeping │ 0.00 │   2.5 MB │ 309.2 GB │
│ 3 │ 1725 │ 1724 │ bash │ Sleeping │ 0.00 │   3.5 MB │ 222.2 GB │
│ 4 │ 1763 │ 1762 │ nu   │ Running  │ 0.00 │  18.4 MB │ 150.1 GB │
╰───┴──────┴──────┴──────┴──────────┴──────┴──────────┴──────────╯</code></pre>
<p>Sort řadí od nejmenšího, takže je ještě potřeba výstup obrátit.</p>
<pre><code class="language-shell">~/bin> ps | sort-by mem | reverse
╭───┬──────┬──────┬──────┬──────────┬──────┬──────────┬──────────╮
│ # │ pid  │ ppid │ name │  status  │ cpu  │   mem    │ virtual  │
├───┼──────┼──────┼──────┼──────────┼──────┼──────────┼──────────┤
│ 0 │ 1763 │ 1762 │ nu   │ Running  │ 0.00 │  18.4 MB │ 150.1 GB │
│ 1 │ 1725 │ 1724 │ bash │ Sleeping │ 0.00 │   3.5 MB │ 222.2 GB │
│ 2 │ 1762 │ 1725 │ sudo │ Sleeping │ 0.00 │   2.5 MB │ 309.2 GB │
│ 3 │    1 │    0 │ init │ Sleeping │ 0.00 │ 339.9 kB │ 997.3 GB │
│ 4 │ 1724 │    1 │ init │ Sleeping │ 0.00 │ 249.8 kB │ 997.3 GB │
╰───┴──────┴──────┴──────┴──────────┴──────┴──────────┴──────────╯</code></pre>
<p>Zajímají jen Running procesy, takže můžeme využít sloupce status.</p>
<pre><code class="language-shell">~/bin> ps | sort-by mem | reverse | where status == Running
╭───┬──────┬──────┬──────┬─────────┬──────┬─────────┬──────────╮
│ # │ pid  │ ppid │ name │ status  │ cpu  │   mem   │ virtual  │
├───┼──────┼──────┼──────┼─────────┼──────┼─────────┼──────────┤
│ 0 │ 1763 │ 1762 │ nu   │ Running │ 0.00 │ 18.7 MB │ 150.1 GB │
╰───┴──────┴──────┴──────┴─────────┴──────┴─────────┴──────────╯</code></pre>
<p>Můžeme si tabulku zjednodušit tím, že nás zajímají jen sloupce pid, name a mem.</p>
<pre><code class="language-shell">~/bin> ps | sort-by mem | reverse | where status == Running | select pid name mem
╭───┬──────┬──────┬─────────╮
│ # │ pid  │ name │   mem   │
├───┼──────┼──────┼─────────┤
│ 0 │ 1763 │ nu   │ 18.7 MB │
╰───┴──────┴──────┴─────────╯</code></pre>
<p>Nakonec si pomocí příkazu get vytáhneme jen PID procesu.</p>
<pre><code class="language-shell">~/bin> ps | sort-by mem | reverse | where status == Running | select pid name mem | get pid
╭───┬──────╮
│ 0 │ 1763 │
╰───┴──────╯</code></pre>
<p>A tohle je jen takové škrabkání po povrchu. Nu disponuje škálou <a href="https://www.nushell.sh/book/working_with_tables.html">příkazů na práci s tabulkami</a>. Také na <a href="https://www.nushell.sh/book/working_with_records.html#updating-records">práci se záznamy</a> což je JSON, <a href="https://www.nushell.sh/book/working_with_lists.html">seznamy</a> a <a href="https://www.nushell.sh/book/working_with_strings.html">řetězci</a>. Vše je pěkně popsáno v dokumentaci v sekci <a href="https://www.nushell.sh/book/nu_fundamentals.html">Nu Fundamentals</a>.</p>
<p>Nushell jede na Windows, macOS a Linux operačních systémech. Metody instalace jsou popsány v <a href="https://www.nushell.sh/book/installation.html">dokumentaci</a>. Pro Debian/Ubuntu systém stačí přidat zdroj.</p>
<pre><code class="language-shell">curl -fsSL https://apt.fury.io/nushell/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/fury-nushell.gpg
echo "deb https://apt.fury.io/nushell/ /" | sudo tee /etc/apt/sources.list.d/fury.list
sudo apt update
sudo apt install nushell</code></pre>
<p>Nushell není kompatibilní s Bashem a jinými tradičními shelly. Takže není kompletní náhrada za standardní systémový shell. Ale dokáži si představit Nu jako &quot;every day&quot; shell na takovou běžnou uživatelskou Linuxařinu. Ale ještě víc pokud z mého programu potřebuji zpracovat strukturovaný výstup nebo naopak do mého programu dostat strukturovaný vstup. To může být velice silný nástroj. Nushell tvrdí že dokáže pracovat s JSON, YAML, Excel a dokonce i s SQLite. To může některé aplikace velice zjednodušit. Seznam všech podporovaných formátů najdete v <a href="https://www.nushell.sh/book/loading_data.html#opening-files">dokumentaci</a>.</p>
<p>Happy coding!</p>

<div class="twitter-share"><a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.hardwired.dev%2F2025%2F06%2F12%2F2771%2F&#038;via=hessevalentino" class="twitter-share-button">Tweet</a></div><p>The post <a href="https://www.hardwired.dev/2025/06/12/2771/">Nushell</a> first appeared on <a href="https://www.hardwired.dev">Hard Wired</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>TUI #1 &#8211; NCDU</title>
		<link>https://www.hardwired.dev/2022/10/20/tui-1-ncdu/</link>
		
		<dc:creator><![CDATA[John Doe]]></dc:creator>
		<pubDate>Thu, 20 Oct 2022 18:12:56 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Různé]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[du]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ncdu]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tui]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unix]]></category>
		<guid isPermaLink="false">http://wordpress.hardwired.dev/?p=670</guid>

					<description><![CDATA[<p>Nepravidelný občasník, který jednou za čas ukáže nějakou užitečnou nebo zajímavou tui (terminal user interface) aplikaci. du příkaz vám za &#62;&#62;&#62;</p>
<p>The post <a href="https://www.hardwired.dev/2022/10/20/tui-1-ncdu/">TUI #1 – NCDU</a> first appeared on <a href="https://www.hardwired.dev">Hard Wired</a>.</p>]]></description>
										<content:encoded><![CDATA[<div id="bsf_rt_marker"></div><p>Nepravidelný občasník, který jednou za čas ukáže nějakou užitečnou nebo zajímavou <code>tui</code> (terminal user interface) aplikaci.</p>
<hr />
<p><code>du</code> příkaz vám za normálních okolností vrátí využití disku. Musíte ho teda trochu &quot;potunit&quot;, abyste nedostali kilometr dlouhý výpis, ale z trochou cviku se dá efektivně používat.</p>
<p>Když budete chtít zjistit kolik která složka v aktuálním adresáři zabírá, stačí do terminálu napsat:</p>
<pre><code class="language-shell">du -h --max-depth=1</code></pre>
<p>A dostanete pěkný výpis aktuální složky. Například:</p>
<pre><code>4.0K    ./.config
26M     ./.local
7.8M    ./.node-red
27M     ./.npm
0       ./bin
67M     .</code></pre>
<p>Co se vše dá s <code>du</code> dělat najdete v <a href="https://man7.org/linux/man-pages/man1/du.1.html">dokumentaci</a>.</p>
<p>Ale pokud jste jako já a stejně vždy ty parametry nějak zapomenete, tak pro vás existuje řešení v podobě <code>ncdu</code>. <a href="https://dev.yorhel.nl/ncdu">NCurses disk usage</a> (ncdu) je <code>tui</code> aplikace nad <code>du</code>, která vám umožní interaktivně procházet složky a zjišťovat jejich velikosti.</p>
<p>Na debianím systému se aplikace nachází v repozitářích.</p>
<pre><code class="language-shell">sudo apt install ncdu</code></pre>
<p>Pak už jen stačí do terminálu napsat:</p>
<pre><code class="language-shell">ncdu</code></pre>
<p>A začít zkoumat velikosti složek o trochu více interaktivně.</p>
<p><img decoding="async" src="http://wordpress.hardwired.dev/wp-content/uploads/2022/10/ncdu.jpg" alt="" /></p>

<div class="twitter-share"><a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.hardwired.dev%2F2022%2F10%2F20%2Ftui-1-ncdu%2F&#038;via=hessevalentino" class="twitter-share-button">Tweet</a></div><p>The post <a href="https://www.hardwired.dev/2022/10/20/tui-1-ncdu/">TUI #1 – NCDU</a> first appeared on <a href="https://www.hardwired.dev">Hard Wired</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
