gedit
nebo vim
. Určitě je také možné použít komplexní prostředí jako je např. CLion. Nicméně jeho konfigurace a prozkoumání všech možností, může velmi rychle překročit časovou dotaci předmětu.
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 nebo modernější varianty PowerShell.exe, případně alternativou Z-shell. 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ů.
prikaz [přepínače] [parametry|argumenty|jména souboru(ů)]
Příkaz | Používané přepínače | Význam |
---|---|---|
ls | -l -t | vypíše obsah aktuálního pracovního adresáře (list directory contents) |
cd | změní aktuální pracovní adresář (change directory) | |
pwd | vypíše absolutní adresu aktuálního pracovního adresáře (print working directory name) | |
tree | vypíše strukturu aktuálního pracovního adresáře včetně podadresářů formou stromu |
Příkaz | Používané přepínače | Význam |
---|---|---|
mkdir | Vytvoří adresář zadaného jména (make directories ) | |
cp | -r | Zkopíruje soubor zadaného jména (copy files) |
mv | Přesune (přejmenuje) soubor zadaného jména (move files) | |
rm | -r -f | Odstraní soubor zadaného jména (remove directory entries) |
touch | | Vytvoří soubor zadaného jména, pokud takový existuje, jinak aktualizuje tzv. modification time. |
man touch
, případně návod touch —-help
.
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 vytvořené databáze. |
|
cat | Vypíše obsah souboru jako text | |
echo | Vypíše obsah argument na standardní výstup, např. návratovou hodnota posledního příkazu echo $? nebo proměnná prostředí echo $HOME nebo echo $PWD . |
|
hexdump | -C | Vypíše obsah souboru v hexadecimálním tvaru doplněný o adresy paměti. |
Adresář
(anglicky directory
) je objektem souborového systému s přesně definovaným umistěním v rámci hiearchie souborů. Složka
(folder
) je motivována grafickým rozhraním reprezentující nějaký konkrétní adresář. https://en.wikipedia.org/wiki/Directory_(computing)#Folder_metaphor.
Například domovský adresáře uživatele user
najdeme typicky v adresáři /home/user
. Složku Dokumenty můžeme například najít na grafického rozhraní a podle volby jazyka prostředí může odkazovat na /home/user/Documents
nebo jinou složkou, třeba i vzdálený adresář.
prp
a v něm lab01
. Ideálně přímo v domovském adresáři, alternativně například ve složce Documents
.
prp
vytvořte adresář lab01
.
lab01
vytvořte textový soubor se jménem prp-lab01.txt
~/ctu-fee
, kde symbol ~
reprezentuje domovský adresář, tež odkazovaný v proměnné prostředí HOME
, odkazované např. printenv $HOME
.
prp-lab01.txt
přejmenujte na main.c
.
➜ ~ pwd /home/jf ➜ mkdir -p prp/lab01 ➜ touch prp/lab01/prp-lab01.txt ➜ tree prp prp └── lab01 └── prp-lab01.txt 1 directory, 1 file ➜ mkdir ctu-fee ➜ mv prp/lab01 $HOME/ctu-fee/prp-lab01 ➜ cd ctu-fee/prp-lab01 ➜ pwd /home/jf/ctu-fee/prp-lab01 ➜ ls prp-lab01.txt ➜ mv prp-lab01.txt main.c ➜ cd ➜ tree ctu-fee ctu-fee └── prp-lab01 └── main.c 1 directory, 1 fileJednotlivé kroky můžete kontrolovat například pohledem grafického správce souborů.
prp-lab01.sh
, který provede uvedené kroky v posloupnosti, ale místo domovského adresáře umístě podadresáře a soubory do pracovního prostoru /tmp
, například odkazovaného /tmp/$PWD
.
chmod +x prp-lab01.sh
pro přímé spuštění ve stylu ./prp-lab01.sh
nebo jej můžete spustit v rámci konkrétní instance příkazového interpretu např. . ./prp-lab01.sh
.
cd
pro změnu aktuálního pracovního adresáře, můžete se k předchozím adresáři vrátit cd -
, viz například https://www.youtube.com/watch?v=zvKRKU-ex6g.
dst=/tmp/$HOME
použitelnou třeba v mkdir -p $dsts/prp/lab01
.
. ./prp-lab01.sh /tmp/home/jf/prp └── lab01 └── prp-lab01.txt 1 directory, 1 file /tmp/home/jf/ctu-fee └── prp-lab01 └── main.c 1 directory, 1 file
wget https://cw.fel.cvut.cz/wiki/_media/courses/b0b36prp/labs/setup_gedit.zip
unzip setup_gedit.zip ./setup_gedit.sh
Klíčové nastavení editoru je pro formátování zdrojového kódu. V předmětu PRP je preferováno formátování nástrojem clang-format a nastavením stylu:
{BasedOnStyle: llvm, IndentWidth: 4, BreakBeforeBraces: Linux}
Formátování zdrojového kódu pak provedete např. následovně:
clang-format -style='{BasedOnStyle: llvm, IndentWidth: 4, BreakBeforeBraces: Linux}' muj_kod.c > formatovany_kod.c
V případě použití vývojového prostředí VS Code lze lokálně nastavit formátování vytvořením souboru .clang-format
, viz Programovací prostředí. Výstup pak může například vypadat následovně.
// example program in C #include <stdio.h> int main() { printf("Hello PRP!\n"); return 0; }
Překlad na spustitelný soubor provádíme z příkazové řádky příkazem
clang -Wall -pedantic -std=c99 main.c -o mainpřípadně
gcc -Wall -pedantic -std=c99 main.c -o main
Program spouštíme z příkazové řádky příkazem
./main
V prostředí VS Code může vypadat interaktivní práce tak, že si stáhneme soubor domácího úkolu v prohlížeči do adresáře ~/Downloads
a dále vše řešíme už jen z VS Code s využitím integrovaného terminálu.
kde můžeme též využít příložena Makefile
a vytvořit si zip
soubour voláním make zip
.
main.c
napište zdrojový kód programu, který vypíše na standardní výstup “Hello PRP!”.
main.zip
, například pomocí příkazu: “zip main.zip main.c
“.
$?
a vyzkoušet si různé návratové hodnoty programu a řetězení kompilace a spuštění programu, včetně např. podmíněného spuštění programu v závislosti na úspěchu kompilace programu.