Continuando a serie de notas sobre
1) PROMPT_COMMAND
Quizais xa estea consciente de como manipular o indicador para mostrar información útil, pero non todos saben que pode executar un comando de shell cada vez que se mostra o indicador.
De feito, moitos manipuladores de avisos complexos usan esta variable para executar comandos para recoller información que se mostra no aviso.
Proba a executalo nun novo shell e mira que pasa coa sesión:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Se corres history
na consola, recibirá unha lista de comandos executados previamente na súa conta.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Unha vez configurada esta variable, as novas entradas rexistran a hora xunto co comando, polo que a saída será así:
1871 Execute isto en: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Realicei isto en: 01/05/19 13:38:19 curl bbc.co.uk 1873 Execute isto en: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Realicei isto en: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Realicei isto en: 01/05/19 13:39:25 sudo su -
O formato coincide cos caracteres de man date
.
3) CDPATH
Para aforrar tempo na liña de comandos, pode usar esta variable para cambiar os directorios tan facilmente como emita comandos.
como PATH
, variable CDPATH
é unha lista de camiños separados por dous puntos. Cando executa o comando cd
cun camiño relativo (é dicir, sen barra inicial), por defecto o shell busca nomes coincidentes no teu cartafol local. CDPATH
buscará nos camiños que indicaches o directorio ao que queres ir.
Se instalas CDPATH
deste xeito:
$ CDPATH=/:/lib
e despois introduce:
$ cd /home
$ cd tmp
entón sempre acabarás en /tmp
non importa onde esteas.
Non obstante, teña coidado, porque se non especifica o local na lista (.
), entón non poderás crear ningún outro cartafol tmp
e vaia como sempre:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
Vaia!
Isto é semellante á confusión que sentín cando me decatei de que o cartafol local non estaba incluído na variable máis familiar PATH
... pero tes que facelo na túa variable PATH porque podes ser enganado para executar un comando falso desde algún código descargado.
O meu está establecido polo punto de partida:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Preguntáchesche algunha vez, escribindo exit
sacarache do teu intérprete de comandos bash actual a outro intérprete "nai" ou simplemente pechará a fiestra da consola por completo?
Esta variable fai un seguimento do nivel de aniñación que estás no shell bash. Se creas un novo terminal, establécese como 1:
$ echo $SHLVL
1
Entón, se inicias outro proceso de shell, o número aumenta:
$ bash
$ echo $SHLVL
2
Isto pode ser moi útil nos scripts nos que non está seguro de se saír ou non, ou de facer un seguimento de onde está aniñado.
5) LINENO
A variable tamén é útil para analizar o estado actual e depurar LINENO
, que informa o número de comandos executados na sesión ata o momento:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Isto úsase con máis frecuencia cando se depuran scripts. Insirendo liñas como echo DEBUG:$LINENO
, pode determinar rapidamente onde está no script (ou non).
6) REPLY
Se, coma min, normalmente escribes código así:
$ read input
echo do something with $input
Pode ser unha sorpresa que non teñas que preocuparte en absoluto de crear a variable:
$ read
echo do something with $REPLY
Isto fai o mesmo.
7) TMOUT
Para evitar permanecer demasiado tempo nos servidores de produción por motivos de seguridade ou executar accidentalmente algo perigoso no terminal incorrecto, establecer esta variable actúa como protección.
Se non se introduce nada durante un número determinado de segundos, o shell sae.
É dicir, esta é unha alternativa sleep 1 && exit
:
$ TMOUT=1
Fonte: www.habr.com