Sete variables de Bash inesperadas

Continuando a serie de notas sobre menos coñecidos funcións bash, mostrareiche sete variables que quizais non coñezas.

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

Engadir un comentario