Práce s adresáři

Příkaz pwd zobrazí cestu a název právě aktuálního adresáře. Pokud jsme v domovském adresáři uživatele bfu, příkaz pwd zobrazí:

pwd
/home/bfu

Nový adresář vytvoříme příkazem mkdir. Takto se vytvoří nový podadresář texty v aktuálním adresáři:

mkdir texty

Již existující, prázdný adresář lze smazat příkazem rmdir adresář.

Pro změnu aktuálního adresáře použijeme příkaz cd. Lze použít absolutní i relativní cestu, takže do podadresáře texty aktuálního adresáře bfu lze přejít z tohoto adresáře jednou z těchto možností:

cd texty
cd /home/bfu/texty
cd ./texty

Příkaz cd bez parametru způsobí přechod do domovského adresáře uživatele.

Výpis souborů v adresáři, získáme příkazem ls. Bez parametrů zobrazí stručný seznam názvů souborů v adresáři. Při použití parametru -l získáme detailní výpis, přidáme-li ještě parametr -a, ve výpisu se objeví i skryté soubory. Lze samozřejmě uvést specifikaci souborů které se mají zobrazit, včetně cesty. Pokud není uvedena, ls vypíše všechny soubory v aktuálním adresáři. Příklady:

ls p*.txt     #vypíše soubory které začínají písmenem p
ls p??        #vypíše soubory, které začínají p a za ním jsou
              #právě 2 znaky (např. p01, p02)
ls /dev       #vypíše obsah adresáře /dev
ls -l -R      #vypíše adresář včetně podadresářů

K této skupině příkazů snad ještě můžeme připojit příkaz du, který vypíše zaplnění diskového prostoru.

Práce se soubory

Soubor lze zkopírovat příkazem cp. Lze kopírovat do souboru jiného jména, nebo soubor pod stejným jménem do jiného adresáře. Například:

cp /mnt/floppy/01.jpg /home/bfu  #takto zkopírujeme soubor
                                 #z diskety do adresáře uživatele bfu
cp 01.jpg kopie.jpg              #a nakopírovaný soubor si pak uložíme jako kopii

Zvláště pokud kopírujeme hromadně více souborů, bude užitečný parametr -i , při jehož použití bude nutné potvrdit každý přepisovaný, již existující soubor. Jestliže ve výstupním adresáři již existuje soubor 01.jpg, pak po příkazu

cp -i /mnt/floppy/*.jpg

se zobrazí dotaz:

cp ovewrite '01.jpg'?

Aby se soubor přepsal, je třeba ho potvrdit stiskem klávesy y.
Pro zachování starší verze přepisovaného souboru lze použít parametr -b, který vytvoří archivní kopii přepisovaného souboru.

Obsah adresáře, včetně podadresářů lze zkopírovat s pomocí parametru -r.

cp -r . /tmp

Podobnou syntax má příkaz mv, který soubor přenese do jiného adresáře, užívá se i pro přejmenování souboru.

mv 01.jpg nejlepsi.jpg    #obrazek přejmenuje
mv 01.jpg obrazky         #přenese do podadresáře obrazky (musí existovat)

Existující soubor lze smazat příkazem rm. I zde lze pro bezpečnější rušení více souborů použít parametr -i, který si vynutí potvrzování každého souboru samostatně.

rm /home/bfu/01.jpg

Pro rychlé prohlížení souborů na obrazovce můžeme použít příkazy cat a more.
Příkaz more je výhodný v tom že stránkuje, po zaplnění obrazovky výpis zastaví a čeká na pokyn k dalšímu posunu stiskem klávesy. Příkaz less je pak alternativou k příkazu more.
Příkaz cat naproti tomu můžeme využít k rychlému vytvoření krátkého textového souboru:

cat >poznamka.txt
 1.radek
 2.radek

po posledním řádku stisknout Ctrl+D

Archivace

Tar

tar = tape archiver
program pro archivaci souborů, který je schopen sloučit (spakovat) velké množství souborů do jediného archivního souboru, přičemž zachovává veškeré informace o souborech (čas vytvoření, přístupová práva, atd.)
Použití:

tar functionoptions files

Parametr function může být:

Nejčastěji používané volby options jsou tyto:

Spakování:

tar cf moje_sbaleno moje_skripty

Rozpakování:

tar xvf moje_sbaleno

Zip a Unzip

zip -r zazipovano.zip /home/kindle/
unzip zazipovano.zip

Filtry

Cat a Tac

Filtry jsou příkazy pro práci s textovými soubory. Ty na vstupu, podle zadaných parametrů zpracují text nebo textový soubor. Zpracovaný text odešlou na standardní výstupní zařízení – obrazovku (terminál).
Význam:

  • Pro efektivní práci s konfiguračními soubory, protože většina konfiguračních souborů v Linuxu je v textové podobě
  • Umožňují filtrovat výstupy příkazů při vytváření „kolon“ (spojování příkazů pomocí roury/pipe)

Příkaz cat posílá vstup na standardní výstup – začíná od prvního řádku, narozdíl od příkazu tac, který posílá vstup na standardní výstup, ale začíná od posledního řádku.
Použití:

  • Vypíše obsah souboru po řádcích na obrazovku
  • Přeměňuje obsah souborů soubor1, 2 a 3 do jednoho souboru (spojování souborů)
cat  soubor1 soubor2 soubor3 > soubor
  • Vytvoří soubor do kterého ukládá vstup z klávesnice, vstup je ukončen sekvencí [CTRL-C]
cat  > soubor  
   Petr
   Karel
   Jana
  Ctrl-C

Head a Tail

Příkaz head vypisuje prvních n-řádků ze začátku daného souboru. Defaultně (bez parametru) vypíše prvních 10 řádků.

head soubor
head –počet_řádků soubor

Příkaz tail vypíše n-řádků od konce souboru. V základu, tedy bez parametru, vypíše posledních 10 řádků.

tail soubor
tail –n počet_řádků soubor

Použití: pro čtení logů,
parametr –f způsobí , že po přečtení n-řádků ze souboru se příkaz neukončí a vypisuje dále nově příchozí data.

tail -f /var/log/messages

Grep

Vyhledá a vypíše ze vstupu / vstupního souboru všechny řádky, které obsahují zadaný řetězec.

grep "Kája  Mařík" text.txt

Vypíše všechny řádky z text.txt, které obsahují řetězec Kája Mařík

ls | grep  "te"

Vypíše všechny soubory v aktuálním adresáři, které obsahují řetězec te.
Používá řadu voleb, některé z nich:

  • -i potlačuje citlivost na velká/malá písmena
  • -w vypíše řádky, které obsahují řetězec jako slovo (před a za je mezera)
  • -v vypíše všechny řádky, které řetězec neobsahují
grep –v  \#  /etc/inetd.conf

Příkaz vypíše všechny nezakomentované řádky v zadaném konfiguračním souboru (# označuje ve skriptech řádky komentáře) a (\ potlačuje speciální význam některých znaků, znak se bude brát jako obyčejný řetězec).

Cut

Slouží k extrahování polí nebo znaků z daného souboru či výstupu.

  • -c (character specifier) slouží k určení znaků, které se mají vypisovat - za volbu uvádíme pořadová čísla znaků
  • -f (field specifier) určení polí, která se mají vypisovat - za volbu uvádíme pořadová čísla polí
  • -dznak (delimiter) - uvedený oddělovací znak umožní identifikovat pole
cut -d: -f1,3 /etc/passwd

Ze souboru passwd vybere z každého řádku: pole první (login name) a pole třetí (UID).

Paste

Tento příkaz umožňuje spojovat více souborů do jednoho a to tak, že spojí soubory do sloupců – vždy řádek jednoho s řádkem dalšího.

cat > s1    cat > s2    paste s1 s2 
 modrá       barva       barva  modrá
 rychlé      auto        auto rychlé
 studené     pivo        pivo studené
 [CTRL-C]    [CTRL-C]

Sort

Setřídí vstup / vstupní soubor a to po řádcích podle ASCII tabulky.
Obsahuje řadu přepínačů:

  • -k pole - určuje podle kterého pole se bude třídit
  • -f nerozlišuje se mezi malými a velkými písmeny
  • -n číselné třídění
  • -r reverzní třídění
  • -b jsou ignorovány mezery a tabulátory na začátku řádku
wc -l * | sort -r

Setřídí soubory podle klesajícího počtu řádků.

nl

Očísluje standartní vstup a na standartní výstup vypíše výsledek.
Použití:

ls | nl

wc

Vypíše počet znaků, slov a řádků standartního vstupu na standartní výstup.
wc -l zobrazí počet řádků standartního vstupu. wc -lwc program sám o sobě vypíše tři čísla, které vypočítal ze standartního vstupu. Jedná se (zleva doprava) o počet řádků, počet slov, počet znaků.
Použití:

ls | wc

Diff

diff [volby] soubor1 soubor2

Při porovnávání textových souborů příkaz diff nalezne změny v libovolném znaku na řádku, tedy i např. přidání jedné mezery. Program se snaží nalézt změněné řádky, vložené části textu, vymazané části textu. Jestliže chceme porovnat obsah dvou souborů bez ohledu na počet mezer nebo tabulátorů mezi slovy, použijeme přepínač -b (blanks).
Ve výpisu je nejdříve údaj o typu a rozsahu nalezených změn, poté následuje výpis řádek z obou souborů: znak < označuje řádky prvého souboru, znak > označuje řádky druhého souboru. Údaj o typu a rozsahu změn má tuto strukturu m x n, kde:

  • m - označuje čísla řádek prvního souboru
  • n - označuje čísla řádek druhého souboru
  • x - může nabývat hodnot:
    • a - přidání řádků k prvnímu souboru
    • d - zrušení řádků z druhého souboru
    • c - změna znaků na řádcích

Např. zápis 8,20 c 8,22 označuje že na řádcích 8 až 20 z prvního souboru byly provedeny změny, které jsou zapsány na řádcích 8 až 22 druhého souboru (současně byly dva řádky vloženy).

Cmp

cmp [volby] soubor1 soubor2

Porovnává dva soubory a vypíše číslo řádku, na kterém najde první rozdíl a číslo znaku, který se první na tomto řádku liší.

comm  soubor1  soubor2
cmp   soubor1  soubor2
diff  soubor1  soubor2

tr

Příkaz nahradí znaky z prvního řetězce odpovídajícími znaky z druhého řetězce. V příkazu tr nelze zadat jméno vstupního souboru na příkazové řádce - nutno pomocí přesměrování.

tr a y < konec text

Nahradí ve vstupním souboru text všechny znaky a znakem y

Alias

= přezdívka alias interní příkaz Bashe. Příkaz zapsaný bez parametrů vyvolá seznam přidělených přezdívek. Vytvoření:

alias přezdívka= 'příkaz'
alias ll=ls –la|less
unalias přezdívka

Příkazem ln vytvoříme odkaz, tedy jiný další název kterým se na soubor nebo adresář můžeme odkazovat. Odkaz samozřejmě může být uložen ve zcela jiném adresáři, což se dá využít například pro rychlejší přístup k prohlížení soubor logu /var/log/boot.log.

ln -s /var/log/boot.log log

A pak si ho lze prohlížet přímo pomocí more log.

Častější a užitečnější budou případy, kdy program vyžaduje potřebné knihovny jinde než jsou nainstalovány. V tom případě se místo kopírování jen vytvoří odkaz na patřičný soubor. Zde byl použit parametr -s, který označuje běžnější, symbolický odkaz, který se odkazuje na jméno původního souboru, na rozdíl od druhého typu odkazu, pevného, který je přiřazen přímo inodu, tj. umístění souboru na disku.