Search
Příkazová řádka (anglicky shell) je univerzálním uživatelským rozhraním operačního systému. Umožňuje základní ovládání operačního systému (procházení adresářové struktury, práce se soubory, vyhledávání …), poskytuje rozhraní uživatelským programům a hlavně umožňuje řetězit vstupy a výstupy jednotlivých programů. Na všech POSIXových operačních systémech (Linux, BSD, MacOS, Unix,..) je rozhraní tak podobné že se s ním naučíte pouze jednou. Je primárním rozhraním pro mnoho programů, například kompilátoru (a to i na Windows).
V tomto článku se budeme bavit konkrétně o příkazové řádce BASH, která je výchozí na Ubuntu a většině ostatních linuxových distribucích a i na MacOS.
Do příkazové řádky se dostanete (na Ubuntu a MacOS) pomocí programu Terminal, který spustíte běžným způsobem přes dash nebo spotlight. Na Ubuntu je výchozí zkratka Ctrl+Alt+T.
Ctrl+Alt+T
Ve Windows existuje příkazová řádka cmd.exe, pomocí které lze též ovládat kompiler. Cmd.exe lze spustit pomocí dialogového okna Run: Win+R, cmd, Enter. Cmd.exe se ale velmi liší od BASHe a bude pro vás mnohem jednodušší pracovat s WSL. Ten si můžete nainstalovat podle návodu zde.
Win+R, cmd, Enter
BASH je jednoduchý programovací jazyk, ve kterém jdou psát i poměrně složité programy. Ale pro naší potřebu nám stačí pochopit jenom dva, tři základní principy.
Rozhraní k BASHi je příkazová řádka, command line, nebo taky REPL (Read Evaluate Print Loop). Vše se děje tak, že píšete do okna a po stisknutí enteru se provede jeden řádek vašeho “programu” a vypíše se na obrazovku jeho výstup. Typicky BASH vypíše na obrazovku prompt když čeká na váš vstup, ten většinou vypadá jako tvojejmeno@hostname:~$, v tomto textu budu zkracovat jenom jako $.
tvojejmeno@hostname:~$
$
Základní struktura příkazu:
prikaz [argumenty]
Příkaz může být název vestavěného příkazu BASHe nebo název externího programu, pro naše účely v tom není rozdíl a můžeme klidně tvrdit, že každý příkaz je jeden program.
Zkuste použít příkaz echo (ozvěna) s různými argumenty. Měl by se chovat stejným způsobem jako je znázorněno tu:
echo
$ echo $ echo Hello PRP! Hello PRP! $
Většina programů umí víc věcí než echo. Pro specifikování možností, se kterými program poběží, se používá konvence takzvaných vlajek (flags) nebo možností (options). Konvence říká že argumenty ve tvaru -x (kde x je nějaké písmeno) nebo –long-option upravují chování programu. Zdůrazňuji, že je to pouze konvence a některé programy se mohou (budou) chovat jinak, ale většina programů se jí drží. Nejpraktičtější vlajku kterou bude znát většina programů (v závislosti na systému možná i echo) je -h nebo —-help.
-x
–long-option
-h
—-help
ls
pwd
whoami
cd
$ cd --help cd: cd [-L|[-P [-e]] [-@]] [dir] Change the shell working directory. Change the current directory to DIR. The default DIR is the value of the HOME shell variable. The variable CDPATH defines the search path for the directory containing DIR. Alternative directory names in CDPATH are separated by a colon (:). A null directory name is the same as the current directory. If DIR begins with a slash (/), then CDPATH is not used. If the directory is not found, and the shell option 'cdable_vars' is set, the word is assumed to be a variable name. If that variable has a value, its value is used for DIR. Options: -L force symbolic links to be followed: resolve symbolic links in DIR after processing instances of '..' -P use the physical directory structure without following symbolic links: resolve symbolic links in DIR before processing instances of '..' -e if the -P option is supplied, and the current working directory cannot be determined successfully, exit with a non-zero status -@ on systems that support it, present a file with extended attributes as a directory containing the file attributes The default is to follow symbolic links, as if '-L' were specified. '..' is processed by removing the immediately previous pathname component back to a slash or the beginning of DIR. Exit Status: Returns 0 if the directory is changed, and if $PWD is set successfully when -P is used; non-zero otherwise. $
Jediný příkaz který opravdu potřebujete znát je man. Ten otevírá manuálové stránky. Například když chcete vědět s jakou vlajkou se zapne výpis varování pro gcc (GNU Compiler Collection), stačí zavolat
man
gcc
$ man gcc
h
q
Manuálové stránky jsou šikovné i jako reference pro programování v C. V sekci 3 jsou popsané téměř všechny funkce standardní knihovny C. Do sekce 3 se dostanete tak, že jí specifikujete jako první argument programu man. Například
$ man 3 printf
dir
tree
mkdir
cp
copy
mv
move
rm
del
rmdir /S
touch
find
locate
cat
type
hexdump
fc