Práce se soubory

Opět připomínám, že mnoho operací se dá snado provést pomocí Midnight Commanderu. Nicméně někdy se určitě hodí vědět, jak běžné operace se soubory provádět „ručně“. A pokud nahlédnete do manuálových stránek příslušných příkazů, možná objevíte i nové netušené možnosti, jak snadno provádět jisté náročnější operace.

Příkazy, které si představíme, jsou cp (kopírování), mv (přesun), rm (mazání souborů), rmdir (mazání adresářů), touch (vytvoření prázdného souboru), mkdir (vytvoření adresáře) a ln (vytvoření linku).

Zkusme si na jednoduchém příkladu ukázat základní práci se soubory:

  [michal@griffon ~]$ ls
  [michal@griffon ~]$ touch soubor
  [michal@griffon ~]$ mkdir Adresar 
  [michal@griffon ~]$ ls
  Adresar   soubor
  [michal@griffon ~]$ cp soubor Adresar
  [michal@griffon ~]$ ls
  Adresar   soubor
  [michal@griffon ~]$ ls Adresar
  soubor
  [michal@griffon ~]$ rm soubor
  [michal@griffon ~]$ ls
  Adresar
  [michal@griffon ~]$ mv Adresar/soubor .
  [michal@griffon ~]$ ls Adresar
  [michal@griffon ~]$ ls
  Adresar   soubor
  [michal@griffon ~]$ rmdir Adresar
  [michal@griffon ~]$ ls
  soubor

Přibližme si teď jednotlivé příkazy podrobněji.

cp

Základní syntax příkazu cp jsme již probrali:

  cp soubor adresář

Souborů může být samozřejmě více:

  cp soubor1 soubor2 soubor3 adresář

Můžeme zkopírovat jeden soubor do druhého (tím přepíšeme jeho obsah):

  cp soubor1 soubor2

Můžeme zkopírovat ale i celý adresář včetně všech podadresářů a souborů, které obsahuje. K tomu použijeme volbu -R:

  cp -R adresář1 adresář2

O dalších možnostech programu cp se dozvíte pročtením jeho manuálové stránky.

Abychom si demonstrovali jeden zástupný znak, zkusíme zkopírovat nějaký soubor do aktuálního adresáře:

  cp /var/tmp/soubor .

(Tečka je odkaz na aktuální adresář.)

mv

Program mv slouží k provádění přesunů nebo přejmenování. Má jasnou syntax:

  mv zdroj1 zdroj2 zdroj3 cíl

Pokud specifikujete pouze jeden zdroj a zadaný cíl neexistuje, provede se přejmenování (platí samozřejmě pro soubory i adresáře):

  mv staré_jméno nové_jméno

Pokud je cíl soubor, bude přepsán obsahem zdrojového souboru:

  mv soubor1 soubor2

Je-li cílem adresář, všechny zdrojové soubory či adresáře se do něj přesunou:

  mv soubor1 adresář1 cílový_adresář

rm

Program rm slouží k mazání. Bez dalších parametrů maže pouze soubory:

  rm soubor1 soubor2

Pokud chceme vymazat adresář i se všemi jeho podadresáři, použijeme parametr -r:

  rm -r adresář_k_vymazání

S programem rm a jeho volbou -r lze napáchat mnoho škody. Pokud chceme vymazat adresář /tmp/práce, ale překlepneme se třeba takto:

  rm -r / tmp/práce

Začně program rm mazat celý adresářový strom, a až skončí, zkusí smazat tmp/práce (který už tou dobou patrně nebude existovat). Z tohoto důvodu si dávejte veliký pozor, budete-li mít oprávnění roota, protože tímto způsobem si spolehlivě zničíte celý systém včetně všech dat.

Je vhodné dodat, že novější verze programu rm už implementovaly jistou úroveň ochrany před touto chybou, ale ne přesto doporučuji velkou obezřetnost s programem rm pod rootem.

mkdir, touch, ln

Program mkdir umí vytvořit adresář:

  mkdir nový_adresář

Program touch se „dotkne“ specifikovaného souboru. Pokud tento soubor existuje, upraví se mu čas poslední změny a přístupu na aktuální čas. Pokud neexistuje, bude vytvořen s nulovým obsahem:

  touch soubor

Program ln slouží k vytváření symbolických nebo pevných odkazů. Následující příkaz vytvoří symbolický odkaz s názvem odkaz, který bude ukazovat na soubor data:

  ln -s data odkaz

Pokud bychom chtěli vytvořit pevný odkaz, vynecháme volbu -s:

  ln data pevný_odkaz

Pevný odkaz je de facto další jméno pro daný soubor. Podmínkou jeho vytvoření je, že se zdrojový soubor i budoucí odkaz nachází na stejném souborovém systému. Po vytvoření pevného odkazu není mezi zdrojem a obrazem žádný rozdíl, obě jména ukazují na jeden a ten samý soubor. Vymazat tedy můžete kterýkoliv. Po vymazání posledního jména ukazujícího na daný soubor bude tento soubor vymazán. Pevných odkazů může být samozřejmě více.

Souborový systém realizuje tuto záležitost jednoduše. Po vytvoření pevného odkazu se zvýší číslo označující počet odkazů na daný soubor (po vytvoření souboru má příslušný soubor jeden odkaz). Ve chvíli, kdy toto číslo klesne na nulu, soubor se opravdu vymaže.

find, locate, which

Pokud potřebujete nějaký soubor najít, nepochybně se vám hodí znát příkaz find a locate. Příkaz locate prohledává databázi, která se aktualizuje zpravidla jednou denně. V této databázi jsou indexovány jednotlivé soubory. Výhodou tohoto postupu je, že vyhledávání je velice rychlé (prohledává se databáze a nikoliv vlastní adresářový strom). Nevýhodou je jistá neaktuálnost. Použití programu je velice jednoduché:

  locate vyraz

Můžete samozřejmě použít příslušné zástupné znaky. Pokud hledáte pouze umístění nějakého spustitelného programu, pomůže vám which:

  which bash

Program find prohledává zadanou adresářovou strukturu přímo, bez pomoci nějaké databáze. Je to velmi komplexní program s řadou voleb. My si ukážeme opět jen to nejběžnější použití:

  find /tmp -name "michal*.txt"

Takto bychom hledali soubor s názvem michal[cokoliv].txt v adresáři /tmp. Hledat můžete ale i pomocí jiných kritérií:

  find /tmp -type d

Tento příkaz pro změnu hledá soubory podle typu. Typ d označuje adresář. Příkaz tedy vypíše všechny adresáře v /tmp.

Pomocí find lze hledat soubory podle nejrůznějších kritérií včetně doby založení či poslední změny. Více informací viz manuálová stránka programu find:

  man find

Kam dál

pokrocili/komandlajna/prace_se_soubory.txt · Poslední úprava: 2009/11/11 09:44 autor: Michal Dočekal
CC Attribution-Share Alike 3.0
www.chimeric.de Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 PDF Export