{{indexmenu_n>1}}
====== Základní příkazy příkazové řádky ======
Příkazová řádka je základním uživatelským rozhraním každého systému. Příkazová slouží k ovládání operačního systému a například ke kompilaci programů pomocí kompilátoru. V Ubuntu lze příkazovou řádku spustit pomocí klávesové zkratky **ctrl+alt+t**. Ve Windows je nejrychlejší způsob spuštění příkazové řádky pomocí **win+r, "cmd", enter** (win+r spustí dialogové okno, které po napsání cmd spustí program cmd.exe -- úříkazová řádka Windows). V Mac OS X se terminál spouští podobně jako ve Windows pomocí sekvence **command+space, "terminal", enter**.
===== Práce v příkazové řádce =====
Příkazová řádka je uživatelské rozhranní, ve kterém uživatel komunikuje s počítačem podobně jako při psaní programu, tj. píše příkazy, které počítač vykonává tak, jako když programátor píše program (recept), který následně spustí.
V případě přímého ovládání počítače a interakce s operačním systémem je využito interaktivního režimu, ve kterém počítač reaguje na každý příkaz, který je v příkazové řádce napsán a odeslán počítači ke zpracování klávesou "''Enter''".
Data jsou v počítači uložena ve formě souborů, k nímž je přístup uživatelů zprostředkován operačním systémem. Proto základní práce s počítačem spočívá v interakci s operačním systémem a práci se soubory.
Příkazová řádka je přítomna ve všech operačních systémech. Ve Windows je příkazová řádka přístupna pomocí programu **cmd.exe**, na systémech unixového typu běží příkazová řádka
jako tzv. shell dostupný buď přímo v textovém režimu, nebo přes emulátory z grafického rozhranní (na Linuxu **Xterm, Gnome terminal, Konsole ...**, na OS X **terminal**). Příkazová řádka 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 rozhranní uživatelským programům a hlavně umožňuje řetězit vstupy a výstupy jednotlivých programů.
Velkou výhodou ovládání počítače sekvencí příkazu je opakovatelnost, neboť se vlastně jedná o textový zápis operací podobně jako při psaní programu.
Takový zápis lze uložit do souboru a posleze replikovat, nebo vytvořit takzvaný skript, který lze následně opakovaně spouštět a tím vlastně vytvořit nový příkaz.
==== Typická struktura příkazu ====
''prikaz [přepínače] [parametry]''
==== Příkazy navigace v adresářové struktuře ====
^ Příkaz ^ Používané přepínače ^ Význam ^
|''ls''| -l -t | vypíše obsah aktuálního pracovního adresáře |
|''cd''| | změní aktuální pracovní adresář |
|''pwd''| | vypíše absolutní adresu aktuálního pracovního adresáře |
|''tree''| | vypíše strukturu aktuálního pracovního adresáře včetně podadresářů formou stromu|
==== Příkazy práce se soubory a adresáři ====
^ Příkaz ^ Používané přepínače ^ Význam ^
|''mkdir''| | vytvoří adresář zadaného jména|
|''cp''| -r | zkopíruje soubor zadaného jména|
|''mv''| | přesune soubor zadaného jména |
|''rm''| -r -f | odstraní soubor zadaného jména|
|''touch''| | vytvoří soubor zadaného jména |
==== Ostatní důležité příkazy ====
^ Příkaz ^ Používané přepínače ^ Význam ^
|''man''| | vypíše manuálovou stránku zadaného příkazu |
|''find''| | vyhledá soubor zadaného jména v aktuálním adresáři|
|''locate''| | jako ''find'', ale hledá v kompletní adresářové struktuře |
|''cat''| | vypíše obsah souboru jako text |
|''hexdump''| -C | vypíše obsah souboru v hexadecimálním tvaru doplněný o adresy paměti |
|''diff''| -y -W 100 file1 file2 | vypíše rozdíl jednotlivých souborů stejně jako BRUTE |
|''xxd'' | -g 1 -c 8 pub01.out > pub01.hex | převede výstup do hex podoby |
|''valgrind'' | --max-stackframe=1000000000 --leak-check=full --error-exitcode=191 ./program < input | kontrola programu jako přes BRUTE |
Diff syntaxe pro Windows
''C:\MinGW\msys\1.0\bin\diff -y -W 100 pub01.out pub02.out''
====== Adresářová struktura ======
Hierarchie adresářů (složek) a souborů je uvnitř počítače reprezentována pomocí stromu. Při práci s adresáři rozlišujeme mezi absolutními a relativními adresami. Relativní adresa popisuje cestu z aktuálního adresáře.
Nechť se nacházíme uvnitř adresáře bin ve složce Lab03 a chceme znát adresu k souboru notes ve složce Lab01. Relativní adresa (vůči aktuálnímu pracovnímu adresáře) je ../../Lab01/notes.txt a absolutní adresa je /home/kubikj/PRP/Lab01/notes.txt.
{{:courses:b0b36prp:tutorials:adresare.png|}}
====== Příkazy ======
===== pwd (print working directory) =====
Příkaz pwd vypíše absolutní adresu aktuálního pracovního adresáře.
{{:courses:b0b36prp:tutorials:pwd.png?600|}}
===== ls (list) =====
Tento příkaz vypíše jména všech souborů a složek uvnitř aktuálního pracovního adresáře.
{{:courses:b0b36prp:tutorials:ls.png?600|}}
===== cd (change directory) =====
Tento příkaz změní aktuální pracovní adresář. Za klíčové slovo cd lze napsat absolutní adresu i relativní adresu. Dvě tečky za klíčovým slovem cd přesunou aktuální prcovní adresář do nadřazeného adresáře.
{{:courses:b0b36prp:tutorials:cd.png?600|}}
Povšimněme si, že dvě tečky (..) lze použít i vícenásobně. Poslední příkaz cd se vrátí o dva adresáře výše (tj do složky PRP) a odtud se přesune do složky lab02.
===== ostatní příkazy =====
Příkaz **mkdir** (make directory) vytvoří adresář daného jména uvnitř aktuálního pracovního adresáře. Příkaz **rmdir** (remove directory) smaže adresář daného jména, ovšem pouze v případě, že je tento adresář prázdný. Příkaz **clear** vymaže obrazovku příkazové řádky. Pomocí tabulátoru lze uvnitř příkazové řádky doplňovat slova. Příkaz **touch** se "dotkne" souboru nebo adresáře, což znamená, že změní datum poslední změny na aktuální systémové datum a v případě neexistence souboru nebo adresáře ho vytvoří.
{{:courses:b0b36prp:tutorials:mkdir_touch.png?600|}}
Pomocí šipky nahoru a šipky dolu lze procházet historii zadaných příkazů. Klávesa tabulátor doplňuje názvy souborů a složek. Příkaz man a jméno příkazu otevře jeho manuál.