<?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>livio's way &#187; bash</title>
	<atom:link href="http://blog.jakubrusinek.pl/tag/bash/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jakubrusinek.pl</link>
	<description>Jakub Rusinek</description>
	<lastBuildDate>Fri, 09 Jul 2010 18:10:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Nawet BASH mówi ludzkim głosem</title>
		<link>http://blog.jakubrusinek.pl/2007/07/14/nawet-bash-mowi-ludzkim-glosem/</link>
		<comments>http://blog.jakubrusinek.pl/2007/07/14/nawet-bash-mowi-ludzkim-glosem/#comments</comments>
		<pubDate>Sat, 14 Jul 2007 08:07:08 +0000</pubDate>
		<dc:creator>Livio</dc:creator>
				<category><![CDATA[Ciekawostki]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.jakubrusinek.pl/2007/07/14/nawet-bash-mowi-ludzkim-glosem/</guid>
		<description><![CDATA[Wpis powstał po tym, jak skonfigurowałem sobie BASH-a, po długim &#34;Googlaniu&#34;, pr&#243;bach i błędach. Postanowiłem ułatwić życie potomności. BASH, jak wiadomo, jest tzw. powłoką systemowa. To on wykonuje polecenia, kt&#243;re mu wydajemy&#8230; I to jego dzisiaj pomęczymy . bashrc Jak &#8230; <a href="http://blog.jakubrusinek.pl/2007/07/14/nawet-bash-mowi-ludzkim-glosem/">Czytaj dalej <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><small>Wpis powstał po tym, jak skonfigurowałem sobie BASH-a, po długim &quot;Googlaniu&quot;, pr&oacute;bach i błędach. Postanowiłem ułatwić życie potomności<img alt=" (; " src="/files/wink.png" class="emots" />.</small></p>
<p>BASH, jak wiadomo, jest tzw. powłoką systemowa. To on wykonuje polecenia, kt&oacute;re mu wydajemy&#8230; I to jego dzisiaj pomęczymy <img alt=":)" src="/files/smile.png" class="emots" /> .</p>
<p><span id="more-494"></span></p>
<h3>bashrc</h3>
<p>Jak każdy program, tak i BASH posiada pewną konfiguracje, kt&oacute;rą przechowuje w dwu plikach (w większości dystrybucji):</p>
<ul>
<li>/etc/bashrc &#8211; posiadającym ustawienia powłoki dla każdego użytkownika;</li>
<li>~/.bashrc (/home/użytkownik/.bashrc) &#8211; posiadającym ustawienia powłoki dla <strong>danego</strong> użytkownika.</li>
</ul>
<p>W tym pliku możesz wiele zmienić, na przykład wyłączyć pewną funkcję w programie, stworzyć alias (polecenie lub ciąg poleceń wykonywanych gdy wpiszesz nazwę aliasu i ewentualne parametry), jak i skonfigurować powitania czy łańcuch znak&oacute;w wyświetlany w miejscu, gdzie wpisujesz komendy (&quot;znak zachęty&quot;)</p>
<h3>Aliasy</h3>
<p>Mogą być bardzo użyteczne. Na przykład polecenie &#8216;wysun&#8217; (bez polskich znak&oacute;w) może wysunąć tackę w napędzie ustawionym w aliase lub podanym po słowie &#8216;wysun&#8217; (aliasy zrozumiesz po dłuższym czasie użytkowania terminala, a jakie aliasy będą Ci potrzebne, przekonasz się sam).</p>
<h4>Przykład 1.</h4>
<p><code lang="bash">alias ls='ls -a'</code></p>
<p>Powyższy przykład spowoduje, że polecenie <strong>ls</strong> zawsze będzie uruchamiane z parametrem <em>-a</em>, gdyż nazwa aliasu jest taka sama, jak nazwa oryginalnego polecenia, a to zostanie &quot;zastąpione&quot; &#8211; oczywiście nie fizycznie, na dysku, a w konfiguracji powłoki.</p>
<h3>Powitania</h3>
<p>Wpisując w bashrc polecenie, zostanie ono wykonane za każdym razem, gdy uruchomisz terminal, czy będziesz się tekstowo logować.</p>
<h4>Przykład 1.</h4>
<p><code lang="bash">echo 'miłej pracy (;'</code></p>
<p>Powyższy fragment kodu (polecenie echo, kt&oacute;re wyświetla tekst z &quot;argument&oacute;w&quot; oraz sam tekst) dodany do konfiguracji, spowoduje, że BASH przywita Cię zdaniem:</p>
<blockquote>
<p>miłej pracy (;</p>
</blockquote>
<h4>Przykład 2.</h4>
<p><code lang="bash">echo &quot;mamy dzisiaj piękną datę - `date +'%d.%m.%Y'`&quot;</code></p>
<p>Powyższy fragment (echo wyświetlające tekst i tekst zawierający wynik z polecenia <em>date</em> z &quot;argumentami&quot;) spowoduje wyświetlenia:</p>
<blockquote>
<p>mamy dzisiaj piękną datę &#8211; 14.07.2007</p>
</blockquote>
<p>To &quot;argumenty&quot; decydują o formacie daty. Chcesz wiedzieć więcej?<br />
<code lang="bash">date --help</code><br />
oraz<br />
<code lang="bash">man date</code> wszystko Ci wyjaśnią.</p>
<h3>&quot;Znak zachęty&quot;</h3>
<p>Określa go zmienna <em>PS1</em> .</p>
<h4>Przykład 1.</h4>
<p><code lang="bash">export PS1='\u \A \w \$ '</code></p>
<p>A oto używane &quot;kody specjalne&quot;:</p>
<pre>
\! - wyświetla numer polecenia historii,
\# - wyświetla numer aktualnego polecenia,
\$ - wyświetla # dla root`a i $ dla zwykłego użytkownika
\\ - wyświetla znak \
\d - wyświetla datę
\t - wyświetla czas
\h - wyświetla nazwę komputera
\n - przechodzi do nowego wiersza
\nnn - wyświetla znak, kt&oacute;ry odpowiada wartości &oacute;semkowej nnn
\s - wyświetla nazwę powłoki
\u - wyświetla login użytkownika
\W - wyświetla podstawową nazwę bieżącego katalogu
\w - wyświetla bieżące położenie
</pre>
<p>&nbsp;</p>
<p>Do znaku zachęty możesz dodać każdy znak, kt&oacute;ry uznasz za odpowiedni &#8211; to Tw&oacute;j terminal, niech on będzie taki, jak Ty chcesz <img alt=":)" src="/files/smile.png" class="emots" /> .</p>
<h3>Kolorowanie i ozdabianie tekstu w terminalu</h3>
<p>Najlepsze zawsze na koniec <img alt=":)" src="/files/smile.png" class="emots" /> . Terminal BASH jest o tyle nowoczesny, że korzysta z możliwości monitor&oacute;w kolorowych i potrafi wyświetlać tekst w kolorze. Może Ci się to wydać absurdalne, jeśli nie widziałeś na oczy czarno-białego monitora, ale uwierz, kiedyś takich używano &#8211; nie znano koloru na monitorze.</p>
<p>W BASH-u kolory i inne właściwości tekstu określają kody (ciągle kody, same kody &#8211; to jak gra <img alt=";)" src="/files/wink.png" class="emots" /> ).</p>
<p>&nbsp;</p>
<p>Kody i ich działanie</p>
<table>
<tbody>
<tr>
<th>Kod</th>
<th>Działanie</th>
</tr>
<tr>
<td>0</td>
<td>przywr&oacute;cenie domyślnych właściwości</td>
</tr>
<tr>
<td>1</td>
<td>pogrubienie</td>
</tr>
<tr>
<td>2</td>
<td>rozjaśnienie koloru</td>
</tr>
<tr>
<td>4</td>
<td>podkreślenie</td>
</tr>
<tr>
<td>5</td>
<td>migotanie</td>
</tr>
<tr>
<td>7</td>
<td>odwr&oacute;cone kolory</td>
</tr>
<tr>
<td>22</td>
<td>pogrubienie wyłączone</td>
</tr>
<tr>
<td>24</td>
<td>podkreślenie wyłączone</td>
</tr>
<tr>
<td>25</td>
<td>migotanie wyłączone</td>
</tr>
<tr>
<td>27</td>
<td>odwr&oacute;cone kolory wyłączone</td>
</tr>
<tr>
<td>30</td>
<td>czarny tekst</td>
</tr>
<tr>
<td>31</td>
<td>czerwony tekst</td>
</tr>
<tr>
<td>32</td>
<td>zielony tekst</td>
</tr>
<tr>
<td>33</td>
<td>brązowy tekst</td>
</tr>
<tr>
<td>34</td>
<td>niebieski tekst</td>
</tr>
<tr>
<td>35</td>
<td>fioletowy tekst</td>
</tr>
<tr>
<td>36</td>
<td>turkusowy tekst</td>
</tr>
<tr>
<td>37</td>
<td>biały tekst (w palecie kolor&oacute;w Tango!, w terminalu GNOME: szary)</td>
</tr>
<tr>
<td>38</td>
<td>podkreślenie, domyślny kolor tła</td>
</tr>
<tr>
<td>39</td>
<td>podkreślenie wyłączone, domyślny kolor tła</td>
</tr>
<tr>
<td>40</td>
<td>czarne tło</td>
</tr>
<tr>
<td>41</td>
<td>czerwone tło</td>
</tr>
<tr>
<td>42</td>
<td>zielone tło</td>
</tr>
<tr>
<td>43</td>
<td>brązowe tło</td>
</tr>
<tr>
<td>44</td>
<td>niebieskie tło</td>
</tr>
<tr>
<td>45</td>
<td>fioletowe tło</td>
</tr>
<tr>
<td>46</td>
<td>turkusowe tło</td>
</tr>
<tr>
<td>47</td>
<td>białe tło (w palecie kolor&oacute;w Tango!, w terminalu GNOME: szare)</td>
</tr>
<tr>
<td>49</td>
<td>domyślny kolor tła</td>
</tr>
</tbody>
</table>
<p>Kolory osadza się następująco:</p>
<ul>
<li>
<h4>Dla polecenia echo</h4>
<p>Należy wykonać polecenie z parametrem <strong>-e</strong>, a kod podawać w osobnych cudzysłowach przed tekstem (format kodu: \E[<strong>kod</strong>m a dla większej ilości \E[<strong>kod1</strong>;<strong>kod2</strong>m).</p>
<h5>Przykład 1.</h5>
<p><code lang="bash">echo -e '\E[33m'&quot;dzisiaj będzie&quot;'\E[34m'&quot;padać&quot;'\E[0m'</code></p>
<p>\E[33m ustawia brązowy kolor tekstu, \E[34m ustawia niebieski kolor tekstu, a \E[0m resetuje te ustawienia, by kolejne linie tekstu w terminalu wyglądały jak każde inne, a nie były niebieskie <img alt=":)" src="/files/smile.png" class="emots" /> . To trochę jak XML - otwierasz, to i zamknij (obszar o danych właściwościach).</p>
</li>
<li>
<h4>Dla zmiennej PS1</h4>
<p>Należy kod (format kodu: \e[<strong>kod</strong>m a dla większej ilości \e[<strong>kod1</strong>;<strong>kod2</strong>m) wkleić w zmiennej, bez dodatkowych cudzysłow&oacute;w.</p>
<h5>Przykład 1.</h5>
<p><code lang="bash">export PS1='\u, \e[33m[\e[31m⌚ \A\e[33m]\e[0m \e[34m\w\e[0m \$ '</code></p>
<p>Przykład wygląda na skomplikowany przez dodane kolory, więc nie przejmuj się.</p>
<p>Po kolei: <strong>\u</strong> to nazwa użytkownika, <strong>\e[33m</strong> ustawia kolor brązowy dla nawiasu kwadratowego [, <strong>\e[31m</strong> ustawia kolor czerwony dla daty i znaku Unicode przed nią (symbol zegarka, blok: r&oacute;żne techniczne), <strong>\e[33m</strong> ustawia kolor brązowy dla nawiasu kwadratowego ], <strong>\e[0m</strong> resetuje właściwości, <strong>\e[34m</strong> ustawia kolor niebieski dla aktualnego katalogu, a <strong>\e[0m</strong> zn&oacute;w resetuje właściwości, ale dla znaku $ / # (o tym wcześniej było) i kolejnych linii tekstu w terminalu.</p>
</li>
</ul>
<h3>Moja konfiguracja</h3>
<p>Jako, że ten Jogger to m&oacute;j dziennik, mam prawo pochwalić się osobistymi wycieczkami i danymi <img alt=":]&#8221; src=&#8221;/files/snicker.png&#8221; class=&#8221;emots&#8221; /> .</p>
<pre><code lang="bash">export PS1='\u, \e[33m[\e[31m⌚ \A\e[33m]\e[0m \e[34m\w\e[0m \$ '

B=&quot;`date +'%B'`&quot;

case &quot;$B&quot; in        &quot;styczeń&quot;) export mc='stycznia' ;        &quot;luty&quot;) export mc='lutego' ;        &quot;marzec&quot;) export mc='marca' ;        &quot;kwiecień&quot;) export mc='kwietnia' ;        &quot;maj&quot;) export mc='maja' ;        &quot;czerwiec&quot;) export mc='czerwca' ;        &quot;lipiec&quot;) export mc='lipca' ;        &quot;sierpień&quot;) export mc='sierpnia' ;        &quot;wrzesień&quot;) export mc='września' ;        &quot;październik&quot;) export mc='października' ;        &quot;listopad&quot;) export mc='listopada' ;        &quot;grudzień&quot;) export mc='grudnia' ;        *) mc=&quot;`date +'%B'`&quot;esac

echo -e &quot;witaj, &quot;'\E[4;1m'&quot;`whoami`&quot;'\E[0m'&quot;. mamy dzisiaj &quot;'\E[32m'&quot;`date +'%A, %d '`&quot;$mc'\E[0m'&quot; i &quot;'\E[34m'&quot;pogodę jak za oknem&quot;'\E[0m'&quot;.&quot;echo 'miłego dnia (;'</code>
</pre>
<p>Pierwsza linia kodu powoduje zmianę formatu znaku zachęty na dokładnie taki, jaki opisałem.<br />
Druga linia ustawia wartość zmiennej <strong>B</strong> na nazwę aktualnego miesiąca.</p>
<p>Kolejne linie (case &divide; esac) używają wartości zmiennej <strong>B</strong> i w zależności od jej wartości ustawiają wartość zmiennej <strong>mc</strong>.</p>
<p>Przedostatnia, niezwykle długa linia, powoduje wyświetlenie następującego tekstu (aktualna data i godzina):</p>
<pre>
witaj, <span style="text-decoration: underline; font-weight: bold;">livio</span>. mamy dzisiaj <span style="color: green;">piątek, 13 lipca</span> i <span style="color: blue;">pogodę jak za oknem</span>.
miłego dnia (;
</pre>
<p>&nbsp;</p>
<p>Linia zachęty wygląda tak:</p>
<pre>
livio, <span style="color: brown;">[</span><span style="color: red;">⌚ 20:07</span><span style="color: brown;">]</span> <span style="color: blue;">~/Desktop</span> $
</pre>
<p>Przydał Ci się ten wpis ? Możesz go <a href="http://wykop.pl/link/21784/nawet-bash-mowi-ludzkim-glosem.html">wykopać</a> lub dodać do zakładek w Twoim ulubionym serwisie.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jakubrusinek.pl/2007/07/14/nawet-bash-mowi-ludzkim-glosem/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
	</channel>
</rss>
