5. Soubory

Výpis obsahu adresáře (list)

Výpis obsahu adresáře home

ls /home

Podrobný výpis obsahu adresáře včetně skrytých souborů

ls -la /home

Změna adresáře (change directory)

Přechod do adresáře /usr/share/doc

cd /usr/share/doc

Přechod o adresář výše

cd ..

Přechod do kořenového adresáře

cd /

Přechod do domovského adresáře

cd ~

Přechod do naposledy použitého adresáře

cd -

Kopírování souborů

Zkopírování souboru co.txt do adresáře kam jako soubor backup.txt

cp co.txt kam/backup.txt

Zkopírování všechn souborů končících na .txt do adresáře newdir, ale pouze v případě, že soubory ještě nejsou v novém adresáři nebo v případě, že kopírované soubory jsou novější.

cp -u *.txt newd​ir

Rekurzivně kopíruje všechny soubory, adresáře a podadresáře z adresáře /home/user/soubory do adresáře /home/user/backup.

cp -r /home/user/files/* /home/user/backup

Editace textových souborů

  • nano (^je klávesa Ctrl)
  • vi
    • tři módy činnosti
      1. příkazový – znaky jsou interpretovány jako příkazy
      2. vkládací – úprava obsahu
        • aktivace příkazy
          • i(insert) následný text se vkládá před kurzor
          • a(append) následný text se vkládá za kurzor
          • I(Insert) následný text se vkládá před první znak řádky
          • A(Append) následný text se vkládá za poslední znak řádky
          • R(Replace) následný text přepisuje od pozice kurzoru
          • r(replace) přepíše jeden znak
          • s(substitute) přepíše jeden znak a přepne se do vkládacího módu
          • u(undo) zruší poslední změnu
          • atd.
        • ukončení klávesou Esc
      3. rozšířený příkazový (ex mód)
        • aktivace příkazem : (dvojtečka)
        • dvojtečka se vypíše na posledním řádku, pak se vloží rozšířený příkaz zakončený klávesou Enter, což způsobí návrat do příkazového módu:
          • :q(ukončit editor bez uložení změn)
          • :wq(uložit soubor a ukončit editor)
          • :w test.txt(uložit soubor pod jiným názvem)
  • vim

Vytvoření prázdného souboru

Vytvoření nového prázdného souboru newfile.txt v adresáři /home/user

touch /home/user/newfile.txt

Vypsání textu na obrazovku

echo "Toto je standardní výstup tj. obrazovka počítače"

Výpis obsahu souboru

Vypsání posledních 10 řádků souboru

tail soubor.txt

Vypsání posledních 20 řádků souboru

tail -n20 soubor.txt

Vypsání souboru od 20. řádku dále

tail -n +20 soubor.txt

Zřetězení vstupu a předání na výstup

Zobrazení obsahu souboru s očíslovanými řádky:

cat -n nazvev-souboru

Přesměrování výstupu

Napsané znaky se ukládají do souboru s názvem novy-soubor dokud nestisknete Ctrl+D:

cat > novy-soubor

Sloučení dvou video souborů do jednoho:

cat VTS_01_1.VOB VTS_01_2.VOB > ALL.VOB

Přesměrování vstupu

Setřídění řádků souboru s názvem novy-soubor podle abecedy:

sort < novy-soubor

Propojení příkazů

Znak | (pipe, roura, trubka) umožňuje propojit příkazy. Výstup příkazu 1 se zpracuje v příkazu 2. Užitečnost roury vzrůstá ve spojení s filtry. Filtry (sort, grep, head, tail atd.) jsou programy, které čtou vstup, nějakým způsobem jej modifikují a odešlou jej na výstup.

Setřídění řádků souboru s názvem nazev-souboru dle abecedy:

cat nazev-souboru | sort

Odstranění souboru

Smazání souboru image.jpg

rm image.jpg

Smazání souboru image.jpg bez potvrzení

rm -f image.jpg

Smazání adresáře images, všech souborů v něm, včetně podadresářů (buďte velmi opatrní s použitím tohoto příkazů)

rm -rf images/

Vytvoření adresáře

Příklad:

mkdir /cesta/nazev-adresare

Odstranění adresáře

Příklad:

rmdir /cesta/nazev-adresare

Smazání adresáře images, všech souborů v něm, včetně podadresářů (buďte velmi opatrní s použitím tohoto příkazů)

rm -rf images/

Komprimace

Příklad:

tar cvfz nazev-vytvareneho-archivu.tgz\
 /cesta/k/adresari/nebo/souboru

Dekomprimace

Příklad:

tar xvfz nazev-archivu.tgz

Detox

Rekurzivní odstranění nebezpečních znaků (diakritika, mezery atd.) z názvů souborů a adresářů:

  • detox -s utf_8 -r -v -n /cesta/k/adresari/nebo/souboru
  • příkaz se provede pouze bez parametru -n

Porovnávání souborů

Ze dvou rozdílných textových souborů (adresářů) je možné vytvořit opravu (patch) příkazem:

diff -up original.txt original-upraveny.txt > patch.txt
diff -Narup orig/folder/ new/folder/ > patch.txt

Opravu (patch) je možné aplikovat na originální soubor příkazem:

patch -b original.txt patch.txt

Parametr -b vytvoří zálohu (backup).

 

ssh

Vzdálený přístup na server 10.40.12.195 pod uživatelem user:

ssh -l user 10.40.12.195

scp (secure copy)

Zkopírování souboru test.txt z aktuálního adresáře na lokálním disku na vzdálený počítač s IP adresou 10.40.12.195 pod uživatelským účtem user do adresáře /home/user:

scp test.txt [email protected]:/home/user
scp test.txt sshalias:/hom/user

(Alias SSH připojení se nastavuje v .ssh/config)

Zkopírování adresáře test včetně všech podadresářů na server 10.40.12.195 do adresáře /home/user:

scp -r test [email protected]:/home/user

rsync

Nástroj na synchronizaci dat mezi hlavním zdrojem a zrcadlem. Přenáší pouze nové soubory a u existujících pouze jejich změněné části.

Syntaxe:

rsync {předvolby} {zdroj nebo více zdrojů} {cíl}

Parametry:

  • -a
  • -u (update)
  • -z (komprese)
  • -v (výpis)
  • -c
  • -n

Přenesení všech souborů s příponou .jpg z aktuálního adresáře do adresáře /hom/user/photo:

rsync *.jpg /home/user/photo

Pro synchronizaci adresáře včetně podadresářů se používá parametr -r. Parametr -vzobrazuje soubory, které kopíruje a parametre --progressnavíc zobrazuje i průběh (rychlost a čas).

Pokud za jméno adresáře napíšete lomítko je přenesen jeho obsah, nikoliv adresář samotný.

Přenesení adresáře new-photoa celého jeho obsahu do adresáře photo:

rsync -rv --progress /home/user/new-photo /home/user/photo

Parametr -anahrazuje parametry -rlptgoD(ale ne -HAX).

Přenesení Debianího FTP archivu na lokální počítač (je použit vlastní rsync protokol, který musí být na straně serveru zprovozněn a nakonfigurován):

rsync -a rsync://ftp.debian.org/debian /mirror/ftp.debian.org

Přenesení adresáře archive v domovském adresáři uživatele user na serveru test.com do adresáře www (přenos je realizován pomocí ssh, k použití ssh můžete rsync přimět parametrem -e ssh, na serveru musí běžet sshd a musí být nainstalován rsync):

rsync -a [email protected]:archive www

Při kopírování velkých souborů např. ISO obrazů je vhodné použít paramtr --partial, který způsobí, že při předčasném přerušení není částečně stažený soubor smazán a stahování lze navázat.

rsync -v --progress --partial rsync://cdimage.debian.org/debian-cd/current/i386/iso-dvd/debian-504-i386-DVD-1.iso /home/user/iso

Přenesení všechny PDF dokumentů z domovského adresáře serveru do aktuálního lokálního adresáře:

rsync [email protected]:*.pdf .

Synchronizace adresáře www v domovském adresáři na vzdáleném serveru s lokálním adresářem archive:

rsync -a --delete remote.machine.com:www archive

Pro synchronizaci dat se používá parametr --delete, který způsobí smazání souborů a adresářů v cílovém adresáři, které neexistují v adresáři www na serveru (tímto způsobem je možné synchronizovat např. data mezi notebookem a pracovní stanicí).

Aby při každém připojení nebylo nutné zadávat heslo je vhodné používat ssh klíče a případně ssh agenta.

Další príklady:

  • rsync -avt /zdroj /cil
    rsync -av --delete /home/user /cil
    rsync -av --delete-before /home/user /cil
    rsync -av --exclude "*.php" /home/user /cil
    rsync -av --progress --exclude "*.php" /home/user /cil
    rsync -av -e "ssh" --compress /home/user [email protected]:/cil 
    rsync --auvc --exclude=.* --exclude=archive sites/all/themes/test/ sshalias:public_html/sites/all/themes/test/
  • (Alias SSH připojení se nastavuje v .ssh/config)

unison

Grafická nadstavba rsync.

Secure Copy

Mimo jiné umožňuje např. i kopírování souborů přímo mezi servery.

  • scp /path/to/file [email protected]_a:/path/to/destination
  • scp [email protected]_b:/path/to/file /path/to/destination
  • scp [email protected]_a:/path/to/file [email protected]_b:/path/to/destination

Vyhledávání

Rekurzivní vyhledání počtu souborů v aktuálním adresáři:

find ./ -type f | wc -l

Rekurzivní vyhledání počtu adresářů v aktuálním adresáři:

find ./ -type d -mindepth 1 | wc -l

Vyhledávání jména souboru podle řetězce:

grep -H "hledaný řetězec" /etc/*

Vyhledávání řetězce se současným zobrazení dvou okolních řádků:

grep -C 2 hledany_retezec *.*

Rekurzivní vyhledávání od aktuálního adresáře:

grep -H -C 2 -R "hledaný výraz" ./*

Rekurzivní vyhledání daného řetězce (parametr -l zajistí zobrazení pouze názvy souborů)

grep -Rl "src=" ./*

Zjištění počtu .rtf souborů v aktuálním adresáři:

find  *.rtf -type f | wc -l

Rekurzivní vyhledání všech souborů od aktuálního adresáře s příponou .gif

find . -name "*.jpg" -type f

ln – create’s symbolic links

  • ln -s foo1 foo2 Creates a symbolic link to foo1 with the name of foo2.