Minimální funkcionalita

Linuxový shell

Cvičení

Soubory a souborový systém

SSŠVT

Emulace shellu v Linuxu

Minimální funkcionalita

Tato část projektu LinSh bude umět reagovat na následující příkazy:


Příkaz ls

Příkaz ls (list) zobrazí obsah adresáře. Pokud není cesta k adresáři uvedena v parametrech na příkazové řádce, zobrazí se obsah aktuálního adresáře.

Příkaz ls může mít tyto tzv. switche, které modifikují jeho chování:

-l
Na každém řádku bude pouze jeden soubor/adresář a u něj budou informace o jeho velikosti, datumu poslední modifikace a přístupových právech (zda je pouze ke čtení, nebo lze modifikovat, zda je spustitelný apod.). Případně ještě, kdo (který uživatel) tento soubor/adresář vlastní.
-a
Do výpisu se zahrnou i dva speciální adresáře (. = tečka znamená adresář, ve kterém jsem, něco jako this, .. = dvě tečky za sebou odkazují na rodičovský adresář).

Pokud uživatel neuvede žádný switch, vypíše se pouze seznam názvů souborů a adresářů z daného adresáře (ve dvou sloupcích). Switche lze kombinovat.

Příklady:

Příkaz:

ls -la
        

Výsledek:

drwxr-xr-x  3 paja paja 4096 Oct 20 12:16 .
drwxr-xr-x 34 paja paja 4096 Oct 20 11:30 ..
-rw-r--r--  1 paja paja 3655 Sep 25 06:14 bo.html
-rw-r--r--  1 paja paja 1647 Sep 25 06:14 csv.html
drwxr-xr-x  4 paja paja 4096 Oct 20 11:50 exercises
-rw-r--r--  1 paja paja 1323 Oct 20 12:15 index.html
-rw-r--r--  1 paja paja 1565 Sep 25 06:14 json.html
-rw-r--r--  1 paja paja 3097 Sep 25 06:14 read.html
-rw-r--r--  1 paja paja  403 Feb  8  2022 StreamReaderExample.csx
-rw-r--r--  1 paja paja 8872 Sep 25 06:14 system-io.html
-rw-r--r--  1 paja paja 1713 Sep 25 06:14 text-file.html
-rw-r--r--  1 paja paja 1726 Sep 25 06:23 validate.html
-rw-r--r--  1 paja paja 2709 Sep 25 06:14 write.html
-rw-r--r--  1 paja paja 2078 Sep 25 06:14 xml.html
        

Příkaz:

ls -l
        

Výsledek:

-rw-r--r-- 1 paja paja 3655 Sep 25 06:14 bo.html
-rw-r--r-- 1 paja paja 1647 Sep 25 06:14 csv.html
drwxr-xr-x 4 paja paja 4096 Oct 20 11:50 exercises
-rw-r--r-- 1 paja paja 1323 Oct 20 12:15 index.html
-rw-r--r-- 1 paja paja 1565 Sep 25 06:14 json.html
-rw-r--r-- 1 paja paja 3097 Sep 25 06:14 read.html
-rw-r--r-- 1 paja paja  403 Feb  8  2022 StreamReaderExample.csx
-rw-r--r-- 1 paja paja 8872 Sep 25 06:14 system-io.html
-rw-r--r-- 1 paja paja 1713 Sep 25 06:14 text-file.html
-rw-r--r-- 1 paja paja 1726 Sep 25 06:23 validate.html
-rw-r--r-- 1 paja paja 2709 Sep 25 06:14 write.html
-rw-r--r-- 1 paja paja 2078 Sep 25 06:14 xml.html
        

Příkaz:

ls
        

Výsledek:

bo.html     StreamReaderExample.csx
csv.html    system-io.html
exercises   text-file.html
index.html  validate.html
json.html   write.html
read.html   xml.html
        

Příkaz:

ls -la exercises/
        

Výsledek:

drwxr-xr-x 4 paja paja 4096 Oct 20 11:50 .
drwxr-xr-x 3 paja paja 4096 Oct 20 12:16 ..
drwxr-xr-x 2 paja paja 4096 Oct 20 12:00 csvdb
-rw-r--r-- 1 paja paja  854 Oct 20 11:56 index.html
drwxr-xr-x 2 paja paja 4096 Oct 20 12:00 linsh
        

Příkaz pwd

Příkaz pwd (print working directory) pouze vypíše aktuální adresář (absolutní cestu k němu a jeho název).

Příkaz:

pwd
        

Výsledek:

/c/Users/foltyn/MyProjects/prgsssvtcz/web/files
        

Příkaz cd

Příkaz cd (change directory) změní aktuální adresář na adresář, který je předán jako parametr.

Příkaz (včetně promptu):

/c/Users/foltyn/MyProjects/prgsssvtcz/web/files$ cd /c/Windows
        

Výsledek (nic se nevypíše, jen se změní prompt):

/c/Windows$ _
        

Příkaz cat

Příkaz cat (catalogue) vypíše obsah textového souboru, jehož jméno (případně i cestu) předáme jako parametr.

Příkaz:

cat StreamReaderExample.csx
        

Výsledek:

using System;
using System.IO;

// ...

StreamReader sr;
try
{
    sr = new StreamReader(@"C:\MyDir\MyFile.txt");
    while ( ! sr.EndOfStream )
    {
        string line = sr.ReadLine();
        if (line != null)
        {
            Console.WriteLine(line);
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
finally
{
    if (sr != null)
    {
        sr.Close();
    }
}
        

Příkaz less

Příkaz less (opak jednoduššího "more") vypíše obsah textového souboru, jehož jméno (případně i cestu) předáme jako parametr. Umožňuje pak obsah souboru scrollovat (po řádcích, případně po stránkách) vpřed i vzad. (Starší příkaz more uměl scrollovat pouze vpřed, nešlo se "vracet".)


Příkaz grep

Příkaz grep (nevím, co to znamená) hledá řádky se zadaným řetězcem v zadaném textovém souboru a vypisuje je na konzoli.

Příkaz:

grep "sr" StreamReaderExample.csx
        

Výsledek:

StreamReader sr;
    sr = new StreamReader(@"C:\MyDir\MyFile.txt");
    while ( ! sr.EndOfStream )
        string line = sr.ReadLine();
    if (sr != null)
        sr.Close();
        

Příkaz wc

Příkaz wc (word count) počítá znaky, slova nebo řádky v zadaném textovém souboru. To, co se počítá, záleží na switchi. Defaultně počítá řádky, slova i znaky. (Slovo = souvislá posloupnost znaků, kde není oddělovač - mezera, tabulátor, konec řádku.)

-c
Počítá znaky (characters).
-w
Počítá slova (words).
-l
Počítá řádky (lines).

Příkaz:

wc -l StreamReaderExample.csx
        

Výsledek:

29 StreamReaderExample.csx
        

Příkaz:

wc -w StreamReaderExample.csx
        

Výsledek:

49 StreamReaderExample.csx
        

Příkaz:

wc -c StreamReaderExample.csx
        

Výsledek:

403 StreamReaderExample.csx
        

Příkaz:

wc StreamReaderExample.csx
        

Výsledek:

 29  49 403 StreamReaderExample.csx