Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Tipy a Triky
Tipy a triky pro pokročilé
7. září 2005, 00.00 | V dnešním článku navážeme na nedávné tipy a triky, které se orientovaly především na běžné uživatele a začátečníky. Tyto tipy jsou naopak určeny spíše zkušenějším uživatelům, kteří více využívají unixový základ systému Mac OS X. I tak si ale přijdou na své i méně zkušení uživatelé.
V dnešním článku navážeme na nedávné tipy a triky, které se orientovaly především na běžné uživatele a začátečníky. Tyto tipy jsou naopak určeny spíše zkušenějším uživatelům, kteří více využívají unixový základ systému Mac OS X. I tak si ale přijdou na své i méně zkušení uživatelé.
Obarvení výstupu příkazu ls v terminálu
Především uživatelům, kteří před Mac OS X vyzkoušeli jiný unixový systém, jistě v terminálu u příkazu ls chybí barevné odlišení vypsaných souborů podle typu. Ls v Mac OS X to samozřejmě umí, ne však v základním nastavení. Podíváme se tedy, jak barevný výstup zapnout.
Prvním krokem je zapnout podporu barevného výstupu v terminálu. V Preferences aplikace Terminal nastavte položku "Declare terminal type ($TERM) as: " na "xterm-color". Nyní můžete vyzkoušet barevný výstup ls zadáním příkazu ls -G. Pokud ale chcete barevný výstup na trvalo i bez parametru -G je nutné do souboru /etc/bashrc přidat následující text:
# Enable colored output for ls CLICOLOR='xterm' export CLICOLOR
Nyní můžete otevřít nové okno terminálu, zadat příkaz ls a obdivovat jeho barevný výstup. Ale to není všechno. Můžete si nastavit i vlastní barvy. Pod výše přidaný text v souboru bashrc přidejte ještě následující:
LSCOLORS='**********************' export LSCOLORS
kde hvězdičky nahradíte řetězcem jedenácti párů písmen definující barvy jednotlivých typů souborů. Páry jsou zadány ve tvaru tp, kde t je barva textu a p barva pozadí, a jejich pořadí je:
- adresář
- symbolický odkaz
- socket
- roura
- spustitelný soubor
- blokové zařízení
- znakové zařízení
- spustitelný soubor s nastaveným bitem setuid
- spustitelný soubor s nastaveným bitem setgid
- adresář s povoleným zápisem pro "others" a zapnutým sticky bitem
- adresář s povoleným zápisem pro "others" a vypnutým sticky bitem
písmena odpovídají jednotlivým barvám takto:
a - černá
b - červená
c - zelená
d - hnědá
e - modrá
f - fialová
g - světle modrá
h - světle šedá
A - tučné, černá, obvykle se projeví jako tmavě šedá
B - tučné, červená
C - tučné, zelená
D - tučné, hnědá, obvykle se projeví jako žlutá
E - tučné, modrá
F - tučné, fialová
G - tučné, světle modrá
H - tučné, světle šedá - vypadá jako zářivá bílá
x - implicitní popředí nebo pozadí
implicitně jsou barvy nastaveny na 'exfxcxdxbxegedabagacad'. Tedy adresáře modře, symbolické odkazy fialově, atd...
Jistě souhlasíte, že bez obarveného výpisu příkazu ls je práce se soubory terminálu přinejmenším obtížná, a přitom stačí tak málo.
Když UNIXová přístupová práva nestačí
Unixová přístupová práva k souborům mají poměrně flexibilní návrh, někdy ale jejich schopnosti nestačí. A právě této situaci se budeme věnovat. Většina uživatelů je s konceptem unixových přístupových práv obeznámena, pro jistotu si ale zopakujeme, jak fungují.
Každý soubor v systému má tři skupiny oprávnění. Owner (majitel), Group (skupina) a Others (ostatní). V rámci každé skupiny je možno povolit nebo zakázat čtení, zápis nebo spouštění. Každý soubor může mít pouze jednoho majitele a jednu skupinu. Tato práva můžeme u souborů zkontrolovat příkazem ls s parametrem -l (podrobný výpis). Typický výstup může vypadat například takto:
drwxr-xr-x 3 viktor viktor 102 Aug 9 19:16 Applications
Nás zajímá především začátek, tedy řetězec drwxr-xr-x. D značí, že daný soubor je adresář. Pak následují tři trojice oprávnění. V tomto případě tedy může majitel (uživatel viktor) číst, zapisovat i spustit (což v případě adresáře znamená ho otevřít) skupina (skupina viktor) a ostatní mohou soubor shodně pouze číst a spustit, nikoliv do něj zapsat.
Zdálo by se, že tento systém bohatě postačí a nic složitějšího není potřeba. Představte si ale následující situaci: Chcete dovolit jednomu uživateli, třeba Pepovi, zapisovat do jedno z vašich souborů ale ne ho číst. Jediným způsob, jak toho docílit, je vytvořit novou skupinu, řekněme třeba "Kolegove", ve které budete jen vy a Pepa. Pak nastavíte souboru jako skupinu tuto nově vytvořenou skupinu a povolíte skupině zapisovat do souboru. To ještě jde, ale co když budete chtít dalšímu uživateli, Markovi, dovolit soubor číst? Když přidáte Marka do skupiny Kolegove, bude moci do souboru zapisovat. Když ale přidáte skupině Kolegove právo číst ze souboru, bude moct Pepa váš soubor číst, a to přece nechcete. Nemůžete nic dělat, unixová oprávnění vám tuto situaci neumožní vyřešit.
A právě v tuto chvíli přijdou na řadu Acces Control Listy, jedna z novinek systému Mac OS X 10.4. Každé z pravidel má tři části: kdo akci provádí, jakou akci provádí a jestli mu tato akce bude dovolena nebo zakázána. Pravidla jsou brána popořadě, a první, které je aplikovatelné, se použije. V serverové verzi systému je aplikace Workgroup Manager, která s ACL pracuje a také je umí na příslušném disku aktivovat. V desktopové verzi tento program nenajdete a musíte tedy ACL aktivovat z terminálu příkazem:
$ sudo /usr/sbin/fsaclctl -p / -e
Terminál je také jediná možnost jak ACL u souborů editovat. Slouží k tomu příkaz chmod s parametrem +a pro přidání, -a pro odebrání pravidla. Naší neřešitelnou situaci tedy vyřeší příkazy:
$ chmod +a "Pepa allow write" soubor $ chmod +a "Marek allow read" soubor
Nastavené ACL u souborů pak můžete zobrazit příkazem ls s parametrem -e. Všechny schopnosti Acces Control Listů jsou nad rámec tohoto tipu, a pokud chcete mít úplnou představu, doporučuji vám k přečtení manuálovou stránku příkazu chmod.
Vymazání neposlušných souborů z koše
Jistě se vám někdy stalo, že jste chtěli vysypat koš a chybová hláška vám oznámila, že soubory není možné odstranit, protože se s nimi pracuje. Obvykle stačí se ujistit, že se souborem nepracuje žádná aplikace. Někdy se ale soubor "zapomene" a přesto, že s ním žádná aplikace nepracuje, odmítne se nechat vymazat. Pak máte v zásadě dvě možnosti. Buďto restartovat Finder (držet alt, kliknout a držet ikonu Finderu v Docku a následně vybrat položku Relaunch z kontextového menu), což nemusí být uprostřed práce žádoucí, nebo využít Terminál. Poslouží nám tyto příkazy:
$ cd ~/.Trash/
vás přesune do adresáře koše, který je ve vaší domovské složce a je skrytý díky tečce na začátku názvu.
$ rm -rf ./*
smaže obsah aktuálního adresáře (tedy koše). Význam parametrů je následující: r maže adresář rekurzivně, což znamená, že když narazí na adresář, otevře ho a smaže jeho obsah, f maže soubory bez toho, aby žádal o potvrzení, a bez ohledu na přístupová práva. Zásadní je tečka před lomítkem značící aktuální adresář, kdybyste jí vynechali, bude příkaz mazat kořenový adresář systému, což by mohlo (i když by to systém neměl dovolit) způsobit nenávratné poškození.
Tímto jednoduchým postupem tedy neposlušné soubory z koše odstraníte, aniž byste museli restartovat Finder, nebo se dokonce odhlašovat.