Aliasy
V našem seriálu jsme až do teď ignorovali aliasy, a přitom mohou hodně pomáhat při práci v řádce. Alias nám umožňuje vytvořit jednoduchou přezdívku složitému příkazu. Nikoho asi nebaví často zadávat ls -al
. Vytvoříme si pro něj kratší alias:
# alias ll='ls -al'
Teď už pro dlouhý výpis adresáře stačí zadat jen ll
. Zapsat do aliasu tedy můžeme program s parametry, ale i více příkazů, např:
# alias cl='clear;ls'
Seznam již existujících aliasů si můžeme vypsat samotným příkazem alias
. Pokud chceme např. alias ll
zrušit, použijeme:
# unalias ll
Vámi vytvořené aliasy si můžete zapsat třeba do ~/.profile
. Pokud je chcete pro všechny uživatele systému, potom do /etc/profile
.
Když začnete hledat na webu, najdete spoustu užitečných aliasů. Zde několik z nich:
# alias more='less' # alias ls='ls -hF --color' # alias ..='cd ..' # alias ...='cd ../..' # alias dus='du -sh * | sort -rn | head'
Pro výpis adresářů se může hodit toto:
# alias d='ls -d */' # alias ld='ls -l | grep ^d'
Věřím, že čtenáři do diskuze také něco přidají.
DOS/NEDOS
Spoustu začátečníků používající zároveň Windows a Linux a v nich společná data trápí jiný formát souborů. Konkrétně znaky pro začátek nového řádku. Linux/unix používá LF (\n)
, starší MAC OS používal CR (\r)
a DOS používá CRLF (\r\n)
. Když vezmeme textový soubor z Windows a chceme ho editovat ve vi, mc, … uvidíme na konci řádků toto:
nejaky text^M dalsi text^M
Na nápravu existuje několik programů – dos2unix, unix2dos, fromdos
, … Ale to jsou externí programy, které je nutné nainstalovat. Na všech systémech však máme příkazy, které to zvládnou. Pro převod z dosu do linux/unix jde použít:
# tr -d "\r" < soubor1 > soubor2
Obrácený převod:
# awk 'sub("$", "\r")' soubor.unix > soubor.dos
Ze MAC OS starších než 10 (přehozením \r a \n samozřejmě dostáváte opačný převod)
# tr '\r' '\n' < soubor1 > soubor2
Ale kdo si to má pamatovat? Tak si z toho rychle udělejte alias:
# alias fromdos="tr -d '\r' " # alias todos="awk 'sub(\"$\",\"\r\")' "
.netrc a stahování souborů
Pokud potřebuji v řádce něco rychle stáhnout třeba z http nebo ftp, je ideální příkaz fetch. Stačí zadat fetch http://www.server.cz/neco.gzip
. Podobně funguje i program wget.
U neanonymního ftp můžeme použít u obou programů soubor .netrc
k zapsání autorizačních údajů. Soubor umístěte do svého domovského adresáře a práva nastavte jen pro na 0600. Jinak s ním programy odmítnou pracovat.
# cat ~/.netrc machine ftp.server.cz login loginname password heslicko machine dalsiserver.cz login jinylogin password jineheslo
A pak už jen stačí zavolat jen fetch ftp://ftp.server.cz/soubor.tar
Tento soubor používají i další programy, třeba midnight commander. Stačí jen napsat jméno serveru a pokud najde v .netrc stejný název serveru, použije příslušné jméno a heslo.
Denně používané věci, které se mi nevejdou do žádné kategorie
Nemám po ruce kalkulačku, ale mám bash. Můžete použít + - * / a %
pro zbytek po dělení. Zkuste si:
# echo $((117 + 189)) 306
Vytváříte nějaký shell skript, pak mu patrně nastavíte práva pro spuštění, třeba chmod 755. Pokud jde třeba o jednorázové spuštění, místo nastavení práv můžete takhle rovnou spustit:
# sh mujskript.sh
Když měním oprávnění k souborům a adresářům v adresářové struktuře, může se hodit parametr X
. Když použijete
# chmod -R 644 *
nastaví se i práva k adresářům na 644 a členové skupiny a ostatní mají smůlu.
chmod +X *
Výše uvedený příkaz nastaví adresářům právo x (spustit/prohledat).
Otočení řádků v souboru. Tail normálně pracuje s pouze x posledními řádky (bajty, bloky) souboru. Při použití -r
zpracuje celý soubor:
# tail -r soubor.txt > soubor_otoceny.txt
Několikrát se v diskuzi probírala vhodnost či nevhodnost tohoto zápisu:
# cat soubor | grep text
Správnější bude:
# grep text soubor
Ale setkat se můžte i se zápisem:
<soubor grep text
A to je z dnešního dílu všechno. Uvítáme v diskuzi náměty na pokračování.