Pokračování série poznámek o
1) PROMPT_COMMAND
Možná již víte, jak zacházet s výzvou k zobrazení různých užitečných informací, ale ne každý ví, že můžete spustit příkaz shellu pokaždé, když se výzva zobrazí.
Ve skutečnosti mnoho složitých manipulátorů s výzvami používá tuto proměnnou k provádění příkazů ke shromažďování informací, které se zobrazují ve výzvě.
Zkuste to spustit v novém prostředí a uvidíte, co se stane s relací:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Pokud běžíš history
v konzole obdržíte seznam příkazů dříve provedených pod vaším účtem.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Jakmile je tato proměnná nastavena, nové položky zaznamenávají čas spolu s příkazem, takže výstup bude vypadat takto:
1871 Spustil jsem to v: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Spustil jsem to na: 01/05/19 13:38:19 curl bbc.co.uk 1873 Spustil jsem to v: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Toto jsem spustil v: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Spustil jsem to v: 01/05/19 13:39:25 sudo su -
Formátování odpovídá znakům z man date
.
3) CDPATH
Chcete-li ušetřit čas na příkazovém řádku, můžete pomocí této proměnné měnit adresáře stejně snadno jako zadáváte příkazy.
Jako PATH
, variabilní CDPATH
je seznam cest oddělených dvojtečkou. Když spustíte příkaz cd
s relativní cestou (tj. bez úvodního lomítka), ve výchozím nastavení hledá shell ve vaší místní složce odpovídající názvy. CDPATH
vyhledá v zadaných cestách adresář, do kterého chcete přejít.
Pokud nainstalujete CDPATH
tímto způsobem:
$ CDPATH=/:/lib
a poté zadejte:
$ cd /home
$ cd tmp
pak vždy skončíš v /tmp
nezáleží na tom kde jsi.
Buďte však opatrní, protože pokud v seznamu neuvedete místní (.
), pak nebudete moci vytvořit žádnou další složku tmp
a přejděte na to jako obvykle:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
Jejda!
Je to podobné zmatku, který jsem cítil, když jsem si uvědomil, že místní složka není zahrnuta ve známější proměnné PATH
... ale musíte to udělat ve své proměnné PATH, protože byste mohli být oklamáni spuštěním falešného příkazu z nějakého staženého kódu.
Můj je nastaven výchozím bodem:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Přemýšleli jste někdy o psaní exit
vezme vás to z vašeho aktuálního bash shellu do jiného "rodičovského" shellu, nebo to prostě úplně zavře okno konzoly?
Tato proměnná sleduje, jak hluboko jste vnořeni do bash shellu. Pokud vytvoříte nový terminál, je nastaven na 1:
$ echo $SHLVL
1
Pokud pak spustíte další proces shellu, číslo se zvýší:
$ bash
$ echo $SHLVL
2
To může být velmi užitečné ve skriptech, kde si nejste jisti, zda skončit nebo ne, nebo sledovat, kde jste vnořeni.
5) LINENO
Proměnná je také užitečná pro analýzu aktuálního stavu a ladění LINENO
, který hlásí počet dosud provedených příkazů v relaci:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Nejčastěji se to používá při ladění skriptů. Vkládání řádků jako echo DEBUG:$LINENO
, můžete rychle určit, kde se ve skriptu nacházíte (nebo ne).
6) REPLY
Pokud jako já obvykle píšete kód takto:
$ read input
echo do something with $input
Možná bude překvapením, že se s vytvářením proměnné nemusíte vůbec starat:
$ read
echo do something with $REPLY
Tohle dělá to samé.
7) TMOUT
Chcete-li se vyhnout příliš dlouhému pobytu na produkčních serverech z bezpečnostních důvodů nebo náhodnému spuštění něčeho nebezpečného ve špatném terminálu, funguje nastavení této proměnné jako ochrana.
Pokud po nastavený počet sekund nic nezadáte, shell opustí.
To znamená, že toto je alternativa sleep 1 && exit
:
$ TMOUT=1
Zdroj: www.habr.com