Některé z příkazů v Linuxu jsou natolik frekventované, že jejich užívání bereme jako samozřejmost. Mezi takové příkazy patří i cd
, který se používá ke změně adresářů. Existuje několik triků, které mohou zvýšit vaši efektivitu při práci s cd
, nebo dokonce umožní jeho úplné vynechání.
Příkaz, na který automaticky reagujete
Stejně jako mrkáme, aniž bychom o tom přemýšleli, i některé příkazy Linuxu používáme podvědomě. Tyto příkazy jsou sice jednoduché a nenápadné, ale denně je využíváme. Jedním z nich je právě cd
.
Základy používání příkazu cd
se uživatelé Linuxu učí během prvních chvil práce s tímto systémem. Možná jste se s ním již setkali v jiných operačních systémech a jeho funkce je vám dobře známá: slouží ke změně aktuálního pracovního adresáře. Co dalšího se o něm dá ještě vědět?
Překvapivě toho může být více, než se zdá. Následující tipy a triky vám mohou pomoci zefektivnit vaši práci s tímto příkazem.
Standardní postupy s cd
Pro úplnost si stručně zopakujeme standardní používání příkazu cd
.
Pokud se nacházíte ve svém domovském adresáři a chcete přejít do adresáře /usr/lib/firefox/browser
a poté se vrátit zpět, můžete použít následující příkazy:
cd /usr/lib/firefox/browser/
cd /home/dave
Nemusíte zadávat celou cestu k adresáři; můžete využít automatické dokončování. Po zadání dostatečného počtu písmen pro jednoznačné určení názvu adresáře, stiskněte klávesu Tab a shell automaticky doplní zbytek názvu.
Například, zadejte do příkazového řádku:
cd /usr/lib/fire
Nyní stiskněte Tab a shell doplní „firefox“. Pokud k cestě přidáte „/b“ a znovu stisknete Tab, doplní se i adresář „browser“.
Shell automaticky přidává koncové lomítko, takže můžete proces dokončování tabulátorem opakovat. To je také důvod, proč je u prvního příkazu koncové lomítko. U druhého příkazu lomítko není, protože cesta byla zadaná celá.
Pro rychlý návrat do domovského adresáře z jakéhokoli místa v systému, můžete použít vlnovku (~
). Stačí zadat:
cd ~
Tyto příklady ukazují absolutní cesty, kde zadáváte celou cestu od kořenového adresáře až k cílovému adresáři.
Relativní cesty se odvozují z aktuálního pracovního adresáře. Pokud se například ve vašem domovském adresáři nachází adresář s názvem work
, můžete zobrazit jeho obsah pomocí příkazu tree
, který vizualizuje stromovou strukturu adresářů. Stačí zadat:
tree
Předpokládejme, že adresář work
obsahuje podadresář dev
. V kořenovém adresáři se také nachází adresář s názvem dev
. Pro zobrazení obou můžete použít ls
s volbami -d
(adresář) a -hl
(čitelné pro člověka, dlouhý výpis), což zobrazí velikosti adresářů v srozumitelných jednotkách a v dlouhém formátu.
Pokud zadáte pouze dev
, shell předpokládá, že máte na mysli adresář dev
v aktuálním adresáři. Chcete-li shell přinutit, aby hledal dev
v kořenovém adresáři, musíte přidat úvodní lomítko, které reprezentuje kořenový adresář systému, jak je uvedeno níže:
ls -d dev -hl
ls -d /dev -hl
Příkaz cd
se v tomto ohledu chová podobně jako ls
. Pokud zadáte cd dev
, shell předpokládá, že máte na mysli adresář dev
v aktuálním pracovním adresáři:
cd dev
Bez úvodního lomítka se předpokládá, že i delší cesty začínají z aktuálního pracovního adresáře, jak je znázorněno níže:
cd dev/mobile/android
Změna adresáře s dvojtečkou
Identifikátor ..
reprezentuje nadřazený adresář aktuálního pracovního adresáře. Pokud se nacházíte v hluboce zanořeném adresáři, můžete pomocí cd ..
přesunout se do nadřazeného adresáře.
Použitím cd ../..
se přesunete o dvě úrovně výše. Přidáním dalších ..
do příkazu můžete přesouvat o libovolný počet úrovní v adresářovém stromu.
Zadejte například následující:
cd ..
cd ../..
Můžete si vytvořit aliasy, které tyto manévry zjednoduší. Například:
alias .2="cd ../.."
alias .3="cd ../../.."
Tyto aliasy pak můžete používat stejně jako běžné příkazy.
Aby aliasy byly aktivní i po restartu počítače, musíte je přidat do souboru .bashrc
nebo .bash_aliases
.
Jednoduché přepínání mezi dvěma adresáři
Symbol pomlčky (-
) má také speciální funkci. Použitím cd -
se vrátíte do adresáře, ze kterého jste předtím přišli.
Představte si, že se nacházíte v adresáři „c“. Pomocí cd
přejdete do adresáře „forth“. Nyní můžete pomocí cd -
přeskakovat tam a zpět mezi těmito dvěma adresáři.
Zadejte následující:
cd ../forth
cd -
cd -
Před změnou adresáře se zobrazí název adresáře, do kterého se přesouváte.
Alternativní základní adresář
Shell používá aktuální pracovní adresář jako základní adresář pro relativní cesty. Proměnnou prostředí CDPATH
můžete použít k nastavení jiného umístění jako základního adresáře pro relativní cesty. Pokud trávíte většinu času v určité části stromu souborů, může vám to ušetřit spoustu úhozů (a času).
Pro nastavení work/dev/projects
jako základního adresáře pro relativní cesty zadejte:
export CDPATH=/home/dave/work/dev/projects
Nyní, při každém použití příkazu cd
, se nejprve zkontroluje, zda se odpovídající názvy adresářů nenacházejí v proměnné prostředí CDPATH
. Pokud některý z nich odpovídá cílovému adresáři zadanému v příkazu cd
, budete do tohoto adresáře přesunuti.
Nyní, bez ohledu na to, kde se v souborovém systému nacházíte, při použití příkazu cd
shell zkontroluje, zda se cílový adresář nachází v základním adresáři. Pokud ano, přesunete se do tohoto cílového adresáře.
Pokud cílový adresář začíná úvodním lomítkem (/
), což z něj činí absolutní cestu, nebude proměnnou prostředí CDPATH
ovlivněn.
Abychom to demonstrovali, zadejte následující:
cd c
cd prolog
cd /usr
cd forth
Proměnná prostředí CDPATH
je vlastně cestou, stejně jako proměnná prostředí PATH
. Při zadání příkazu shell vyhledá umístění v PATH
a hledá shodu. Při použití CDPATH
shell hledá shodu umístění v proměnné prostředí CDPATH
. Stejně jako PATH
může i CDPATH
obsahovat více umístění.
Chcete-li, aby shell prohledal aktuální adresář před ostatními umístěními v proměnné prostředí CDPATH
, stačí přidat tečku (.
) na začátek cesty takto:
export CDPATH=.:/home/dave/work/dev/projects
Chcete-li, aby vaše nastavení byla trvalá, musíte je přidat do konfiguračního souboru, jako je .bashrc
.
Je důležité si uvědomit, že pokud nastavíte základní adresář, ovlivní to i změny adresáře prováděné ve skriptech. Abyste tomu zabránili, můžete ve svých skriptech používat absolutní cesty nebo test v souboru .bashrc
, když nastavujete svou CDPATH
, jak je uvedeno níže:
if test "${PS1+set}"; then CDPATH=.:/home/dave/work/dev/projects; fi
Tímto způsobem se provede test, zda byla nastavena proměnná příkazového řádku $PS1
. Proměnná prostředí CDPATH
bude nastavena pouze v případě, že test bude úspěšný.
Použití shopt
s cd
Pomocí příkazu shopt
můžete nastavit různé možnosti shellu. Některé z nich mohou zlepšit vaše používání příkazu cd
. Chcete-li je nastavit, použijte volbu -s
(povolit) s příkazem shopt
a jako argument zadejte název volby.
Možnost cdspell
kontroluje názvy adresářů a opravuje některé běžné překlepy, včetně prohozených nebo chybějících znaků, či jmen s nadbytečnými znaky. Pokud najde adresář, který odpovídá opravené verzi, vypíše opravenou cestu a provede akci cd
.
Jako příklad zadejte následující, abyste nastavili volbu cdspell
a udělali překlep v názvu „Desktop“, a podívejte se, zda shell tento překlep za nás opraví:
shopt -s cdspell
cd Desktpo
Shell zachytil chybu, opravil ji a přesunul se do adresáře „Desktop“.
Další možností shopt
, kterou můžete použít s cd
, je autocd
. Tato možnost eliminuje nutnost zadávat cd
. Cokoli zadáte, a co není příkaz, skript nebo jiný spustitelný soubor (například alias), se použije jako cílový adresář. Pokud je možné se do daného adresáře přesunout, vypíše se v okně terminálu a do tohoto adresáře se přesunete.
Jako příklad zadejte následující:
shopt -s autocd
/usr/local/games
/etc
~
Vidíte? Můžete přeskakovat po celém souborovém systému, aniž byste museli používat cd
!
Nastavení změněná pomocí shopt
ovlivní pouze interaktivní shelly, nikoli skripty.
Závěr
Pravděpodobně si neosvojíte všechny tyto techniky. Je však pravděpodobné, že jste zde našli něco zajímavého nebo užitečného. Vše, co zrychluje nebo zjednodušuje navigaci v příkazovém řádku, je přece jen dobré!