![]() |
klikni na mě |
Bash (Bourne Again Shell)
Bash je implicitním příkazovým interpretem operačního systému Linux.
Pár poznámek na začátek.
-Příkaz v operačním systému Unix se skládá z písmen, čísel a znaků.
Nikoliv však z MEZER.
-Systém je case-sensitive. To znamená, že rozlišuje malá a velká písmena.
Z toho vyplývá, že např. příkaz ls a LS nebo Ls nebude brát jako stejný příkaz.
-Konbinace Ctrl+D se používa na ukončování většiny příkazů. Je to znak konce souboru
/EOF end-of-file/
-Parametry (slova, písmena či znaky za příkazem) modifikují funkci příkazu.
Speciálnim parametrům se říká options (volby) nebo switches (přepínače)
Příkazy
cat - Tento příkaz má několik funkcí:
1,vrací původní řetězec napsaný uživatelem.
příklad: [milan@localhost milan]$ cat --- Enter
Ahoj všichni ! ---- Ctrl+D
bash: Ahoj všichni !
2,spojuje soubory a zobrazuje je na standardním výstupu
man - Zobrazuje manuálové stránky.Pokud chceme získat nápovědu např. o příkazu cat
napíšeme: man cat.
V nápovědě se listuje Page Up a Page Down nebo Spacebar.
Pro ukončení slouží klávesa Q.
Syntaxe (převzato z manuálových stránek)
man [-acdfhkKtwW] [-m systém] [-p řetězec] [-C konfigurační soubor] [-M
cesta] [-P stránkovač] [-S seznam_sekcí] [sekce] jméno ...
ls - Slouží k prohledávání adresářů.
Zobrazuje adresáře a soubory v adresáři, ze kterého zadáváme příkaz
(aktuální adresář) nebo adresář ke kterému zadáme cestu.
ls může mít tyto volby:
ls [-abcdfgiklmnpqrstuxABCFGLNQRSUX1] [-w sloupců] [-T pozic] [-I vzor]
Zobrazení obsahu aktuálního adresáře:
[milan@localhost milan]$ ls
bash: Desktop/ Documents/ Download/ evolution/ Mail/ quanta/ soubor/ tmp/
Pokud v aktuálním adresáři není, pak se nezobrazí nic.
Výsledek bude vypadat asi takto: [milan@localhost adresar]$ ls
[milan@localhost adresar]$
Zobrazení obsahu adresáře pomocí zadání cesty:
/kde je cesta: /home/milan/Download /
[milan@localhost milan]$ ls /home/milan/Download
Blue Fish/ Doom/ Obrázky/ Quake 2/ www/
CoffeeCup HTML Editor/ Flash Plugins/ Psi/ Screem 0.6/
Paramert -F rozlišuje obsah adresáře na adresáře, speciální soubory, programy
a ostatní soubory.
ukázka: [milan@localhost /]$ ls -F
bin/ dev/ home/ lib/ mnt/ sbin/ Untitled1.html var/
-n vypíše počet adresářů a souborů (tj. celkem 40)
u každého adresáře vypíše práva, nejprve písmeny, pak číslicemi dále ukáže
datum a čas vzniku adresáře a na konec jméno adresáře
[milan@localhost milan]$ ls -n
celkem 40
drwxrwxr-x 3 501 501 4096 kvě 30 20:02 Desktop/
drwxr-xr-x 4 501 501 4096 kvě 29 19:38 Documents/
...
a na konec co nám o příkazu ls říkají manuálové stránky:
LS(1)
JMÉNO
ls, dir, vdir - vypíše obsah adresářů
POUŽITÍ
ls [-abcdfgiklmnpqrstuxABCFGLNQRSUX1] [-w sloupců] [-T pozic] [-I vzor]
pwd - print working directory, vypíše cestu k aktuálnímu adresáři,
ukázka:[milan@localhost milan]$ pwd
/home/milan
poznámka z manuálové stránky:
Pamatujte, že většina Unixových shellů poskytuje vestavěný příkaz pwd
podobné funkce, takže prostý příkaz pwd zadaný interaktivně bude
obvykle provádět vestavěnou verzi a nikoli tento příkaz.
cd - zajišťuje pohyb mezi adresáři
ukázka:
[milan@localhost milan]$ ls
Desktop/ Documents/ Download/ evolution/ Mail/ Obrazky/ quanta/
[milan@localhost milan]$ cd /home
[milan@localhost home]$ ls
lost+found/ milan/ petra/
[milan@localhost home]$ cd
[milan@localhost milan]$ ls
Desktop/ Documents/ Download/ evolution/ Mail/ Obrazky/ quanta/
zde je ukázán jeden ze způsobů použití příkazu cd
nejprve jsem si nechal vypsat pro kontrolu obsah aktuálního adresáře
pomocí příkazu ls
v dalším řádku (cd /home) jsem se přesunul do adresáře home, který je nad
aktuálním adresářem (milan)
zadal jsem ls a mohu adresáře na této úrovni (je zde i adresář milan ze kterého
jsem přišel)
dalším zadáním příkazu cd bez jakékoliv voleb se vrátím do domovského
adresáře milan
ls jsem zadal pro kontrolu, že je tomu skutečně tak
V příkazu cd se cesta k adresáři zadává jako ABSOLUTNÍ CESTA nebo jako
RELATIVNÍ CESTA.
Absolutní cesta začíná vždy znakem / a obsahuje celou cestu k požadovanému
adresáři. (tj. všechny adresáře, které jsou na této cestě)
ukázka:
[root@localhost /]# cd /home/milan/Documents/Milanova\ stránka/
[root@localhost Milanova stránka]#
zde jsem za příkazem cd vypsal celou cestu až k požadovanému adresáři,
to je celkem jasné, proč jsem ale použil u dvojslovného názvu Milanova stránka zápisu
/Milanova\ stránka/ ?
Podívejme se co by se stalo kdybych zadal cestu se skutečným názvem adresáře:
[root@localhost root]# cd /home/milan/Documents/Milanova stránka
bash: cd: /home/milan/Documents/Milanova: No such file or directory
bash nám píše, že soubor nebo adresář se jménem Milanova může najít,
pokud nezadáme dvojslovný název adresáře Milanova stránka jako
/Milanova\ stránka/ bude bash považovat zadaný název pouze za jednoslovný,
tedy za adresář se jménem Milanova.
Relativní cesta je brána vzhledem k aktuálnímu adresáři směrem dolů.
dejme tomu, že se chceme dostat z domovského adresáře root do adresáře koš,
který je na cestě: Desktop/Koš směrem dolů vzhledem k adresáři root,
pomocí relativní cesty to můžeme udělat dvěma způsoby:
1, Postupně
[root@localhost root]# ls
Desktop/ Documents/ Download/ evolution/ Mail/ Obrazky/ quanta/
[root@localhost root]# cd Desktop
[root@localhost Desktop]# ls
Koš/ Můj adresář
[root@localhost Desktop]# cd Koš
[root@localhost Koš]#
2, Jedním zadáním příkazu
[root@localhost root]# cd Desktop/Koš
[root@localhost Koš]#
Při zadávání relativní cesty za příkaz cd uvádíme rovnou jméno adresáře,viz 1.
(kam se chceme dostat v adresářové struktuře přímo pod aktuální adresářem)
nebo cestu od aktuálního adresáře k požadovanému adresáři (směrem dolů) viz 2.
ale vždy bez znaku /
cd přepne do aktuálního domovského adresáře (viz výše ukázku)
cd .. přepne do nadřazeného adresáře (tj. do adresáře který je o jednu úroveň výš
nad aktuálním adresářem
cd / přepne do kořenového adresáře z kteréhokoliv místa v adresářové struktuře
mkdir - make directory, pomocí tohoto příkazu se vytváří adresáře,
mkdir může vytvářet jeden nebo více adresářů najednou a to
buď v aktuálním adresáři nebo v kterémkoliv jiném adresáři
za použití absolutní nebo relativní cesty
mkdir [-p] [-m práva] [--parents] [--mode=práva] [--help] [--version]
adresář...
vytvoření jednoho adresáře v aktuálním adresáři:
[root@localhost milan]# ls
Desktop/ Documents/ Download/ evolution/
Mail/ Obrazky/ quanta/
[root@localhost milan]# mkdir adresář
[root@localhost milan]# ls
adresář/ Desktop/ Documents/ Download/ evolution/
Mail/ Obrazky/ quanta/
vytvoření více adresářů v aktuálním adresáři:
[root@localhost milan]# ls
Desktop/ Documents/ Download/ evolution/
Mail/ Obrazky/ quanta/
[root@localhost milan]# mkdir adresář1 adresář2
[root@localhost milan]# ls
adresář1/ Desktop/ Documents/ Download/ evolution/
adresář2/ Mail/ Obrazky/ quanta/
bash pozná příkaz mkdir a to, co je za mezerou, bere jako jméno adresáře,
který má vytvořit a každou další mezeru za kterou najde nějaký
řetězec bere jako jméno adresáře, který má vytvořit
vytvoření více adresářů za použití absolutní cesty:
[root@localhost home]# mkdir /home/milan/Obrazky/adresář1
/home/milan/Obrazky/adresář2
[root@localhost home]# ls /home/milan/Obrazky
adresář1/ Galaxie26.jpg* Galaxie6.jpg*
adresář2/ Galaxie27.jpg* Galaxie7.jpg* Huddle2.jpg*
černá plocha* Galaxie28.jpg* Galaxie8.jpg* Huddle3.jpg*
vytvoření více adresářů za použítí relativní cesty:
[root@localhost milan]# mkdir Obrazky/gifs/adresář1
Obrazky/gifs/adresář2
[root@localhost milan]# ls Obrazky/gifs
adresář1/ linux-logo.gif* openlogo-1000.jpg*
adresář2/ Linux-logo2.gif* ORFEUS-SPAS.in.Space*
biglogo.gif* linux-logo3.gif* redhat.gif*
rmdir - tento příkaz se používá k odstraňování adresářů,
funguje velmi podobně jako příkaz mkdir,
pokud chceme odstranit nějaký adresář, pak musíme být v adresářové struktuře
o jednu úroveň nad ním,(ukázka 1)
adresář musí být prázdný, jinak příkaz odmítne splnit svou funkci,
(ukázka 2)
pokud adresář není prázdný, musíme nejprve odstranit všechny soubory,
např. příkazem rm viz dále
ukázka 1
[root@localhost adresář]# rmdir adresář
rmdir: `adresář': No such file or directory
ukázka 2:
[root@localhost gifs]# rmdir adresář
rmdir: `adresář': Directory not empty
volby příkazu rmdir:
rmdir [-p] [--parents] [--help] [--version] adresář...
cp - příkaz sloužící ke kopírování souborů,
pozor! tento příkaz je schopen přepsat soubory bez jakékoliv výstrahy
či upozornění,
výpis z manuálových stránek:
1,cp [volby] zdroj cíl
2,cp [volby] zdroj... adresář
Volby:
[-abdfilprsuvxPR] [-S přípona-záložního-souboru]
příkaz cd lze několika způsoby (jak je vidět z výpisu)
1,první řetězec za příkazem cp je jméno souboru, který se má kopírovat
(je to tzv. zdroj, zdrojový soubor, source file)
druhý řetězec je soubor, který má být kopií prvního souboru
(je to tzv. cíl, cílový soubor, destination file)
ukázka:
[root@localhost adresář]# ls -n
celkem 0
[root@localhost adresář]# cp /home/milan/Obrazky/gifs/linux3.gif obrazek
[root@localhost adresář]# ls -n
celkem 20
-rwxr-xr-x 1 0 0 20021 čen 4 13:52 obrazek*
zde jsem zadal za příkaz cp absolutní cestu k souboru linux3.gif
(příkaz cp je schopen podle situace akceptovat i relativní cestu
nebo manipulaci v rámci aktuálního adresáře)
a přejmenoval ho na obrazek,
(to, co je za mezerou, bere jako název nový název pro kopírovaný soubor)
pokud nechceme měnit jméno souboru, pak stačí zadat:
[root@localhost adresář]# cp /home/milan/Obrazky/gifs/linux3.gif .
[root@localhost adresář]# ls -n
celkem 40
-rwxr-xr-x 1 0 0 20021 čen 4 14:06 linux3.gif*
-rwxr-xr-x 1 0 0 20021 čen 4 13:52 obrazek*
cílový soubor jsem nahradil .
2,cp může kopírovat soubory i do jiného adresáře než aktuálního
a kopírovaných adresářů může být i víc než jeden
ukázka:
[root@localhost gifs]# cp linux6.gif linux7.gif linux8.gif adresář
[root@localhost gifs]# ls adresář
linux3.gif* linux6.gif* linux7.gif* linux8.gif* obrazek*
v tom to případě bere příkaz cp všechny řetězce oddělené mezerou za soubory,
které má kopírovat kromě posledního, ten považuje za adresář, kam má tyto soubory
zkopírovat
pozor! pokud by se už v adresáři jménem adresář už nacházel soubor se stejným
jménem jako kopírováný soubor (např. linux7.gif), pak ho bez milosti přepíše
a původní soubor bude nenávratně ztracen
rm - odstraňuje soubory, používáni tohoto příkazu vyžaduje opatrnost jinak snadno
příjdete o svá data !
poznámka z manuálových stránek:
Pro soubory, ke kterým uživatel nemá právo zápisu, se bude příkaz rm v
případě, že standardní vstup je terminál a nejsou zadány volby -f ani
--force, ptát uživatele, jestli chce soubor zrušit. Jestliže odpověď
nezačíná znaky `y' nebo `Y', příslušný soubor nebude smazán.
ukázka:
[root@localhost gifs]# rm adresář/linux6.gif
rm: remove regular file `adresář/linux6.gif'? y
[root@localhost gifs]# ls adresář
linux3.gif* linux7.gif* linux8.gif* obrazek*
může mazat více souborů najednou:
[root@localhost adresář]# rm linux3.gif linux7.gif linux8.gif
rm: remove regular file `linux3.gif'? y
rm: remove regular file `linux7.gif'? y
rm: remove regular file `linux8.gif'? y
[root@localhost adresář]# ls
obrazek*
to, že se mě bash na smazání každého souboru zeptal, není pravidlem
a záleží na nastavení vaší konzole
(klidně se vás nemusí zeptat vůbec na nic a rovnou příkaz provede)
mv - přesouvá soubory,
(zkopíruje soubor na určené místo a zdrojový soubor smaže)
1,mv [volby] zdroj cíl
2,mv [volby] zdroj... adresář
Volby:
[-bfiuv] [-S přípona-záložního-souboru]
1,pokud je druhým parametrem jméno souboru, pak mv zdrojový soubor přejmenuje
ukázka:
[root@localhost adresář]# ls
Ilustrace
[root@localhost adresář]# mv Ilustrace Obrázek
[root@localhost adresář]# ls
Obrázek
2,pokud je druhým parametrem jméno adresáře, pak soubor do tohoto adresáře přesune:
[root@localhost adresář]# mv Obrázek /home/milan
[root@localhost adresář]# ls /home/milan
Desktop/ Download/ Mail/ Obrazky/ soubor/
Documents/ evolution/ Obrázek quanta/ tmp/
pozor! pokud je v adresáři, do kterého je soubor přemisťován již soubor,
stejného jména, pak bude přepsán (podobně jako u příkazu cp)
existuje jedna možnost aby vás příkazy cp, rm a mv informovali o své činnosti
bez ohledu na nastavení vaší konzole:
je to volba -i
ukázka:
[root@localhost milan]# rm -i Obrázek
rm: remove regular file `Obrázek'? y
Ještě pár praktických příkazů na konec
su - 1,super user, super uživatel, po zadání tohoto příkazu budete vyzváni
k zadání hesla root, potom budete mít superuživatelská práva (např. vypnout
počítač přímo z konzole, vstup do všech adresářů a mnoho dalších...)
2,pomocí su se můžete přihlásit jako jiný uživatel
ukázka 1:
[milan@localhost adresář]$ su
Password:
[root@localhost adresář]#
při zadávání hesla se nic nezobrazuje, zůstává ve stejném adresáři
ukázka 2:
[milan@localhost adresář]$ su petra
Password:
[petra@localhost adresář]$
zde po su následuje uživatelské jméno a pak heslo tohoto uživatele
exit - ukončení konzole, pokud jste přihlášen jako super uživatel, nebo jako
jiný uživatel, pak ukončí tento režim
ukázka:
[root@localhost adresář]# exit
exit
[milan@localhost adresář]$
shutdown -h now, poweroff - příkazy sloužící k vypnutí počítače přímo z konzele,
k této činnosti musíte mít super uživatelská práva
startx, xinit - po zadání jednoho z těchto příkazů se přepnete z textového režimu do
GUI (graphic user interface, grafické rozhraní)
Tak a to je vše, co se týká základních příkazů příkazového interpetu BASH.
Odhaduji, že je to tak 1% informací ,které jsou o BASHy potřeba vědět, abychom
využili jeho schopností naplno.
Ale toto minimum je slušný základ, se kterým se můžete směle pustit do objevování BASHe.
Přeji hodně zdaru.
Vše, co jsem na této stránce uvedl, jsem také na své konzoli vyzkoušel a to, co je
uvedeno v ukázkách jsou zkopírované výpisy z BASHe.