<?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>Ubuntu - pomoc &#187; Programowanie</title>
	<atom:link href="http://www.ubuntu-pomoc.org/category/programowanie/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ubuntu-pomoc.org</link>
	<description>Przydatne polecenia, sprawdzone rozwiązania. Tutaj znajdziesz porady związane z konfiguracją i użytkowaniem systemu Ubuntu Linux.</description>
	<lastBuildDate>Mon, 06 Feb 2012 08:00:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>[MySQL] Wykonanie kopii zapasowej z poziomu terminala</title>
		<link>http://www.ubuntu-pomoc.org/mysql-wykonanie-kopii-zapasowej-z-poziomu-terminala/</link>
		<comments>http://www.ubuntu-pomoc.org/mysql-wykonanie-kopii-zapasowej-z-poziomu-terminala/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 22:01:35 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[serwer]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=7961</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Narzędzie mysqldump pozwala na wykonanie kopii zapasowej bazy danych (niekoniecznie tej, znajdującej się na hoście lokalnym) z poziomu terminala. Schemat zapytania wygląda następująco: mysqldump -h adres_serwera -u użytkownik_bazy -p hasło_użytkownika baza_danych &#62; plik_wyjściowy.sql Przykład mysqldump -h localhost -u szmitas -p haslo123 ubuntu_pomoc &#62; kopia.sql Przywracanie z pliku: mysql -h adres_serwera -u użytkownik_bazy -p hasło_użytkownika baza_danych [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p>Narzędzie <b>mysqldump</b> pozwala na wykonanie kopii zapasowej bazy danych (niekoniecznie tej, znajdującej się na hoście lokalnym) z poziomu terminala. Schemat zapytania wygląda następująco:</p>
<pre>mysqldump -h <em>adres_serwera</em> -u <em>użytkownik_bazy</em> -p <em>hasło_użytkownika</em> <em>baza_danych</em> &gt; <em>plik_wyjściowy</em>.sql</pre>
<h3>Przykład</h3>
<pre>mysqldump -h localhost -u szmitas -p haslo123 ubuntu_pomoc &gt; kopia.sql</pre>
<h3>Przywracanie z pliku:</h3>
<pre>mysql -h <em>adres_serwera</em> -u <em>użytkownik_bazy</em> -p <em>hasło_użytkownika</em> <em>baza_danych</em> &lt; <em>plik_wyjściowy</em>.sql</pre>
<h3>Przykład:</h3>
<p><span id="more-7961"></span>
<pre>mysql -h localhost -u szmitas -p haslo123 ubuntu_pomoc &lt; kopia.sql</pre>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/zrestartowanie-hasla-uzytkownika-root-d-bazy-mysql/" title="Zrestartowanie hasła użytkownika root do bazy MySQL">Zrestartowanie hasła użytkownika root do bazy MySQL</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/zmiana-wersji-javy-uzywanej-w-terminalu/" title="Zmiana wersji Javy używanej w terminalu">Zmiana wersji Javy używanej w terminalu</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/cron-automatyzacja-systemu/" title="Cron &#8211; automatyzacja systemu">Cron &#8211; automatyzacja systemu</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/konfiguracja-laptopa-asus-u36sd/" title="Konfiguracja laptopa Asus U36SD">Konfiguracja laptopa Asus U36SD</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/ubuntu-server-jako-nas-i-serwer-udostepniajacy-wiele-uslug-%e2%80%93-instalacja-cz-1/" title="Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1">Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/mysql-wykonanie-kopii-zapasowej-z-poziomu-terminala/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Apache2] Aktywacja mod_rewrite na serwerze</title>
		<link>http://www.ubuntu-pomoc.org/apache2-aktywacja-mod_rewrite-na-serwerze/</link>
		<comments>http://www.ubuntu-pomoc.org/apache2-aktywacja-mod_rewrite-na-serwerze/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 22:01:14 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[serwer]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=7938</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Na początek upewnij się, że odblokowałeś nadpisywanie globalnych ustawień - opis znajdziesz tutaj: [Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień. Jeśli wszystko jest w porządku, otwórz terminal i wydaj polecenie aktywujące mod_rewrite: sudo a2enmod rewrite Teraz restart serwera: sudo /etc/init.d/apache2 restart I wszystko działa jak należy. Źródło: [Ubuntu, Apache2, mod_rewrite] Nie działający mod_rewrite Zobacz także:[Apache2] Wyłączenie [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p>Na początek upewnij się, że odblokowałeś nadpisywanie globalnych ustawień - opis znajdziesz tutaj: <a href="http://www.ubuntu-pomoc.org/apache2-wylaczenie-blokowania-nadpisywania-globalnych-ustawien" target="_blank">[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień</a>.</p>
<p>Jeśli wszystko jest w porządku, otwórz terminal i wydaj polecenie aktywujące mod_rewrite:</p>
<pre>sudo a2enmod rewrite</pre>
<p>Teraz restart serwera:</p>
<pre>sudo /etc/init.d/apache2 restart</pre>
<p>I wszystko działa jak należy.<br />
<span id="more-7938"></span>
<div class="infoblock"><b>Źródło:</b> <a href="http://kamilskowron.pl/pl/linux/ubuntu-apache2-mod_rewrite-nie-dzialajacy-mod_rewrite/" target="_blank">[Ubuntu, Apache2, mod_rewrite] Nie działający mod_rewrite</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/apache2-wylaczenie-blokowania-nadpisywania-globalnych-ustawien/" title="[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień">[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/lamp-na-ubuntu-11-04/" title="LAMP na Ubuntu 11.04">LAMP na Ubuntu 11.04</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/ubuntu-server-jako-nas-i-serwer-udostepniajacy-wiele-uslug-%e2%80%93-instalacja-cz-1/" title="Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1">Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/mysql-wykonanie-kopii-zapasowej-z-poziomu-terminala/" title="[MySQL] Wykonanie kopii zapasowej z poziomu terminala">[MySQL] Wykonanie kopii zapasowej z poziomu terminala</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/polaczenie-za-pomoca-protokolu-webdav/" title="Połączenie za pomocą protokołu WebDAV">Połączenie za pomocą protokołu WebDAV</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/apache2-aktywacja-mod_rewrite-na-serwerze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień</title>
		<link>http://www.ubuntu-pomoc.org/apache2-wylaczenie-blokowania-nadpisywania-globalnych-ustawien/</link>
		<comments>http://www.ubuntu-pomoc.org/apache2-wylaczenie-blokowania-nadpisywania-globalnych-ustawien/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 22:01:10 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[serwer]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=7934</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Domyślna instalacja Apache2 jest tak skonfigurowana, że blokuje nadpisywanie globalnych ustawień przez pliki .htaccess. Aby wyłączyć blokadę, otwórz terminal i wydaj polecenie: sudo gedit /etc/apache2/sites-available/default Odszukaj takie dwie linijki: AllowOverride None i zamień na: AllowOverride All Zapisz plik (Ctrl + S) i zrestartuj Apache: sudo /etc/init.d/apache2 restart Źródło: [Ubuntu, Apache2, mod_rewrite] Nie działający mod_rewrite Zobacz [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p>Domyślna instalacja <b>Apache2</b> jest tak skonfigurowana, że blokuje nadpisywanie globalnych ustawień przez pliki <strong>.htaccess</strong>. </p>
<p>Aby wyłączyć blokadę, otwórz terminal i wydaj polecenie:</p>
<pre>sudo gedit /etc/apache2/sites-available/default</pre>
<p>Odszukaj takie dwie linijki:</p>
<pre>AllowOverride None</pre>
<p>i zamień na:</p>
<pre>AllowOverride All</pre>
<p>Zapisz plik (<span class="key">Ctrl</span> + <span class="key">S</span>) i zrestartuj Apache:</p>
<pre>sudo /etc/init.d/apache2 restart</pre>
<p><span id="more-7934"></span>
<div class="infoblock"><b>Źródło:</b> <a href="http://kamilskowron.pl/pl/linux/ubuntu-apache2-mod_rewrite-nie-dzialajacy-mod_rewrite/" target="_blank">[Ubuntu, Apache2, mod_rewrite] Nie działający mod_rewrite</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/apache2-aktywacja-mod_rewrite-na-serwerze/" title="[Apache2] Aktywacja mod_rewrite na serwerze">[Apache2] Aktywacja mod_rewrite na serwerze</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/lamp-na-ubuntu-11-04/" title="LAMP na Ubuntu 11.04">LAMP na Ubuntu 11.04</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/ubuntu-server-jako-nas-i-serwer-udostepniajacy-wiele-uslug-%e2%80%93-instalacja-cz-1/" title="Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1">Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/mysql-wykonanie-kopii-zapasowej-z-poziomu-terminala/" title="[MySQL] Wykonanie kopii zapasowej z poziomu terminala">[MySQL] Wykonanie kopii zapasowej z poziomu terminala</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/polaczenie-za-pomoca-protokolu-webdav/" title="Połączenie za pomocą protokołu WebDAV">Połączenie za pomocą protokołu WebDAV</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/apache2-wylaczenie-blokowania-nadpisywania-globalnych-ustawien/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kompilacja komunikatora Kadu</title>
		<link>http://www.ubuntu-pomoc.org/kompilacja-komunikatora-kadu/</link>
		<comments>http://www.ubuntu-pomoc.org/kompilacja-komunikatora-kadu/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 18:01:38 +0000</pubDate>
		<dc:creator>Michał Kasprzak</dc:creator>
				<category><![CDATA[Aplikacje - instalacja]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[instalacja]]></category>
		<category><![CDATA[kadu]]></category>
		<category><![CDATA[kompilacja]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=7687</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Dziś, raczej jako ciekawostkę, opiszę kompilację i instalację Kadu, krok po kroku. Potrzebne jest to, gdy np. chcemy przetestować wersję beta, której nie ma w repozytorium. Najpierw instalujemy odpowiednie zależności: sudo apt-get install build-essential cmake libqt4-dev libx11-dev libxss-dev libxfixes-dev libntrack-qt4-dev libgadu-dev libqca2-dev libqca2-plugin-ossl libindicate-qt-dev zlib1g-dev libidn11-dev libmpdclient-dev libphonon-dev libsndfile1-dev libaspell-dev libqt4-sql-sqlite Teraz pobieramy paczkę ze [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p>Dziś, raczej jako ciekawostkę, opiszę kompilację i instalację Kadu, krok po kroku. Potrzebne jest to, gdy np. chcemy przetestować wersję beta, której nie ma w repozytorium.</p>
<div class="wp-caption aligncenter" style="width: 410px"><a href="/obrazki/kompilacja-komunikatora-kadu/oprogramie.png" title="O programie"><img src="/obrazki/kompilacja-komunikatora-kadu/oprogramie.png" width="400" alt="Kompilacja komunikatora Kadu" /></a><p class="wp-caption-text">O programie - Kadu skompilowane pod Ubuntu 11.10</p></div>
<ol>
<li>Najpierw instalujemy odpowiednie zależności:
<pre>sudo apt-get install build-essential cmake libqt4-dev libx11-dev libxss-dev libxfixes-dev libntrack-qt4-dev libgadu-dev libqca2-dev libqca2-plugin-ossl libindicate-qt-dev zlib1g-dev libidn11-dev libmpdclient-dev libphonon-dev libsndfile1-dev libaspell-dev libqt4-sql-sqlite</pre>
</li>
<li>Teraz pobieramy paczkę ze źródłami Kadu, a następnie ją wypakowujemy:<span id="more-7687"></span>
<pre>wget http://download.kadu.im/stable/kadu-0.10.0.tar.bz2
tar xjf kadu-0.10.0.tar.bz2
</pre>
</li>
<li>Przechodzimy do katalogu z wypakowanymi plikami, tworzymy folder, w którym zbudujemy Kadu, a następnie wchodzimy do niego:
<pre>cd kadu-0.10.0
mkdir build
cd build</pre>
</li>
<li>Teraz wstępnie przygotowujemy Kadu do kompilacji:
<pre>cmake ..</pre>
<div class="attentionblock">W powyższym kodzie po <em>cmake</em> jest spacja i <strong>..</strong> (dwie kropki)!</div>
</li>
<li>Teraz kompilujemy Kadu:
<pre>make</pre>
<p>Czas kompilacji zależny jest od mocy jednostki, na której dokonujemy tej operacji.</li>
<li>No i na końcu instalujemy Kadu:
<pre>sudo make install</pre>
</li>
<li>To wszystko. Kadu jest skompilowane i zainstalowane. Aby usunąć pozostałości po kompilacji należy wpisać do terminala:
<pre>cd &amp;&amp; rm -rv kadu-0.10.0 kadu-0.10.0.tar.bz2</pre>
</li>
</ol>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/kompilacja-i-instalacja-najnowszej-wersji-jadra-kernela/" title="Kompilacja i instalacja najnowszej wersji jądra (kernela) na przykładzie 3.1.7">Kompilacja i instalacja najnowszej wersji jądra (kernela) na przykładzie 3.1.7</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/operation-not-possible-due-to-rf-kill/" title="Operation not possible due to RF-kill">Operation not possible due to RF-kill</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/instalacja-emotikon-z-gadu-gadu-10-w-kadu/" title="Instalacja emotikon z Gadu-Gadu 10 w Kadu">Instalacja emotikon z Gadu-Gadu 10 w Kadu</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/ubuntu-10-04-11-04-instalacja-najnowszej-wersji-multikomunikatora-kadu/" title="[Ubuntu 10.04 - 11.04] Instalacja najnowszej wersji multikomunikatora Kadu">[Ubuntu 10.04 - 11.04] Instalacja najnowszej wersji multikomunikatora Kadu</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/instalacja-kadu-0-9-0/" title="Instalacja Kadu 0.9.0">Instalacja Kadu 0.9.0</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/kompilacja-komunikatora-kadu/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Autostart skryptów wymagających praw roota</title>
		<link>http://www.ubuntu-pomoc.org/autostart-skryptow-wymagajacych-praw-roota/</link>
		<comments>http://www.ubuntu-pomoc.org/autostart-skryptow-wymagajacych-praw-roota/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 22:01:11 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[skrypt]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=7005</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="System" /><br/>Załóżmy taką sytuację... Mamy przygotowany skrypt o nazwie moj_skrypt, który: chcemy uruchomić wraz ze startem systemu, wykonuje polecenia wymagające praw roota. Niestety tradycyjny autostart takiego programu jest niemożliwy, właśnie ze względu na konieczność weryfikacji użytkownika. Istnieje jednak proste rozwiązanie, dzięki któremu obejdziemy ten proces. Dodanie pliku do autostartu Dobrym rozwiązaniem jest utworzenie skryptu, który wywoływać [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="System" /><br/><h3>Załóżmy taką sytuację...</h3>
<p>Mamy przygotowany skrypt o nazwie moj_skrypt, który:</p>
<ul>
<li>chcemy uruchomić wraz ze startem systemu,
<li>wykonuje polecenia wymagające praw roota.
</ul>
<p>Niestety tradycyjny autostart takiego programu jest niemożliwy, właśnie ze względu na konieczność weryfikacji użytkownika. Istnieje jednak proste rozwiązanie, dzięki któremu obejdziemy ten proces.</p>
<h2>Dodanie pliku do autostartu</h2>
<p>Dobrym rozwiązaniem jest utworzenie skryptu, który wywoływać będzie skrypt główny. Otwórz terminal i wydaj polecenie:</p>
<pre>sudo gedit /etc/init.d/skrypt</pre>
<p>Wklej do niego poniższy kod (odpowiednio uzupełniony):<span id="more-7005"></span></p>
<pre>#!/bin/bash
# Skrypt uruchamiający plik moj_skrypt.sh
cd /ścieżka/do/skryptu/głównego
./moj_skrypt.sh
</pre>
<p>Zapisz zmiany (<span class="key">Ctrl</span> + <span class="key">S</span>). Nadaj utworzonemu skryptowi prawa do uruchamiania:</p>
<pre> sudo chmod +x /etc/init.d/skrypt</pre>
<p>Na koniec polecenie:</p>
<pre>update-rc.d skrypt defaults</pre>
<p>I gotowe.</p>
<p>Oczywiście nie jest konieczne tworzenie dodatkowego skryptu! Wystarczy główny skrypt wrzucić do katalogu <b>/etc/init.d</b>, nadać prawa do uruchamiania jako program, a następnie wydać polecenie:</p>
<pre>update-rc.d moj_skrypt defaults</pre>
<h2>Jak usunąć taki plik?</h2>
<ol>
<li>Usuń plik z katalogu <strong>/etc/init.d/</strong>
<li>Wydaj polecenie:
<pre>update-rc.d moj_skrypt remove</pre>
</ol>
<div class="infoblock"><b>Źródło:</b> <a href="http://www.ubuntu-howto.info/howto/how-to-execute-a-command-program-or-script-at-startup-init-mini-howto" target="_blank">www.ubuntu-howto.info</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/ubuntu-11-10-opcja-tworzenia-aktywatorow-w-menu-kontekstowym-prawego-przycisku-myszy/" title="[Ubuntu 11.10] Opcja tworzenia aktywatorów w menu kontekstowym prawego przycisku myszy">[Ubuntu 11.10] Opcja tworzenia aktywatorów w menu kontekstowym prawego przycisku myszy</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kde-dodanie-opcji-uruchom-w-terminalu-do-menu-kontekstowego/" title="[KDE] Dodanie opcji &#8222;Uruchom w terminalu&#8221; do menu kontekstowego">[KDE] Dodanie opcji &#8222;Uruchom w terminalu&#8221; do menu kontekstowego</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/cron-automatyzacja-systemu/" title="Cron &#8211; automatyzacja systemu">Cron &#8211; automatyzacja systemu</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/xdotool-symulacja-skrotow-klawiszowych-z-poziomu-terminala/" title="xdotool &#8211; symulacja skrótów klawiszowych z poziomu terminala">xdotool &#8211; symulacja skrótów klawiszowych z poziomu terminala</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/konfiguracja-notebooka-asus-n53/" title="Konfiguracja notebooka Asus N53">Konfiguracja notebooka Asus N53</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/autostart-skryptow-wymagajacych-praw-roota/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[LAMP] Zmiana katalogu ze stroną WWW i dodawanie subdomeny</title>
		<link>http://www.ubuntu-pomoc.org/lamp-zmiana-katalogu-ze-strona-www-i-dodawanie-subdomeny/</link>
		<comments>http://www.ubuntu-pomoc.org/lamp-zmiana-katalogu-ze-strona-www-i-dodawanie-subdomeny/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 22:01:42 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Aplikacje - konfiguracja]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[serwer]]></category>
		<category><![CDATA[sieć]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=6304</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - konfiguracja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Jest to artykuł konkursowy nadesłany do nas przez Rafała D. Ostatnimi czasy pojawił się wpis o instalacji LAMP'a (Linux Apache Mysql PHP), wielu z Was – w tym także mnie - zaciekawiła możliwość tworzenia stron bez umieszczania ich na zewnętrznym serwerze. W tym poradniku, na przykładzie Ubuntu 11.04, pokażę jak zmienić domyślny katalog stron WWW, [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - konfiguracja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><div class="infoblock">Jest to artykuł <a href="http://www.ubuntu-pomoc.org/konkurs-wygraj-zakupy-w-sklepie-kingbit-multimedia/" target="_blank">konkursowy</a> nadesłany do nas przez <strong>Rafała D</strong>.</div>
<p>Ostatnimi czasy pojawił się wpis o instalacji LAMP'a (<strong>L</strong>inux <strong>A</strong>pache <strong>M</strong>ysql <strong>P</strong>HP), wielu z Was – w tym także mnie - zaciekawiła możliwość tworzenia stron bez umieszczania ich na zewnętrznym serwerze. W tym poradniku, na przykładzie Ubuntu 11.04, pokażę jak zmienić domyślny katalog stron WWW, a także dodawać subdomeny.</p>
<h2>Zmiana katalogu ze stroną WWW</h2>
<ol>
<li>Uruchom terminal i otwórz plik z konfiguracją swojej domyślnej strony wpisując:<span id="more-6304"></span>
<pre>sudo gedit /etc/apache2/sites-available/default</pre>
<p>Otworzyliśmy plik konfiguracyjny strony, która będzie dostępna po wpisaniu w przeglądarkę <strong>http://localhost</strong>. Aby zmienić katalog naszej strony należy w liniach</p>
<pre>DocumentRoot /var/www/</pre>
<p>oraz</p>
<pre>&lt;Directory /var/www/&gt;</pre>
<p>zmienić ścieżkę katalogu, np. <strong>/home/user/public_html/</strong>.</p>
<li>Zrestartuj apache poleceniem:
<pre>sudo /etc/init.d/apache2 restart</pre>
</ol>
<p><strong>Gotowe!</strong></p>
<h2>Dodanie subdomeny</h2>
<ol>
<li>Otwórz plik konfiguracyjny wpisując w terminalu
<pre>sudo gedit /etc/hosts</pre>
<p>i dodaj do niego linię:</p>
<pre>127.0.0.1 sub.localhost</pre>
<li>Stwórz plik konfiguracyjny dla strony sub.localhost:
<pre>sudo gedit /etc/apache2/sites-available/sub</pre>
<li>Skopiuj zawartość pliku <strong>default</strong> do <strong>sub</strong>
<li>Zmień położenie folderu ze stroną poprzez edycję linii <strong>DocumentRoot</strong> a także <strong>&lt;Directory /home/user/public_html/&gt;</strong>, np. <strong>/home/user/public_html/sub/</strong>
<li>W linii:
<pre>Options Indexes FollowSymLinks MultiViews</pre>
<p>dodaj:</p>
<pre>+Includes</pre>
<li>Dodaj linię:
<pre>ServerName sub.localhost</pre>
<li>Zapisz i zamknij plik.
<li>Dodaj stronę do apache poleceniem:
<pre>sudo a2ensite sub</pre>
<li>Zrestartuj apache poleceniem:
<pre>sudo /etc/init.d/apache2 restart</pre>
</ol>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/lamp-na-ubuntu-11-04/" title="LAMP na Ubuntu 11.04">LAMP na Ubuntu 11.04</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/instalacja-apache-php5-mysql/" title="Instalacja Apache + PHP5 + MySQL">Instalacja Apache + PHP5 + MySQL</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/obsluga-php4php5-na-wlasnym-serwerze/" title="Obsługa PHP4/PHP5 na własnym serwerze">Obsługa PHP4/PHP5 na własnym serwerze</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/mysql-wykonanie-kopii-zapasowej-z-poziomu-terminala/" title="[MySQL] Wykonanie kopii zapasowej z poziomu terminala">[MySQL] Wykonanie kopii zapasowej z poziomu terminala</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/apache2-aktywacja-mod_rewrite-na-serwerze/" title="[Apache2] Aktywacja mod_rewrite na serwerze">[Apache2] Aktywacja mod_rewrite na serwerze</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/lamp-zmiana-katalogu-ze-strona-www-i-dodawanie-subdomeny/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apache pobiera pliki PHP zamiast je otwierać</title>
		<link>http://www.ubuntu-pomoc.org/apache-pobiera-pliki-php-zamiast-je-otwierac/</link>
		<comments>http://www.ubuntu-pomoc.org/apache-pobiera-pliki-php-zamiast-je-otwierac/#comments</comments>
		<pubDate>Tue, 24 May 2011 22:01:57 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=5463</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Problem Przy próbie otworzenia plików znajdujących się na serwerze, następuje ich pobieranie na dysk twardy - zamiast wyświetlenia. Rozwiązanie Otwórz terminal i wydaj polecenie: sudo gedit /etc/apache2/httpd.conf Umieść w pliku następujący kod: AddType application/x-httpd-php .php AddType application/x-httpd-php .php3 AddType application/x-httpd-php .php4 AddType application/x-httpd-php .phtml Zrestartuj Apache: sudo /etc/init.d/apache2 restart Źródło: forum.php.pl Zobacz także:LAMP na Ubuntu [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><h2>Problem</h2>
<p>Przy próbie otworzenia plików znajdujących się na serwerze, następuje ich pobieranie na dysk twardy - zamiast wyświetlenia.</p>
<h2>Rozwiązanie</h2>
<p>Otwórz terminal i wydaj polecenie:</p>
<pre>sudo gedit /etc/apache2/httpd.conf</pre>
<p>Umieść w pliku następujący kod:</p>
<pre>AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .phtml</pre>
<p>Zrestartuj <strong>Apache</strong>:</p>
<pre>sudo /etc/init.d/apache2 restart</pre>
<p><span id="more-5463"></span>
<div class="infoblock"><b>Źródło:</b> <a href="http://forum.php.pl/index.php?showtopic=106664" target="_blank">forum.php.pl</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/lamp-na-ubuntu-11-04/" title="LAMP na Ubuntu 11.04">LAMP na Ubuntu 11.04</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/instalacja-apache-php5-mysql/" title="Instalacja Apache + PHP5 + MySQL">Instalacja Apache + PHP5 + MySQL</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/apache2-aktywacja-mod_rewrite-na-serwerze/" title="[Apache2] Aktywacja mod_rewrite na serwerze">[Apache2] Aktywacja mod_rewrite na serwerze</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/apache2-wylaczenie-blokowania-nadpisywania-globalnych-ustawien/" title="[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień">[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/lamp-zmiana-katalogu-ze-strona-www-i-dodawanie-subdomeny/" title="[LAMP] Zmiana katalogu ze stroną WWW i dodawanie subdomeny">[LAMP] Zmiana katalogu ze stroną WWW i dodawanie subdomeny</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/apache-pobiera-pliki-php-zamiast-je-otwierac/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex SDK, czyli ActionScript3 na Ubuntu</title>
		<link>http://www.ubuntu-pomoc.org/flex-sdk-czyli-actionscript3-na-ubuntu/</link>
		<comments>http://www.ubuntu-pomoc.org/flex-sdk-czyli-actionscript3-na-ubuntu/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 22:01:39 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Aplikacje - instalacja]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[instalacja]]></category>
		<category><![CDATA[konfiguracja]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=4887</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Flex SDK to oprogramowanie, które pozwala na kompilację programów napisanych w języku ActionScript 3. Pierwszym krokiem jest pobranie paczki z programem ze strony download.macromedia.com. Utwórz katalog, w którym przechowasz rozpakowaną paczkę: sudo mkdir /opt/flex Otwórz terminal i przejdź do katalogu, w którym znajduje się flex_sdk_4.1.zip. Następnie przenieś plik do utworzonego wcześniej katalogu: sudo mv flex_sdk_4.1.zip [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p><strong>Flex SDK</strong> to oprogramowanie, które pozwala na kompilację programów napisanych w języku <strong>ActionScript 3</strong>.</p>
<p>Pierwszym krokiem jest pobranie paczki z programem ze strony <a href="http://download.macromedia.com/pub/flex/sdk/flex_sdk_4.1.zip" target="_blank"><strong>download.macromedia.com</strong></a>. </p>
<p>Utwórz katalog, w którym przechowasz rozpakowaną paczkę:</p>
<pre>sudo mkdir /opt/flex</pre>
<p>Otwórz terminal i przejdź do katalogu, w którym znajduje się <strong>flex_sdk_4.1.zip</strong>. Następnie przenieś plik do utworzonego wcześniej katalogu:</p>
<pre>sudo mv flex_sdk_4.1.zip /opt/flex</pre>
<p>Rozpakuj plik:<span id="more-4887"></span></p>
<pre>sudo unzip /opt/flex/flex_sdk_4.1.zip</pre>
<p>I nadaj katalogowi odpowiednie uprawnienia:</p>
<pre>sudo chmod -R 755 /opt/flex/</pre>
<p>Teraz musisz dodać ścieżkę <strong>/opt/flex/bin </strong>do ścieżki przeszukiwania <strong>PATH</strong>:</p>
<pre>gedit ~/.bashrc</pre>
<p>I dodaj na końcu linijkę:</p>
<pre>export PATH=/opt/flex/bin:$PATH</pre>
<p>Na koniec:</p>
<pre>. ~/.bashrc</pre>
<p>Jeśli wszystko wyszło poprawnie, to polecenie:</p>
<pre>mxmlc -help</pre>
<p>powinno dać rezultat:</p>
<pre>Adobe Flex Compiler (mxmlc)
Version 4.1.0 build 16076
Copyright (c) 2004-2009 Adobe Systems, Inc. All rights reserved.

-help [keyword] [...]
    For information on command line syntax and descriptions of
    configuration variables, specify a search string, or one of the
    following special keywords:
       syntax   - describe the general syntax of the command line
       list     - show a list of all basic configuration variables
       advanced - also match advanced configuration variables
       aliases  - sort using the short alias for the variable
       details  - always display the full details for each item
    Any other help keyword provided is used to match a full or partial
    configuration variable, alias, or text to search for in the
    description of the configuration variable.

    For example, '-help advanced aliases foo' would show all
    configuration options (both basic and advanced) containing the text
    'foo', sorted by alias name.

    In the description of individual configuration variables, required
    values are marked with angle brackets, and optional values are marked
    with square brackets.  The notation [...] is used to indicate that
    the values are a list of arbitrary length.
</pre>
<p>Teraz już z górki. Utwórz plik <b>HelloWorld.as</b>:</p>
<pre>gedit ~/HelloWorld.as</pre>
<p>Umieść w nim kod:</p>
<pre>package {
    import flash.display.Sprite;
    import flash.text.TextField;

    public class HelloWorld extends Sprite {

        public function HelloWorld() {
            var display_txt:TextField = new TextField();
            display_txt.text = "Hello World!";
            addChild(display_txt);
        }
    }
}</pre>
<p>Zapisz zmiany (<strong>CTRL+S</strong>) i skompiluj plik:</p>
<pre>mxmlc ~/HelloWorld.as</pre>
<p>Po chwili zostanie wygenerowany plik wynikowy w formacie <strong>*.swf</strong>.</p>
<div class="infoblock"><b>Źródło:</b> <a href="http://simpledistro.pl/actionscript3-i-flex-na-ubuntu/" target="_blank">simpledistro.pl</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/eclipse-instalacja-i-przygotowanie-do-pracy-z-jezykiem-cc/" title="Eclipse &#8211; instalacja i przygotowanie do pracy z językiem C/C++">Eclipse &#8211; instalacja i przygotowanie do pracy z językiem C/C++</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/nvidia-optimus-pod-linuksem-vol-2/" title="nVidia Optimus pod Linuksem vol. 2">nVidia Optimus pod Linuksem vol. 2</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/konfiguracja-laptopa-asus-u36sd/" title="Konfiguracja laptopa Asus U36SD">Konfiguracja laptopa Asus U36SD</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/instalacja-wbudowanej-kamery-w-notebooku-asus-f5rl-i-kompatybilnych/" title="Instalacja wbudowanej kamery w notebooku Asus F5RL (i kompatybilnych)">Instalacja wbudowanej kamery w notebooku Asus F5RL (i kompatybilnych)</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/unity-usuniecie-nazwy-uzytkownika-z-panelu-gornego-w-ubuntu-11-10/" title="[Unity] Usunięcie nazwy użytkownika z panelu górnego w Ubuntu 11.10">[Unity] Usunięcie nazwy użytkownika z panelu górnego w Ubuntu 11.10</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/flex-sdk-czyli-actionscript3-na-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tworzenie diagramu ER z kodu SQL</title>
		<link>http://www.ubuntu-pomoc.org/tworzenie-diagramu-er-z-kodu-sql/</link>
		<comments>http://www.ubuntu-pomoc.org/tworzenie-diagramu-er-z-kodu-sql/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 22:01:23 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Aplikacje - instalacja]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[instalacja]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=4813</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>SQLt/SQL::Translator/SQLFairy to aplikacja, która bardzo szybko wygeneruje dla Ciebie diagram ER z kodu SQL. Instalacja Otwórz terminal i wydaj polecenie: sudo apt-get install sqlfairy Użytkowanie Schemat polecenia konwertującego plik *.sql do diagramu ER: sqlt-diagram -d=MySQL -o=diagram.png plik.sql --color Oczywiście upewnij się, że podajesz poprawną ścieżkę do pliku z kodem! Przykład projekt.sql CREATE TABLE Ranks ( [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p><strong>SQLt/SQL::Translator/SQLFairy</strong> to aplikacja, która bardzo szybko wygeneruje dla Ciebie diagram ER z kodu SQL.</p>
<h2>Instalacja</h2>
<p>Otwórz terminal i wydaj polecenie:</p>
<pre>sudo apt-get install sqlfairy</pre>
<h2>Użytkowanie</h2>
<p>Schemat polecenia konwertującego plik *.sql do diagramu ER:</p>
<pre>sqlt-diagram -d=MySQL -o=diagram.png plik.sql --color</pre>
<p>Oczywiście upewnij się, że podajesz poprawną ścieżkę do pliku z kodem!<br />
<span id="more-4813"></span></p>
<h2>Przykład</h2>
<p><strong>projekt.sql</strong></p>
<pre>CREATE TABLE Ranks (

	id INT PRIMARY KEY,
	name string UNIQUE
);

CREATE TABLE Users (

	id INT NOT NULL PRIMARY KEY,
	login string UNIQUE,
	first_name string NOT NULL,
	last_name string NOT NULL,
	rank_id INT REFERENCES Ranks(id),
	email string UNIQUE,
	register_date CHAR(10) NOT NULL
);

CREATE TABLE Categories (

	id INT NOT NULL PRIMARY KEY,
	name string UNIQUE
);

CREATE TABLE Posts (

	post_id INT NOT NULL PRIMARY KEY,
	author_id INT REFERENCES Users(id),
	category_id INT REFERENCES Categories(id),
	post_date CHAR(10) NOT NULL,
	comments INT NOT NULL,
	rate INT NOT NULL
);</pre>
<p><strong>Diagram tworzę poleceniem:</strong></p>
<pre>sqlt-diagram -d=MySQL -o=diagram.png projekt.sql --color</pre>
<p><b>Efekt</b><br />
<div class="wp-caption alignnone" style="width: 410px"><a href="/obrazki/er/er.png" title="Utworzony diagram ER"><img src="/obrazki/er/er.png" width="400" alt="Tworzenie diagramu ER z kodu SQL" /></a><p class="wp-caption-text">Utworzony diagram ER</p></div></p>
<div class="infoblock"><b>Źródło:</b> <a href="http://techmania.wordpress.com/2008/06/09/creating-er-diagrams-from-sql/" target="_blank">techmania.wordpress.com</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/mysql-wykonanie-kopii-zapasowej-z-poziomu-terminala/" title="[MySQL] Wykonanie kopii zapasowej z poziomu terminala">[MySQL] Wykonanie kopii zapasowej z poziomu terminala</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/flex-sdk-czyli-actionscript3-na-ubuntu/" title="Flex SDK, czyli ActionScript3 na Ubuntu">Flex SDK, czyli ActionScript3 na Ubuntu</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/geany-lekkie-zintegrowane-srodowisko-programistyczne/" title="Geany &#8211; lekkie zintegrowane środowisko programistyczne">Geany &#8211; lekkie zintegrowane środowisko programistyczne</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/instalacja-apache-php5-mysql/" title="Instalacja Apache + PHP5 + MySQL">Instalacja Apache + PHP5 + MySQL</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/programowanie-w-prologu/" title="Programowanie w Prologu">Programowanie w Prologu</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/tworzenie-diagramu-er-z-kodu-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń</title>
		<link>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-6-obliczanie-wyrazen/</link>
		<comments>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-6-obliczanie-wyrazen/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 23:01:48 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Kursy]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[kurs]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=4245</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>W szóstej części kursu Programowanie w powłoce przedstawię operatory arytmetyczne. Operatory arytmetyczne Operator Działanie +, - dodawanie i odejmowanie !, ~ logiczna i bitowa negacja ** potęga *, /, % mnożenie, dzielenie, reszta z dzielenia &#60;&#60;, &#62;&#62; przesunięcie bitowe &#60;=, &#62;=, &#60;, &#62;, ==, != porównania &#38;, ^, &#124; bitowe AND, XOR oraz OR &#38;&#38;, [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p>W szóstej części kursu <b>Programowanie w powłoce</b> przedstawię operatory arytmetyczne.</p>
<table border="1" cellpadding="5" width="80%" rules="all" align="center" bordercolor="#ffffff">
<tbody>
<tr align="center" valign="middle">
<td colspan="2" bgcolor="#c90016"><b><span style="color: white; font-size: small;">Operatory arytmetyczne</span></b></td>
</tr>
<tr align="center" valign="middle">
<td width="30%" bgcolor="#c90016"><b><span style="color: white;">Operator</span></b></td>
<td width="70%" bgcolor="#c90016"><b><span style="color: white;">Działanie</span></b></td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">+, -</td>
<td width="90%" align="left" bgcolor="#ffbc2d">dodawanie i odejmowanie</td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">!, ~</td>
<td width="90%" align="left" bgcolor="#ffbc2d">logiczna i bitowa negacja</td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">**</td>
<td width="90%" align="left" bgcolor="#ffbc2d">potęga</td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">*, /, %</td>
<td width="90%" align="left" bgcolor="#ffbc2d">mnożenie, dzielenie, reszta z dzielenia</td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">&lt;&lt;, &gt;&gt;</td>
<td width="90%" align="left" bgcolor="#ffbc2d">przesunięcie bitowe</td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">&lt;=, &gt;=, &lt;, &gt;, ==, !=</td>
<td width="90%" align="left" bgcolor="#ffbc2d">porównania</td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">&amp;, ^, |</td>
<td width="90%" align="left" bgcolor="#ffbc2d">bitowe AND, XOR oraz OR</td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">&amp;&amp;, ||</td>
<td width="90%" align="left" bgcolor="#ffbc2d">logiczne AND oraz OR</td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">wyrażenie1?wyrażenie2:wyrażenie3</td>
<td width="90%" align="left" bgcolor="#ffbc2d">wyrażenie warunkowe</td>
</tr>
<tr align="center" valign="middle">
<td width="10%" bgcolor="#ffbc2d">=, +=, -=, *=, /=, %=, &lt;&lt;=, &gt;&gt;=, &amp;=, ^=, |=</td>
<td width="90%" align="left" bgcolor="#ffbc2d">przypisania</td>
</tr>
</tbody>
</table>
<h2><b>Przykłady</b></h2>
<p>Poniższy trywialny skrypt pokazuje zastosowanie operatorów:<span id="more-4245"></span></p>
<pre>#!/bin/bash

x=1

echo "Wartość zmiennej x=$x"
echo -n "Dodajemy 2"
x=$[x+2] # operator +
echo ", x=$x"
echo -n "Dodajemy 2, ale innym sposobem"
x=$[x+=2] # operator +=
echo ", x=$x"
echo -n "Podnosimy do potęgi trzeciej"
x=$[x**3] # operator **
echo ", x=$x"
echo -n "I dzielimy przez 25"
x=$[x/=25] # operator /=
echo ", x=$x"
echo -n "I na koniec wypiszemy resztę z dzielenia przez 3"
x=$[x%3] # operator %
echo ", x=$x"

exit 0</pre>
<p><b>Rezultat:</b></p>
<pre>Wartość zmiennej x=1
Dodajemy 2, x=3
Dodajemy 2, ale innym sposobem, x=5
Podnosimy do potęgi trzeciej, x=125
I dzielimy przez 25, x=5
I na koniec wypiszemy resztę z dzielenia przez 3, x=2</pre>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-5-strumienie-potoki-i-filtry/" title="[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry">[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-4-petle/" title="[KURS] Programowanie w powłoce #4 &#8211; pętle">[KURS] Programowanie w powłoce #4 &#8211; pętle</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-3-instrukcje-warunkowe/" title="[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe">[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-2-zmienne/" title="[KURS] Programowanie w powłoce #2 &#8211; zmienne">[KURS] Programowanie w powłoce #2 &#8211; zmienne</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-1/" title="[KURS] Programowanie w powłoce #1">[KURS] Programowanie w powłoce #1</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-6-obliczanie-wyrazen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry</title>
		<link>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-5-strumienie-potoki-i-filtry/</link>
		<comments>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-5-strumienie-potoki-i-filtry/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 23:01:53 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Kursy]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[kurs]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=4195</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Nadszedł czas na kolejną część kursu Programowanie w powłoce. Dzisiaj przedstawię podstawowe informacje dotyczące strumieni, potoków oraz filtrów. Strumienie Procesy w systemie korzystają z trzech strumieni: stdin - standardowe wejście (deskryptor 0) - przeważnie jest to klawiatura komputera. stdout - standardowe wyjście (deskryptor 1) - przeważnie jest to monitor komputera, stderr - standardowe wyjście błędów [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p>Nadszedł czas na kolejną część kursu <b>Programowanie w powłoce</b>. Dzisiaj przedstawię podstawowe informacje dotyczące <b>strumieni, potoków oraz filtrów</b>.</p>
<h2><b>Strumienie</b></h2>
<p>Procesy w systemie korzystają z trzech strumieni:</p>
<ul>
<li style="text-align: left;"> <b>stdin</b> - standardowe wejście (deskryptor 0) - przeważnie jest to klawiatura komputera.</li>
<li style="text-align: left;"> <b>stdout</b> - standardowe wyjście (deskryptor 1) - przeważnie jest to monitor komputera,</li>
<li style="text-align: left;"> <b>stderr</b> - standardowe wyjście błędów (deskryptor 2) - przeważnie jest to monitor komputera.</li>
</ul>
<p>Do przekierowania używa się znaku <b>&gt;</b> poprzedzonego odpowiednim <b>deskryptorem</b> np.:</p>
<pre>szmitas@szmitas-ubuntu:~$ cat plik_ktorego_nie_ma.txt 2&gt; bledy.txt
szmitas@szmitas-ubuntu:~$ cat bledy.txt
cat: plik_ktorego_nie_ma.txt: No such file or directory<span id="more-4195"></span></pre>
<p><b>Krótka analiza:</b> poleceniem <b>cat</b> próbuję wyświetlić zawartość pliku, który nie istnieje - czyli wystąpi błąd, który zostaje wyłapany (<b>2&gt;</b>) i przekierowany do pliku tekstowego o nazwie <b>bledy.txt</b>.<br />
Inny przykład:</p>
<pre>szmitas@szmitas-ubuntu:~/Pulpit/pliki$ ls &gt; lista.txt
szmitas@szmitas-ubuntu:~/Pulpit/pliki$ cat lista.txt
aMule
bieganie
filmy
gry
inne
lista.txt
programowanie
programy
sterowniki
wygląd
zdjęcia</pre>
<p>Rezultat polecenia <b>ls</b> przekierowuję do pliku tekstowego (<b>&gt;</b>).</p>
<div class="attentionblock">Uwaga! Operator <b>&gt;</b> powoduje nadpisanie pliku tekstowego. Aby dopisać informację do jego końca zastosuj <b>&gt;&gt;</b>.</div>
<p><b>Podsumowanie:</b></p>
<ul>
<li><b>polecenie 2&gt; plik</b> - powoduje wysłanie stderr do pliku o nazwie plik.</li>
<li><b>polecenie &lt; plik</b> - powoduje odczyt stdin z pliku o nazwie plik.</li>
<li><b>polecenie 2&gt;&gt; plik</b> - powoduje dopisanie stderr do pliku o nazwie plik.</li>
<li><b>polecenie &lt;&lt;r plik</b> - powoduje odczyt stdin z pliku, aż do znaku "r".</li>
</ul>
<h2><b>Potoki</b></h2>
<p>Potoki pozwalają na przesyłanie danych wyjściowych jednego polecenia, na wejście drugiego. Polecenia łączy się za pomocą operatora <b>|</b> zwanego "rurą" (ang. pipe).<br />
<b>Przykład:</b></p>
<pre>polecenie1 | polecenie2</pre>
<p>Wyjście (stdout) polecenia pierwszego zostanie przekazane na wejście (stdin) polecenia drugiego. Oczywiście potoki mogą być wielopoziomowe:</p>
<pre>polecenie1 | polecenie2 | polecenie3 | polecenie4</pre>
<p><b>Praktyczny przykład:</b></p>
<pre>szmitas@szmitas-ubuntu:~$ ls | wc -l
22</pre>
<p>Wyjście polecenia<b> ls </b>(wypisanie listy plików/katalogów) zostaje przekazane poleceniu <b>wc -l</b> (zliczającemu liczbę linii) - rezultat 22.</p>
<p>A teraz ulubione zadanko mojego wykładowcy:<br />
<b>Pytanie:</b> Jaki będzie wynik?</p>
<pre>tail -n 10 czytaj.to | head -n 10 | tail -n 3 | wc - w</pre>
<p>Odpowiedź pozostawiam każdemu z was. Konkretna zawartość pliku nie jest istotna (zakładamy jedynie, że istnieje) - liczy się tok myślenia <img src='http://www.ubuntu-pomoc.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2><b>Filtry</b></h2>
<p><b>Filtry</b> są poleceniami modyfikującymi w określony sposób informację wejściową i przekazującymi ją na wyjście. Filtr pobiera zawsze dane ze standardowego wejścia (stdin) i przesyła wyniki na standardowe wyjście (stdout). Można je więc łączyć z potokami np.</p>
<pre>cat ~/.xsession-errors | more</pre>
<p>Filtr <b>more</b> sprawia, że na ekranie zostanie wyświetlone tyle linii tekstu ile zmieści się na ekranie (tekst zostanie podzielony na strony).</p>
<p><b>Inne filtry:</b></p>
<ul>
<li>more,
<li>less,
<li>sort,
<li>grep.
</ul>
<div class="infoblock"><b>Źródło:</b> <a href="http://www.angelfire.com/linux/linuxguide/opis/spf.htm" target="_blank">www.angelfire.com</a>, <a href="http://jakilinux.org/konsola/strumienie-potoki-i-przekierowania/" target="_blank">jakilinux.org</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-6-obliczanie-wyrazen/" title="[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń">[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-4-petle/" title="[KURS] Programowanie w powłoce #4 &#8211; pętle">[KURS] Programowanie w powłoce #4 &#8211; pętle</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-3-instrukcje-warunkowe/" title="[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe">[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-2-zmienne/" title="[KURS] Programowanie w powłoce #2 &#8211; zmienne">[KURS] Programowanie w powłoce #2 &#8211; zmienne</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-1/" title="[KURS] Programowanie w powłoce #1">[KURS] Programowanie w powłoce #1</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-5-strumienie-potoki-i-filtry/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zrestartowanie hasła użytkownika root do bazy MySQL</title>
		<link>http://www.ubuntu-pomoc.org/zrestartowanie-hasla-uzytkownika-root-d-bazy-mysql/</link>
		<comments>http://www.ubuntu-pomoc.org/zrestartowanie-hasla-uzytkownika-root-d-bazy-mysql/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 23:01:37 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[serwer]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=3889</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Jeśli zapomniałeś hasła roota do bazy danych - nie przejmuj się, nie wszystko stracone! Dzięki kilku poleceniom ustawisz nowe hasło, a jeśli znowu je zapomnisz... możesz je zmienić kolejny raz Otwórz terminal i wydaj polecenie: sudo su Podaj swoje hasło i następnie zatrzymaj bazę: service mysqld stop Uruchom bazę w bezpiecznym trybie bez zabezpieczeń: mysqld_safe [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p>Jeśli zapomniałeś hasła roota do bazy danych - nie przejmuj się, nie wszystko stracone! Dzięki kilku poleceniom ustawisz nowe hasło, a jeśli znowu je zapomnisz... możesz je zmienić kolejny raz <img src='http://www.ubuntu-pomoc.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Otwórz terminal i wydaj polecenie:</p>
<pre>sudo su</pre>
<p>Podaj swoje hasło i następnie zatrzymaj bazę:</p>
<pre>service mysqld stop</pre>
<p>Uruchom bazę w bezpiecznym trybie bez zabezpieczeń:</p>
<pre>mysqld_safe —skip-grant-tables &#038;</pre>
<p>Zaloguj się na roota (nie potrzeba hasła):</p>
<pre>mysql -u root</pre>
<p>Wybierz bazę danych:</p>
<pre>use mysql;<span id="more-3889"></span></pre>
<p>Ustaw nowe hasło:</p>
<pre>update user set password=PASSWORD("<b>nowe_hasło</b>") where User='root';</pre>
<p>Załaduj ponownie przywileje:</p>
<pre>flush privileges;</pre>
<p>Zakończ konfigurację:</p>
<pre>quit</pre>
<p>I uruchom ponownie bazę:</p>
<pre>service mysqld start</pre>
<div class="infoblock"><b>Źródło:</b> <a href="http://centos.com.pl/2010/11/25/reset-hasla-uzytkownika-root-dla-mysql/" target="_blank">http://centos.com.pl</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/mysql-wykonanie-kopii-zapasowej-z-poziomu-terminala/" title="[MySQL] Wykonanie kopii zapasowej z poziomu terminala">[MySQL] Wykonanie kopii zapasowej z poziomu terminala</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/ubuntu-server-jako-nas-i-serwer-udostepniajacy-wiele-uslug-%e2%80%93-instalacja-cz-1/" title="Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1">Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/apache2-aktywacja-mod_rewrite-na-serwerze/" title="[Apache2] Aktywacja mod_rewrite na serwerze">[Apache2] Aktywacja mod_rewrite na serwerze</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/apache2-wylaczenie-blokowania-nadpisywania-globalnych-ustawien/" title="[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień">[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/polaczenie-za-pomoca-protokolu-webdav/" title="Połączenie za pomocą protokołu WebDAV">Połączenie za pomocą protokołu WebDAV</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/zrestartowanie-hasla-uzytkownika-root-d-bazy-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName</title>
		<link>http://www.ubuntu-pomoc.org/apache2-could-not-reliably-determine-the-server%e2%80%99s-fully-qualified-domain-name-using-127-0-1-1-for-servername/</link>
		<comments>http://www.ubuntu-pomoc.org/apache2-could-not-reliably-determine-the-server%e2%80%99s-fully-qualified-domain-name-using-127-0-1-1-for-servername/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 23:01:37 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[serwer]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=3882</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName Komunikat ten może pojawić się podczas próby restartu Apache. Nie zakłóca on poprawnej pracy, ale skoro można go usunąć, to dlaczego tego nie zrobić? Otwórz terminal i wydaj polecenie: sudo gedit /etc/apache2/apache2.conf Na końcu pliku dodaj linijkę: ServerName localhost Teraz [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><pre>apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName</pre>
<p>Komunikat ten może pojawić się podczas próby restartu Apache. Nie zakłóca on poprawnej pracy, ale skoro można go usunąć, to dlaczego tego nie zrobić?<br />
Otwórz terminal i wydaj polecenie:</p>
<pre>sudo gedit /etc/apache2/apache2.conf</pre>
<p>Na końcu pliku dodaj linijkę:</p>
<pre>ServerName localhost</pre>
<p>Teraz restart:</p>
<pre>sudo /etc/init.d/apache2 restart</pre>
<p>i komunikat zniknął.</p>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/apache2-aktywacja-mod_rewrite-na-serwerze/" title="[Apache2] Aktywacja mod_rewrite na serwerze">[Apache2] Aktywacja mod_rewrite na serwerze</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/apache2-wylaczenie-blokowania-nadpisywania-globalnych-ustawien/" title="[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień">[Apache2] Wyłączenie blokowania nadpisywania globalnych ustawień</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/lamp-zmiana-katalogu-ze-strona-www-i-dodawanie-subdomeny/" title="[LAMP] Zmiana katalogu ze stroną WWW i dodawanie subdomeny">[LAMP] Zmiana katalogu ze stroną WWW i dodawanie subdomeny</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/lamp-na-ubuntu-11-04/" title="LAMP na Ubuntu 11.04">LAMP na Ubuntu 11.04</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/obsluga-php4php5-na-wlasnym-serwerze/" title="Obsługa PHP4/PHP5 na własnym serwerze">Obsługa PHP4/PHP5 na własnym serwerze</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/apache2-could-not-reliably-determine-the-server%e2%80%99s-fully-qualified-domain-name-using-127-0-1-1-for-servername/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The requested URL /phpmyadmin was not found on this server.</title>
		<link>http://www.ubuntu-pomoc.org/the-requested-url-phpmyadmin-was-not-found-on-this-server/</link>
		<comments>http://www.ubuntu-pomoc.org/the-requested-url-phpmyadmin-was-not-found-on-this-server/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 23:01:07 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[błąd]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[serwer]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=3877</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Wczoraj postanowiłem zainstalować na swoim laptopie phpmyadmin i podczas próby jego uruchomienia napotkałem błąd: Not Found The requested URL /phpmyadmin was not found on this server. Pakiet (i wszystkie zależności) phpmyadmin zostały zainstalowane poprawnie, reinstalacja nie pomogła, dopiero utworzenie dowiązania rozwiązało problem: sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin Zobacz także:Ubuntu Server jako NAS i serwer udostępniający [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p>Wczoraj postanowiłem zainstalować na swoim laptopie <b>phpmyadmin</b> i podczas próby jego uruchomienia napotkałem błąd:</p>
<pre>Not Found

The requested URL /phpmyadmin was not found on this server.</pre>
<p>Pakiet (i wszystkie zależności) <b>phpmyadmin</b> zostały zainstalowane poprawnie, reinstalacja nie pomogła, dopiero utworzenie dowiązania rozwiązało problem:</p>
<pre>sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin</pre>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/ubuntu-server-jako-nas-i-serwer-udostepniajacy-wiele-uslug-%e2%80%93-instalacja-cz-1/" title="Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1">Ubuntu Server jako NAS i serwer udostępniający wiele usług – Instalacja &#8211; cz.1</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/lamp-na-ubuntu-11-04/" title="LAMP na Ubuntu 11.04">LAMP na Ubuntu 11.04</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/konfiguracja-serwerow-dns/" title="Konfiguracja serwerów DNS">Konfiguracja serwerów DNS</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/obsluga-php4php5-na-wlasnym-serwerze/" title="Obsługa PHP4/PHP5 na własnym serwerze">Obsługa PHP4/PHP5 na własnym serwerze</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/mysql-wykonanie-kopii-zapasowej-z-poziomu-terminala/" title="[MySQL] Wykonanie kopii zapasowej z poziomu terminala">[MySQL] Wykonanie kopii zapasowej z poziomu terminala</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/the-requested-url-phpmyadmin-was-not-found-on-this-server/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[KURS] Programowanie w powłoce #4 &#8211; pętle</title>
		<link>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-4-petle/</link>
		<comments>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-4-petle/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 23:01:20 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Kursy]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[kurs]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=3851</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Czwarta część serii artykułów Programowanie w powłoce zostanie poświęcona pętlom. Pętle służą do wielokrotnego wykonywania tego samego fragmentu kodu. W Bashu rozróżniamy następujące pętle: for, select, while, until. Jednak zanim przejdę do opisu poszczególnych pętli, przedstawię dwa polecenia, które przydatne są w działaniu z pętlami - break oraz continue. Break Polecenie break przerywa wykonywanie całej [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p><div class="wp-caption alignright" style="width: 160px"><img src="/obrazki/bash/terminal.png" alt="[KURS] Programowanie w powłoce #4 - pętle" /><p class="wp-caption-text"> </p></div>Czwarta część serii artykułów <b>Programowanie w powłoce</b> zostanie poświęcona pętlom.<br />
<b>Pętle</b> służą do wielokrotnego wykonywania tego samego fragmentu kodu. W Bashu rozróżniamy następujące pętle:</p>
<ul>
<li>for,</p>
<li>select,
<li>while,
<li>until.</li>
</ul>
<p>Jednak zanim przejdę do opisu poszczególnych pętli, przedstawię dwa polecenia, które przydatne są w działaniu z pętlami - <b>break</b> oraz <b>continue</b>.</p>
<h3><b>Break</b></h3>
<div class="infoblock">Polecenie <b>break</b> przerywa <b>wykonywanie całej pętli</b> tzn. jeśli w trakcie wykonywania pętli napotkana zostanie owa instrukcja, działanie pętli zostaje zakończone i następuje przejście do dalszej części kodu.<span id="more-3851"></span></div>
<h3><b>Continue</b></h3>
<div class="infoblock">Polecenie <b>continue</b> przerywa <b>wykonywanie aktualnego obiegu pętli</b> tzn. jeśli w trakcie wykonywania pętli napotkana zostanie owa instrukcja, dalsza część kodu nie zostanie wykonana, natomiast rozpocznie się kolejny obieg pętli (o ile obecny nie był ostatnim).</div>
<p>Warto dobrze zapamiętać obie instrukcje i znać różnice między nimi. A teraz do sedna...</p>
<h3><b>Pętla for</b></h3>
<div class="infoblock">Pętla for działa w ten sposób, że dla każdy element ze zbioru wartości przypisuje do zmiennej i wykonuje instrukcje zawarte wewnątrz pętli.</div>
<p><b>Struktura:</b></p>
<pre>for <em>zmienna</em> in <em>zbiór_wartości</em>
do 
<div id="margines"><em>instrukcje</em></div>

done</pre>
<p><b>Przykład:</b></p>
<pre>#!/bin/bash

for x in 1 -5 3.14 a Ania
do
echo "$x"
done

exit 0</pre>
<p>Jak widać - elementem zbioru wartości może być dowolna wartość (liczba całkowita, rzeczywista, znak, napis).<br />
<b>Rezultat:</b></p>
<pre>1
-5
3.14
a
Ania</pre>
<p>Pętla for jest bardzo przydatna w sytuacjach, gdy chcemy wykonać jakąś operację na wszystkich plikach w danym katalogu. Na przykład chcemy uzyskać listę wszystkich plików o danym rozszerzeniu znajdujących się w jakimś katalogu, robimy to tak:</p>
<pre>#!/bin/bash

for x in *html
do
  echo "To jest plik $x"
done

exit 0</pre>
<p><b>Inna struktura pętli for:</b></p>
<pre>for(( warunek początkowy; warunek końcowy; operacje))
do
<div id="marignes"><em>lista instrukcji</em></div>

done</pre>
<p><b>Przykład:</b></p>
<pre>#!/bin/bash

for(( i=1; i<=20; i++))
do
echo "$i"
done

exit 0</pre>
<h3><b>Pętla select</b></h3>
<div class="infoblock">Pętla <b>select</b> (jak sama nazwa wskazuje), będzie służyć do pewnego rodzaju wyboru. Zbiór wartości pętli jest wyświetlany na standardowym wyjściu, każdą pozycję poprzedza numer. Wyświetlany jest następnie <b>znak zachęty systemu</b> i powłoka oczekuje na wprowadzenie numeru. Jeśli wprowadzimy poprawny numer zmienna z polecenia otrzyma wartość odpowiadającą temu numerowi, jeśli nie jest to numer, bądź numer jest błędny zmienna ta otrzyma wartość <b>NULL</b>. Następnie wykonywane są instrukcje wewnątrz bloku. Potem wszystko zaczyna się od początku. Aby wyjść z pętli należy wśród instrukcji wstawić polecenie break lub return lub też wprowadzić znak EOF.</div>
<p>Brzmi to trochę niejasno, ale struktura i przykład powinny wszystko rozwiać:</p>
<pre>select <em>zmienna</em> in <em>zbiór_wartości</em>
do
<div id="margines"><em>instrukcje</em></div>

done
</pre>
<p><b>Przykład:</b></p>
<pre>#!/bin/bash

echo "Co wybierasz?"

select y in X Y Z Quit
do
  case $y in
    "X") echo "Wybrałeś X" ;;
    "Y") echo "Wybrałeś Y" ;;
    "Z") echo "Wybrałeś Z" ;;
    "Quit") exit ;;
    *) echo "Nic nie wybrałeś"
  esac
break
done

exit 0</pre>
<p>Zmienna y przyjmuje kolejne wartości ze zbioru wartości (X, Y, Z, Quit). Następuje wypisanie menu w postaci:</p>
<pre>Co wybierasz?
1) X
2) Y
3) Z
4) Quit</pre>
<p>A następnie znak zachęty:</p>
<pre>#? </pre>
<p>Teraz pętla czeka na nasz ruch. Wybieramy jedną z pozycji (1,2,3,4) i wciskamy Enter. W zależności od wyboru zostanie wyświetlony stosowny komunikat:</p>
<pre>Co wybierasz?
1) X
2) Y
3) Z
4) Quit
#? 3
Wybrałeś Z</pre>
<p>Jeśli z powyższego kodu usuniemy instrukcję <b>break</b> pętla wykona się kolejny raz (i kolejny - do momentu wybrania 4 (Quit) lub opcji z poza zakresu).</p>
<h3><b>Pętla while</b></h3>
<div class="infoblock">Pętla while najpierw sprawdza <b>czy prawdziwy jest warunek</b>. Jeśli tak to wykonane zostanie polecenie lub lista poleceń zawartych wewnątrz pętli, gdy warunek stanie się fałszywy pętla zostanie zakończona.</div>
<div class="attentionblock">Uwaga! Zwróć uwagę na zapis pętli - spacje są istotne!</div>
<p><b>Struktura:</b></p>
<pre>while <em>warunek</em>
do
<div id="margines"><em>polecenie</em></div>

done
</pre>
<p><b>Przykład:</b></p>
<pre>#!/bin/bash

echo -n "Podaj swoje imie: "
read imie
echo -n "Ile razy je wypisac? "
read ile
i=1

while [ "$i" -le "$ile" ]
do
echo "$imie"
i=$[i+1]
done

exit 0 </pre>
<div class="attentionblock">Zwróć uwagę na sposób inkrementacji zmiennej <em>i</em>! Istnieje jeszcze możliwość takiej inkrementacji: i=$(($i+1)), ale jest to sposób nieco trudniejszy.</div>
<p>Przyjmijmy, że <b>ile=20</b>. Z każdym obiegiem pętli (również przed jej wykonaniem) sprawdzany jest warunek - w tym wypadku czy i<20. Warunek jest prawdziwy, więc pętla rozpoczyna swoje działanie. Po 20 wypisaniach imienia, zmienna i przyjmuje wartość 21, warunek nie jest spełniony i pętla zostaje zakończona.</p>
<h3><b>Pętla until</b></h3>
<div class="infoblock">Pętla <b>until</b> działa przeciwnie do pętli while. Najpierw sprawdza czy warunek jest prawdziwy, <b>gdy jest fałszywy</b> wykonywane jest polecenie lub lista poleceń. Pętla until kończy swoje działanie w momencie gdy warunek stanie się prawdziwy.</div>
<p><b>Struktura:</b></p>
<pre>until <em>warunek</em>
do
<em>polecenie</em>
done</pre>
<p><b>Przykład: (analogicznie do poprzedniego zadania)</b></p>
<pre>#!/bin/bash

echo -n "Podaj swoje imie: "
read imie
echo -n "Ile razy je wypisac? "
read ile
i=1

until [ "$ile" -le "$i" ]
do
echo "$imie"
i=$[i+1]
done

exit 0 </pre>
<p>Tym razem sprawdzany jest warunek ile < i (poprzednio i < ile). Warunek jest fałszywy, więc następuje wykonanie instrukcji (wypisania imienia na ekran). Gdy warunek zostaje spełniony, wykonywanie pętli zostaje przerwane.</p>
<p>To tyle na dziś. W następnym artykule zajmę się <b>potokami</b>.</p>
<div class="infoblock"><b>Źródło:</b> <a href="http://www.dief.republika.pl/main.html" target="_blank">www.dief.republika.pl</a>, <a href="http://www.majerowski.pl/" target="_blank">majerowski.pl</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-6-obliczanie-wyrazen/" title="[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń">[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-5-strumienie-potoki-i-filtry/" title="[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry">[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-3-instrukcje-warunkowe/" title="[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe">[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-2-zmienne/" title="[KURS] Programowanie w powłoce #2 &#8211; zmienne">[KURS] Programowanie w powłoce #2 &#8211; zmienne</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-1/" title="[KURS] Programowanie w powłoce #1">[KURS] Programowanie w powłoce #1</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-4-petle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe</title>
		<link>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-3-instrukcje-warunkowe/</link>
		<comments>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-3-instrukcje-warunkowe/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 23:01:07 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Kursy]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[kurs]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=3813</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Kolejny artykuł z serii "Programowanie w powłoce" poświęcony jest wyrażeniu logicznemu test, instrukcji warunkowej if oraz instrukcji wyboru case. Znajdziesz również informacje dotyczące operatorów pozwalających na formułowanie złożonych wyrażeń logicznych, które można zastosować w warunkach instrukcji if (dotyczące zarówno zmiennych jak i plików). Schemat działania wszystkich przedstawionych instrukcji jest taki sam - w zależności od [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p><div class="wp-caption alignright" style="width: 160px"><img src="/obrazki/bash/terminal.png" alt="[KURS] Programowanie w powłoce #3 - instrukcje warunkowe" /><p class="wp-caption-text"> </p></div>Kolejny artykuł z serii "<b>Programowanie w powłoce</b>" poświęcony jest wyrażeniu logicznemu <b>test</b>, instrukcji warunkowej <b>if </b>oraz instrukcji wyboru <b>case</b>. Znajdziesz również informacje dotyczące operatorów pozwalających na formułowanie złożonych wyrażeń logicznych, które można zastosować w warunkach instrukcji <b>if</b> (dotyczące zarówno zmiennych jak i plików).</p>
<p>Schemat działania wszystkich przedstawionych instrukcji jest taki sam - w zależności od warunku zostanie wykonany ciąg poleceń. Skoro wszystkie instrukcje działają tak samo, to po co ich aż tyle? Po przeczytaniu artykułu na pewno poznasz odpowiedź na to pytanie.</p>
<div class="attentionblock">Od razu uprzedzam - stosowane w zapisie spacje (w zapisie instrukcji) nie są moim wymysłem a odgórnym wymogiem języka. Jeśli ich zabraknie, skrypt nie uruchomi się!<br />
Warto zwrócić uwagę, że instrukcja warunkowa/wyboru kończy się w momencie wpisania jej odwrotnej nazwy (dla <b>if</b> będzie to <b>fi,</b> dla <b>case</b> - <b>esac</b>). Bez tego również skrypt się nie uruchomi.<span id="more-3813"></span></div>
<h3><b>Wyrażenie warunkowe test</b></h3>
<div class="infoblock">Wyrażenie logiczne zbliżone jest do instrukcji warunkowej if jednak nie można go rozbudować. Rozpatruje jedynie dwa warunki - wyrażenie jest prawdziwe lub fałszywe</div>
<p><b>Schemat</b>:</p>
<pre>warunek &#038;& co jeśli prawda || co jeśli fałsz</pre>
<p><b>Przykład</b></p>
<pre>#!/bin/bash
echo -n "Podaj pierwsza zmienna: "
read a
echo -n "Podaj druga zmienna: "
read b

[ "$a" -eq "$b" ] &#038;& echo "a jest równe b" || echo "Zmienne się różnią"

exit 0</pre>
<p>Jeśli obie zmienne są równe pojawi się zdanie <b>"a jest równe b"</b>, w przeciwnym wypadku <b>"Zmienne się różnią"</b>.</p>
<h3><b>Instrukcja warunkowa IF</b></h3>
<div class="infoblock">Sprawdza czy warunek jest prawdziwy, jeśli tak to wykonane zostaną polecenia znajdujące się po słowie kluczowym<b> then</b> - w przeciwnym wypadku polecenia znajdujące się po słowie kluczowym <b>else</b>. Instrukcja kończy się słowem<b> fi</b>.</b></div>
<p><b>Schemat:</b></p>
<pre>if <em>warunek</em>
then
<div id="akapit">polecenia</div>

<b>else
<div id="akapit">polecenia</div>

</b>
fi</pre>
<p><b>Co może być warunkiem?</b><br />
Praktycznie wszystko - zaczynając od zmiennej, przez wyrażenia logiczne, kończąc na poleceniach.<br />
<b>Przykład:</b></p>
<pre>#!/bin/bash

echo -n "Podaj swoj wiek: "
read twoj_wiek
moj_wiek=20

if [ "$twoj_wiek" -lt "$moj_wiek" ]
then
echo -e "Jestes ode mnie młodszy!"
else
echo -e "Jestes ode mnie starszy!"
fi

exit 0</pre>
<p>Powyższy przykład rozpatruje dwa przypadki - gdy wpisany z klawiatury wiek jest mniejszy lub większy niż zadeklarowany w programie. Nie bierze pod uwagę przypadku, gdy wiek jest równy. Jak to zmienić? Poprzez rozbudowę instrukcji warunkowej do postaci:</p>
<pre>if <em>warunek</em>
then
<div id="akapit">polecenia</div>

<b>elif
then
<div id="akapit">polecenia</div>

</b>
else
<div id="akapit">polecenia</div>

fi</pre>
<p><b>Przykład:</b></p>
<pre>#!/bin/bash

echo -n "Podaj swoj wiek: "
read twoj_wiek
moj_wiek=20

if [ "$twoj_wiek" -lt "$moj_wiek" ]
then
echo "Jestem ode mnie młodszy!"
elif [ "$twoj_wiek" = "$moj_wiek" ]
then
echo "Jestesmy rowiesnikami!"
else
echo "Jestes ode mnie starszy!"
fi

exit 0</pre>
<p>W przykładach zastosowałem dwa operatory <b>-lt</b> oraz <b>=</b>, poniżej umieszczam listę wszystkich dostępnych operacji wraz z komentarzem:</p>
<div class="infoblock"><b>Zmienne i wyrażenia:</b></p>
<ul>
<li>argument1 <b>-eq</b> argument2 - prawda, jeśli argument1 jest równy argumentowi2</p>
<li>argument1 <b>-ne</b> argument2 - prawda, jeśli argument1 jest różny od argumentu2
<li>argument1<b> -gt </b>argument2 - prawda, jeśli argument1 jest większy od argumentu2
<li>argument1 <b>-ge</b> argument2 - prawda, jeśli argument1 jest większy lub równy argumentu2
<li>argument1 <b>-lt</b> argument2 - prawda, jeśli argument1 jest mniejszy od argumentu2
<li>argument1 <b>-le</b> argument2 - prawda, jeśli argument1 jest mniejszy lub równy argumentowi2
<li>wyrażenie <b>-a</b> wyrażenie -prawda, jeśli oba wyrażenia są prawdziwe
<li>wyrażenie <b>-o</b> wyrażenie - prawda, jeżeli przynajmniej jedno z wyrażeń jest prawdziwe
<li><b>-z</b> ciąg - prawda, jeśli długość ciągu równa jest zero
<li><b>-n</b> ciąg - prawda, jeśli długość ciągu jest większa od zera
<li>ciąg1 <b>=</b> ciąg2 - prawda, jeżeli ciągi są jednakowe
<li>ciąg1 <b>!=</b> ciąg2 - prawda, jeżeli ciągi są różne
<li><b>! </b>wyrażenie - prawda, jeżeli wyrażenie jest fałszywe </ul>
</div>
<div class="infoblock"><b>Pliki i katalogi:</b></p>
<ul>
<li><b>-e</b> plik - prawda, jeśli plik istnieje</p>
<li><b>-d</b> plik - prawda, jeśli plik istnieje i jest katalogiem
<li><b>-f</b> plik - prawda, jeśli plik istnieje i jest zwykłym plikiem
<li><b>-L</b> plik - prawda, jeśli plik istnieje i jest dowiązaniem symbolicznym
<li><b>-r</b> plik - prawda, jeśli plik istnieje i można go czytać
<li><b>-w</b> plik - prawda, jeśli plik istnieje i można do niego pisać
<li><b>-x </b>plik - prawda, jeśli plik istnieje i można go wykonywać
<li><b>-s</b> plik - prawda, jeśli plik istnieje i ma rozmiar większy od zera
<li><b>-g</b> plik - prawda, jeśli plik istnieje i ma ustawiony bit set-group-id
<li><b>-u</b> plik - prawda, jeśli plik istnieje i ma ustawiony bit set-user-id
<li><b>-b</b> plik - prawda, jeśli plik istnieje i jest urządzeniem blokowym
<li><b>-c</b> plik - prawda, jeśli plik istnieje i jest urządzeniem znakowym
<li>plik1 <b>-nt </b>plik2 - prawda, jeśli plik1 jest nowszy (zgodnie z datą modyfikacji) niż plik2
<li>plik1 <b>-ot</b> plik2 - prawda, jeśli plik1 jest starszy niż plik2
<li>plik1 <b>-ef </b>plik2 - prawda, jeśli plik1 i plik2 mają te same numery urządzenia i i-węzła</ul>
</div>
<h3><b>Instrukcja case</b></h3>
<div class="infoblock">Instrukcja <b>case</b> jest inaczej nazywana instrukcją wyboru. Jej struktura jest nieco trudniejsza do zapamiętania niż rozbudowanej instrukcji if, ale jest bardziej czytelna. Na początku sprawdzana jest wartość danej zmiennej (warunki odpadają!), a następnie, w zależności od tej wartości, wykonywany ciąg dalszych instrukcji</div>
<p><b>Schemat:</b></p>
<pre>case zmienna in
<div id="akapit">"wzorzec1") polecenie1 ;;
"wzorzec2") polecenie2 ;;
"wzorzec3") polecenie3 ;;
*) polecenie_domyślne</div>

esac</pre>
<p>Oczywiście nie istnieje ograniczenie co do ilości wzorców. Jeśli zmienna nie będzie spełniać żadnego z wzorców, zostaną wykonanie instrukcje zawarte po <b>*)</b>.<br />
<b>Przykład:</b></p>
<pre>#!/bin/bash

echo -n "Podaj liczbe od 0 do 3: "
read a

case "$a" in
"0") echo "Podales zero";;
"1") echo "Podales jeden";;
"2") echo "Podales dwa";;
"3") echo "Podales trzy";;
*) echo "Twoja liczba nie jest rowna 0,1,2 lub 3"
esac

exit 0</pre>
<p>Przykład jest bardzo trywialny, ale idealnie pokazuje możliwości instrukcji <b>case</b>. W zależności od wpisanej wartości zostanie wypisany odpowiedni komunikat.<br />
<b>Ćwiczenie dla Ciebie</b><br />
W powyższym skrypcie spróbuj zamienić instrukcję case na if i ocenić czytelność oraz długość kodu <img src='http://www.ubuntu-pomoc.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>To tyle na dzisiaj. Następny artykuł zostanie poświęcony <b>pętlom</b>.</p>
<hr />
<div class="infoblock"><b>Źródło:</b> <a href="http://www.dief.republika.pl/main.html" target="_blank">www.dief.republika.pl</a>, <a href="http://www.majerowski.pl/" target="_blank">majerowski.pl</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-6-obliczanie-wyrazen/" title="[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń">[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-5-strumienie-potoki-i-filtry/" title="[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry">[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-4-petle/" title="[KURS] Programowanie w powłoce #4 &#8211; pętle">[KURS] Programowanie w powłoce #4 &#8211; pętle</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-2-zmienne/" title="[KURS] Programowanie w powłoce #2 &#8211; zmienne">[KURS] Programowanie w powłoce #2 &#8211; zmienne</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-1/" title="[KURS] Programowanie w powłoce #1">[KURS] Programowanie w powłoce #1</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-3-instrukcje-warunkowe/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[KURS] Programowanie w powłoce #2 &#8211; zmienne</title>
		<link>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-2-zmienne/</link>
		<comments>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-2-zmienne/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 23:01:01 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Kursy]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[kurs]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=3740</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Zmienne w Bashu to swojego rodzaju kontenery, ponieważ mogą przechowywać dowolne wartości. W tym artykule dowiesz się co to są: słowa zastrzeżone, zmienne programowe, zmienne specjalne, zmienne systemowe oraz zmienne tablicowe. Kilka informacji na temat zmiennych, które warto zapamiętać: zmienne nie wymagają deklaracji, nazwa zmiennej nie może być słowem zastrzeżonym - o czym za chwilę, [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p><div class="wp-caption alignright" style="width: 160px"><img src="/obrazki/bash/terminal.png" alt="[KURS] Programowanie w powłoce #2 - zmienne" /><p class="wp-caption-text"> </p></div>Zmienne w Bashu to swojego rodzaju kontenery, ponieważ mogą przechowywać dowolne wartości. W tym artykule dowiesz się co to są: <b>słowa zastrzeżone, zmienne programowe, zmienne specjalne, zmienne systemowe</b> oraz <b>zmienne tablicowe</b>.</p>
<p> Kilka informacji na temat zmiennych, które warto zapamiętać:</p>
<ul>
<li>zmienne <b>nie wymagają deklaracji</b>,</p>
<li>nazwa zmiennej nie może być <b>słowem zastrzeżonym</b> - o czym za chwilę,
<li>wielkość liter w nazwie zmiennej <b>jest istotna</b>,
<li>do zmiennej można przypisać <b>wartość każdego typu</b> - całkowity, rzeczywisty, znak, ciąg znaków etc.,
<li>zmienna, która wcześniej przechowywała wartość "pewnego typu" <b>może również przechowywać</b> wartość "innego typu",
<li>do zawartości zmiennej odwołujemy się poprzez znak <b>$</b>.</ul>
<h3><b>Słowa zastrzeżone</b></h3>
<div class="infoblock"><b>Słowa zastrzeżone</b> to nazwy, które zarezerwowane są już dla konkretnych instrukcji w powłoce. Nazwa zmiennej <b>nie powinna być</b> słowem zastrzeżonym (ale może).<span id="more-3740"></span></div>
<p>Poniżej umieszczam listę słów zastrzeżonych:</p>
<ul>
<li> !,</p>
<li> case,
<li> do,
<li>done,
<li>elif,
<li>else,
<li>esac,
<li>fi,
<li>for,
<li>function,
<li>if,
<li>in,
<li>select,
<li>then,
<li>until,
<li>while,
<li>{,
<li>},
<li>time,
<li>[,
<li>].</ul>
<h3><b>Zmienne programowe</b></h3>
<div class="infoblock"><b>Zmienne programowe</b> to inaczej zmienne definiowane przez nas.</div>
<p>Zmienne definiujemy następująco:</p>
<pre>zmienna1=3
zmienna2=3.14
zmienna3=PI
zmienna4="PI to w przyblizeniu 3.14"</pre>
<p><b>Błędna jest definicja zawierająca spacje</b><br />
<u>Przykład:</u></p>
<pre>zmienna = 1 #błąd!!!</pre>
<p><b>Wielkość liter zmiennych jest istotna.</b><br />
<u>Przykład:</u></p>
<pre>#!/bin/bash

int=2
Int=5

echo -e "Wartosc zmiennej int="$int
echo -e "Wartosc zmiennej Int="$Int

exit 0</pre>
<p><u>Rezultat:</u></p>
<pre>Wartosc zmiennej int=2
Wartosc zmiennej Int=5</pre>
<p><b>Do zmiennej można przypisać zawartość jakiegoś polecenia. Polecenie przypisujemy do zmiennej na dwa sposoby:</b></p>
<ul>
<li> poprzez użycie odwrotnych apostrofów ` - przycisk znajduje się pod klawiszem ESC,</li>
</ul>
<pre>zmienna=`polecenie`</pre>
<ul>
<li>poprzez ujęcie polecenia w nawias i poprzedzenie całości znakiem $</ul>
<pre>zmienna=$(polecenie)</pre>
<p><u>Przykład</u>:</p>
<pre>#!/bin/bash

kto=`who`

echo -e "Zalogowani uzytkownicy: "$kto

exit 0</pre>
<h3><b>Zmienne specjalne</b></h3>
<div class="infoblock"><b>Zmienne specjalne</b> to najbardziej prywatne zmienne powłoki, są udostępniane użytkownikowi tylko do odczytu (są wyjątki).</div>
<ul>
<li>$0 - wyświetli nazwę bieżącego skryptu,</p>
<li>$1 .. $9 - parametry przesyłane do skryptu - można je modyfikować.</ul>
<p><u>Przykład</u><br />
Skrypt ma postać:</p>
<pre>#!/bin/bash

echo -e $3 $2 $1

exit 0</pre>
<p>Wywołujemy go w sposób następujący:</p>
<pre>./nazwa_skryptu 1 2 3</pre>
<p>Gdzie 1 2 3 to <b>wartości</b> przesyłane do skryptu.<br />
<u>Rezultat:</u></p>
<pre>3 2 1</pre>
<ul>
<li>$@ - wyświetli wszystkie parametry przesłane do skryptu,</p>
<li>$? - kod powrotu ostatnio wykonywanego polecenia,
<li>$$ - PID procesu bieżącej powłoki.</ul>
<h3><b>Zmienne systemowe</b></h3>
<div class="infoblock"><b>Zmienne systemowe</b> to wbudowane zmienne. Aktualną ich listę wyświetlisz poleceniami <b>set</b> oraz<b> printenv</b></div>
<p><u>Przykład:</u></p>
<pre>#!/bin/bash

echo "Witaj $USER, Twoj katalog domowy to $HOME, nazwa i typ tego komputera to $HOSTNAME $HOSTTYPE, znajdujesz sie w katalogu $PWD" 

exit 0</pre>
<p><u>Rezultat:</u></p>
<pre>Witaj szmitas, Twoj katalog domowy to /home/szmitas, nazwa i typ tego komputera to szmitas-ubuntu i486, znajdujesz sie w katalogu /home/szmitas/Pulpit/pliki/programowanie/bash/ubuntu-pomoc/#2</pre>
<h3><b>Zmienne tablicowe</b></h3>
<div class="infoblock"><b>Zmienne tablicowe (tablice)</b> stosujemy, gdy chcemy przechować wiele zmiennych. Kolejne wartości zmiennej tablicowej indeksowane są przy pomocy liczb całkowitych, zaczynając od 0. Nie istnieje możliwość tworzenia tablic wielowymiarowych. Rozmiar tablicy nie jest ograniczony - w każdym momencie możemy usuwać, bądź dodawać elementy.</div>
<p>Tablicę definiujemy w następujący sposób:</p>
<pre>nazwa_tablicy=(wartość1 wartość2 wartość3 wartośćN)</pre>
<p><b><u>Przykład:</u></b></p>
<pre>#!/bin/bash

tablica=(1 5 10 -23)

echo -e ${tablica[0]}  ${tablica[1]} ${tablica[2]} ${tablica[3]}

exit 0</pre>
<p><b><u>Rezultat:</u></b></p>
<pre>1 5 10 -23</pre>
<p>Tablica <b>nie musi</b> przechowywać wartości tego samego typu!<br />
<b><u>Przykład:</u></b></p>
<pre>#!/bin/bash

tablica=(Liczba "pi = " 3.1415 ...)

echo -e ${tablica[0]}  ${tablica[1]} ${tablica[2]} ${tablica[3]}

exit 0</pre>
<p><b><u>Rezultat:</u></b></p>
<pre>Liczba pi = 3.1415 ...</pre>
<p>Do poszczególnych elementów tablicy można odnosić się poprzez podanie konkretnego numeru elementu (przykład wyżej) lub za <b>pomocą wskaźników</b> - indeksujemy tablicę od zera!.<br />
<b><u>Przykład:</u></b></p>
<pre>#!/bin/bash

tablica=(Liczba "pi = " 3.1415 ...)

i=0

while [ "$i" -le 3 ]
do
echo ${tablica[$i]}
i=$((i+1))
done

exit 0</pre>
<p><b><u>Rezultat</u></b></p>
<pre>Liczba
pi =
3.1415
...</pre>
<p>Jeśli w odwołaniu się do tablicy nie podamy konkretnego elementu np.</p>
<pre>echo ${tablica}</pre>
<p>Zostanie wypisany <b>pierwszy element</b>.<br />
Jeśli w odwołaniu się do elementu tablicy podamy @ lub * np.</p>
<pre>echo ${tablica[*]}</pre>
<p>Zostaną wypisane <b>wszystkie elementy</b>.</p>
<p><b>Dodawanie nowego elementu:</b><br />
Rozmiar tablicy jest nieograniczony. Nowy element dodajemy w następujący sposób:</p>
<pre>nazwa_tablicy[wskaźnik]=wartość</pre>
<p>Oczywiście wartość zmiennej <b>wskaźnik</b> musi być większa niż wcześniejszy rozmiar tablicy, aby powiększenie miało sens.</p>
<div class="infoblock">Mechanizm dodawania elementów do tablicy, można wykorzystać do tworzenia tablic, gdy nie istnieje zmienna tablicowa do której dodajemy jakiś element, to BASH automatycznie ją utworzy</div>
<p><b>Usuwanie elementu z tablicy</b><br />
Element tablicy usuwamy następująco:</p>
<pre>unset nazwa_tablicy[wskaźnik]</pre>
<p>Tablice są niezwykle przydatne w programowaniu, dlatego dobre ich zrozumienie jest bardzo ważne.</p>
<hr />
<div class="infoblock"><b>Źródło:</b> <a href="http://www.dief.republika.pl/main.html" target="_blank">www.dief.republika.pl</a>, <a href="http://www.emarcel.com/linux-articles/45-kurs-bash" target="_blank">www.emarcel.com</a>, <a href="http://www.majerowski.pl/" target="_blank">majerowski.pl</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-6-obliczanie-wyrazen/" title="[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń">[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-5-strumienie-potoki-i-filtry/" title="[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry">[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-4-petle/" title="[KURS] Programowanie w powłoce #4 &#8211; pętle">[KURS] Programowanie w powłoce #4 &#8211; pętle</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-3-instrukcje-warunkowe/" title="[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe">[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-1/" title="[KURS] Programowanie w powłoce #1">[KURS] Programowanie w powłoce #1</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-2-zmienne/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[KURS] Programowanie w powłoce #1</title>
		<link>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-1/</link>
		<comments>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-1/#comments</comments>
		<pubDate>Sat, 27 Nov 2010 23:01:27 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Kursy]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[kurs]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=3703</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Poniekąd z obowiązku, ale również z ciekawości, postanowiłem pojąć podstawy (póki co) programowania w powłoce. Nie jestem samolubny, więc będę się z Wami dzielić wiedzą w dosyć przystępny (mam nadzieję) sposób. Bash to jedna z najpopularniejszych powłok systemów uniksowych. Skrypt to zwykły nieskompilowany plik tekstowy, zawierający różne instrukcje, polecenia systemowe, do wykonania przez zdefiniowany w [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Kursy" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p><div class="wp-caption alignright" style="width: 160px"><img src="/obrazki/bash/terminal.png" alt="[KURS] Programowanie w powłoce #1" /><p class="wp-caption-text"> </p></div><br />
Poniekąd z obowiązku, ale również z ciekawości, postanowiłem pojąć podstawy (póki co) programowania w powłoce. Nie jestem samolubny, więc będę się z Wami dzielić wiedzą w dosyć przystępny (mam nadzieję) sposób.</p>
<p><b>Bash</b> to jedna z najpopularniejszych powłok systemów uniksowych.</p>
<p><b>Skrypt</b> to zwykły nieskompilowany plik tekstowy, zawierający różne instrukcje, polecenia systemowe, do wykonania przez zdefiniowany w skrypcie interpreter powłoki systemowej (<b>/bin/bash</b>). Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu.</p>
<p>W pierwszej części kursu przedstawię <b>sposób tworzenia i wykonania skryptu oraz podstawowe operacje wejścia i wyjścia</b>.</p>
<div class="infoblock">Aby utworzyć skrypt potrzebny będzie Ci dowolny edytor tekstu (w moim przypadku <b>Gedit</b>) + konsola (skoro programujemy w powłoce to nie sposób od niej uciec).<span id="more-3703"></span></div>
<h3><b>Tworzenie skryptu</b></h3>
<p>Otwórz terminal i wydaj polecenie:</p>
<pre>gedit skrypt</pre>
<p>Każdy skrypt powinien na początku zdefiniowany rodzaj powłoki, w której ma być wykonany. W naszym przypadku będzie to:</p>
<pre>#!/bin/bash</pre>
<p>Skrypt powinien również zakończyć się instrukcją:</p>
<pre>exit 0</pre>
<p>co oznacza, że skrypt zwróci wartość 0, gdy wykona się poprawnie. Pomiędzy tymi linami znajdować będzie się nasz skrypt.</p>
<h3><b>Wykonanie skryptu</b></h3>
<p>Zanim wykonasz skrypt, musisz nadać mu prawa do uruchamiania. Zrobisz to poleceniem:</p>
<pre>chmod +x ścieżka_do_skryptu</pre>
<p>Tak przygotowany skrypt uruchomisz wpisując w terminalu ścieżkę do skryptu:</p>
<pre>ścieżka_do_skryptu/nazwa_skryptu</pre>
<p>Jeśli znajdujesz się w katalogu, w którym znajduje się skrypt:</p>
<pre>./nazwa_skryptu</pre>
<h3><b>Podstawowe operacje wejścia i wyjścia</b></h3>
<div class="infoblock"><b>echo</b> - wydrukowanie na standardowym wyjściu (domyślnie jest to ekran) napisu.</p>
<p><b>Dodatkowe parametry</b></p>
<ul>
<li><b>-n </b>nie jest wysyłany znak nowej linii</p>
<li><b>-e</b> włącza interpretację znaków specjalnych takich jak:
<ul>
<li><b>\a</b> dzwonek systemowy</p>
<li><b>\b</b> backspace
<li><b>\c</b> pomija znak kończący nowej linii
<li><b>\f</b> escape
<li><b>\n</b> form feed czyli wysuw strony
<li><b>\r</b> znak nowej linii
<li><b>\t</b> tabulacja pozioma
<li><b>\v</b> tabulacja pionowa
<li><b>\\</b> backslash
<li><b>\nnn</b> znak, którego kod ASCII ma wartość ósemkowo
<li><b>\xnnn </b>znak, którego kod ASCII ma wartość szesnastkowo</ul>
</ul>
</div>
<p><b><u>Przykład:</u></b></p>
<pre>#!/bin/bash

i=Hello

echo "Hello world!" #wariant nr 1
echo Hello world! #wariant  nr 2
echo $i #wariant nr 3
echo "$i" #wariant nr 4
echo "$i world!" #wariant nr 5
echo $i world #wariant nr 6

exit 0</pre>
<p>Na ekranie powinieneś ujrzeć napis:</p>
<pre>Hello world!
Hello world!
Hello
Hello
Hello world!
Hello world
</pre>
<p>Jak widać tekst można wyświetlić na wiele sposobów. Najestetyczniejszy z nich to ujęcie wypisywanej frazy w cudzysłów (wariant nr 1). Do wypisywania wartości zmiennej najlepiej użyć wariantu nr 4, a do wypisania zarówno tekstu jak i wartości zmiennej - wariantu nr 5.</p>
<div class="infoblock">W powyższym przykładzie użyłem znaku<b> #</b>, który służy do dodawania komentarzy. Interpreter pomija wszystko co znajduje się za tym znakiem aż do końca linii</div>
<p><b><u>Przykład zastosowania polecenia echo z dodatkowym parametrem:</u></b></p>
<pre>echo -e "Kazde\nslowo\nw\nnowej\nlinii\na do tego dzownek\a"</pre>
<div class="infoblock"><b>read</b> - czyta ze standardowego wejścia pojedynczy wiersz.</p>
<p><b>Dodatkowe parametry:</b><br />
<b>-p</b> pokaże znak zachęty bez kończącego znaku nowej linii<br />
<b>-e</b> kolejne wartości przypisywane są do kolejnych indeksów zmiennej tablicowej<br />
<b>-a</b> jeśli nie podano żadnej nazwy zmiennej, wiersz trafia do <b>$REPLY</b>.</div>
<p><b><u>Przykład</u></b></p>
<pre>#!/bin/bash

echo -n "Podaj swoje imie: "
read imie
echo "Witaj, $imie!"

exit 0</pre>
<p>Rezultat:</p>
<pre>Podaj swoje imie: Lukasz
Witaj, Lukasz!</pre>
<p>Jak widać, funkcja <b>read</b> jest bardzo prosta i nie wymaga raczej dłuższego komentarza. Cały skrypt można również zapisać prościej:</p>
<pre>#!/bin/bash

read -p "Podaj imie: " imie
echo "Witaj, $imie"

exit 0</pre>
<p><b><u>Przykład zastosowania polecenia read z  dodatkowym parametrem:</u></b></p>
<pre>#!/bin/bash

read -p "Podaj imie: " -e
echo "Witaj, $REPLY"

exit 0</pre>
<p>To tyle w tej części. Kolejne artykuły będą ukazywać się dość nieregularnie, więc nie mogę obiecać kiedy pojawi się nowy artykuł i co w nim będzie <img src='http://www.ubuntu-pomoc.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="infoblock"><b>Źródło:</b> <a href="http://www.dief.republika.pl/main.html" target="_blank">www.dief.republika.pl</a>, <a href="http://www.emarcel.com/linux-articles/45-kurs-bash" target="_blank">www.emarcel.com</a></div>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-6-obliczanie-wyrazen/" title="[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń">[KURS] Programowanie w powłoce #6 &#8211; obliczanie wyrażeń</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-5-strumienie-potoki-i-filtry/" title="[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry">[KURS] Programowanie w powłoce #5: strumienie, potoki i filtry</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-4-petle/" title="[KURS] Programowanie w powłoce #4 &#8211; pętle">[KURS] Programowanie w powłoce #4 &#8211; pętle</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-3-instrukcje-warunkowe/" title="[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe">[KURS] Programowanie w powłoce #3 &#8211; instrukcje warunkowe</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-2-zmienne/" title="[KURS] Programowanie w powłoce #2 &#8211; zmienne">[KURS] Programowanie w powłoce #2 &#8211; zmienne</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/kurs-programowanie-w-powloce-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Geany &#8211; lekkie zintegrowane środowisko programistyczne</title>
		<link>http://www.ubuntu-pomoc.org/geany-lekkie-zintegrowane-srodowisko-programistyczne/</link>
		<comments>http://www.ubuntu-pomoc.org/geany-lekkie-zintegrowane-srodowisko-programistyczne/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 22:01:11 +0000</pubDate>
		<dc:creator>Szmitas</dc:creator>
				<category><![CDATA[Aplikacje - instalacja]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[instalacja]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=2921</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>Geany to lekkie zintegrowane środowisko programistyczne. Jest to naprawdę bardzo szybka aplikacja - włącza się równie szybko co Gedit - chociaż z drugiej strony można powiedzieć, że to Gedit jest powolny, bo otwiera się tak samo długo jak Geany, które posiada znacznie więcej możliwości. Punkt widzenia zależy od punktu siedzenia. Z jakimi językami współpracuje to [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><div align="left"><img src="http://www.geany.org/images/geany.png" alt="Geany - lekkie zintegrowane środowisko programistyczne" align="left" style="padding-right: 10px;" /></div>
<p>Geany to lekkie zintegrowane środowisko programistyczne. Jest to naprawdę bardzo szybka aplikacja - włącza się równie szybko co Gedit - chociaż z drugiej strony można powiedzieć, że to Gedit jest powolny, bo otwiera się tak samo długo jak Geany, które posiada znacznie więcej możliwości. Punkt widzenia zależy od punktu siedzenia.</p>
<p>Z jakimi językami współpracuje to maleństwo?</p>
<ul><span id="more-2921"></span></p>
<table>
<tr>
<td>
<li>C/C++/C#</li>
</td>
<td>
<li>Java</li>
</td>
<td>
<li>JavaScript</li>
</td>
<td>
<li>PHP</li>
</td>
<td>
<li>Ruby</li>
</td>
<td>
<li>Haskell</li>
</td>
</tr>
<tr>
<td>
<li>HTML</li>
</td>
<td>
<li>CSS</li>
</td>
<td>
<li>Python</li>
</td>
<td>
<li>Perl</li>
</td>
<td>
<li>Pascal</li>
</td>
<td>
<li>Fortran</li>
</td>
</tr>
</table>
</ul>
<p>Uważasz, że to mało? Przejrzyj całą listę wspieranych plików znajdującą się <a href="http://www.geany.org/Main/AllFiletypes" target="_blank"><b>tutaj</b></a>.</p>
<h2><b>Instalacja</b></h2>
<pre>sudo apt-get install geany</pre>
<p>Zainstalowaną aplikację znajdziesz w <b>Programy > Programowanie > Geany</b>.<br />
<div class="wp-caption alignnone" style="width: 410px"><a href="/obrazki/geany/geany.jpg" title="Geany"><img src="/obrazki/geany/geany.jpg"  width="400" alt="Geany - lekkie zintegrowane środowisko programistyczne" /></a><p class="wp-caption-text">Geany</p></div></p>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/obsluga-php4php5-na-wlasnym-serwerze/" title="Obsługa PHP4/PHP5 na własnym serwerze">Obsługa PHP4/PHP5 na własnym serwerze</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/lamp-na-ubuntu-11-04/" title="LAMP na Ubuntu 11.04">LAMP na Ubuntu 11.04</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/flex-sdk-czyli-actionscript3-na-ubuntu/" title="Flex SDK, czyli ActionScript3 na Ubuntu">Flex SDK, czyli ActionScript3 na Ubuntu</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/tworzenie-diagramu-er-z-kodu-sql/" title="Tworzenie diagramu ER z kodu SQL">Tworzenie diagramu ER z kodu SQL</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/instalacja-apache-php5-mysql/" title="Instalacja Apache + PHP5 + MySQL">Instalacja Apache + PHP5 + MySQL</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/geany-lekkie-zintegrowane-srodowisko-programistyczne/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Instalacja Apache + PHP5 + MySQL</title>
		<link>http://www.ubuntu-pomoc.org/instalacja-apache-php5-mysql/</link>
		<comments>http://www.ubuntu-pomoc.org/instalacja-apache-php5-mysql/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 22:01:19 +0000</pubDate>
		<dc:creator>Psajdi</dc:creator>
				<category><![CDATA[Aplikacje - instalacja]]></category>
		<category><![CDATA[Aplikacje - konfiguracja]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[instalacja]]></category>
		<category><![CDATA[konfiguracja]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.ubuntu-pomoc.org/?p=2301</guid>
		<description><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - konfiguracja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/>W dzisiejszym artykule opiszę krok po kroku instalację serwera stron www apache2 wraz z PHP w wersji 5 i bazą danych MySQL. Notka: Poprzednia wersja artykułu posiadała błąd, dlatego mogła nie udać wam się konfiguracja, bardzo przepraszam za trudności które przez to wystąpiły, ta wersja stestowana u mnie na świeżym Ubuntu 10.04.1 i daję sobie [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - instalacja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Aplikacje - konfiguracja" /><img src="http://www.ubuntu-pomoc.org/wp-content/uploads/katalog.png" width="20" height="13" alt="" title="Programowanie" /><br/><p>W dzisiejszym artykule opiszę krok po kroku instalację serwera stron www <b>apache2</b> wraz z <b>PHP w wersji 5</b> i bazą danych <b>MySQL</b>.</p>
<p><b>Notka: </b>Poprzednia wersja artykułu posiadała błąd, dlatego mogła nie udać wam się konfiguracja, bardzo przepraszam za trudności które przez to wystąpiły, ta wersja stestowana u mnie na świeżym Ubuntu 10.04.1 i daję sobie rękę uciąć, że działa jak należy.<br />
Wszystkim którym poprzednia wersje nie chodziła zapraszam do zrobienia jeszcze raz wszystkiego po kolei.</p>
<p>Wchodzimy w terminal i <b>aktualizujemy nasze oprogramowanie</b>:</p>
<pre>sudo apt-get update &amp;&amp; sudo apt-get install apache2 php5-mysql mysql-server libapache2-mod-auth-mysql php5-mysql phpmyadmin
<span id="more-2301"></span></pre>
<p>Podczas instalacji ukaże nam się komunikat abyśmy podali (w podanej kolejności:</p>
<p>-<b> hasło administratora </b>do bazy danych MySQL (bardzo ważne, zapamiętać)<br />
- zaznaczamy <b>apache2,</b> kiedy zapyta jaki serwer ma automatycznie skonfigurować (zaznaczamy spacją)<br />
- <b>podajemy hasło administratora</b>, które wcześniej ustaliliśmy tak aby dało się zarządzać bazą przez PHPMyAdmina<br />
-<b> ustalamy hasło dzięki któremu MySQL będzie porozumiewał się z PHPMyAdminem</b>, może być takie samo jak hasło administratora MySQL</p>
<p>Okej, serwer jest zainstalowany, teraz ustawimy go tak abyśmy mogli wrzucać pliki do katalogu<b> public_html</b> w naszym katalogu domowym.</p>
<p>Wpisujemy w terminalu:</p>
<pre>mkdir ~/public_html

cd /etc/apache2/mods-enabled

sudo ln -s ../mods-available/userdir.conf userdir.conf

sudo ln -s ../mods-available/userdir.load userdir.load</pre>
<p>Restartujemy <b>apache2 </b>poniższym poleceniem aby zatwierdzić wprowadzone przez nas zmiany.</p>
<pre>sudo /etc/init.d/apache2 restart</pre>
<p>Pora na próbę generalną, wpisujemy w terminalu:</p>
<pre>gedit ~/public_html/index.php</pre>
<p>Po czym w stworzonym pliku wpisujemy:</p>
<pre>
&lt;?php
phpinfo();
?&gt;</pre>
<p>I zapisujemy.</p>
<p>Teraz w przeglądarce wpisujemy:</p>
<pre>http://127.0.0.1/~nazwa_uzytkownika/ (zamiast nazwa_uzytkownika oczywiscie swoj login do Ubuntu)</pre>
<p>Jeżeli otworzyła nam się fioletowa, długa strona z informacjami o PHP to znaczy że zrobiliśmy wszystko dobrze</p>
<p>Możemy jeszcze wejść na:</p>
<pre>http://127.0.0.1/phpmyadmin/</pre>
<p>Jeżeli otworzy nam się strona wymagająca zalogowania, to znaczy że poprawnie skonfigurowaliśmy bazę danych MySQL i PHPMyAdmina, wpisujemy root i hasło, które wcześniej mieliśmy zapamiętać. To wszystko, nasz serwer powinien już hulać.</p>
<h2  class="related_post_title">Zobacz także:</h2><ul class="related_post"><b><li><a href="http://www.ubuntu-pomoc.org/lamp-na-ubuntu-11-04/" title="LAMP na Ubuntu 11.04">LAMP na Ubuntu 11.04</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/lamp-zmiana-katalogu-ze-strona-www-i-dodawanie-subdomeny/" title="[LAMP] Zmiana katalogu ze stroną WWW i dodawanie subdomeny">[LAMP] Zmiana katalogu ze stroną WWW i dodawanie subdomeny</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/apache-pobiera-pliki-php-zamiast-je-otwierac/" title="Apache pobiera pliki PHP zamiast je otwierać">Apache pobiera pliki PHP zamiast je otwierać</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/obsluga-php4php5-na-wlasnym-serwerze/" title="Obsługa PHP4/PHP5 na własnym serwerze">Obsługa PHP4/PHP5 na własnym serwerze</a></li></b><b><li><a href="http://www.ubuntu-pomoc.org/nvidia-optimus-pod-linuksem-vol-2/" title="nVidia Optimus pod Linuksem vol. 2">nVidia Optimus pod Linuksem vol. 2</a></li></b></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ubuntu-pomoc.org/instalacja-apache-php5-mysql/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
	</channel>
</rss>

