Continuando con la serie de notas sobre
1) PROMPT_COMMAND
Es posible que ya sepa cómo manipular el mensaje para mostrar información útil, pero no todos saben que puede ejecutar un comando de shell cada vez que se muestra el mensaje.
De hecho, muchos manipuladores de mensajes complejos utilizan esta variable para ejecutar comandos y recopilar información que se muestra en el mensaje.
Intente ejecutar esto en un nuevo shell y vea qué sucede con la sesión:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Si tu corres history
en la consola, recibirá una lista de comandos ejecutados previamente en su cuenta.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Una vez que se establece esta variable, las nuevas entradas registran el tiempo junto con el comando, por lo que el resultado se verá así:
1871 Ejecuté esto en: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Ejecuté esto en: 01/05/19 13:38:19 curl bbc.co.uk 1873 Ejecuté esto en : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Ejecuté esto en: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Ejecuté esto en: 01 /05/19 13:39:25 sudo su -
El formato coincide con los caracteres de man date
.
3) CDPATH
Para ahorrar tiempo en la línea de comando, puede usar esta variable para cambiar directorios tan fácilmente como emite comandos.
Como PATH
, variable CDPATH
es una lista de rutas separadas por dos puntos. Cuando ejecutas el comando cd
con una ruta relativa (es decir, sin barra diagonal), de forma predeterminada, el shell busca en su carpeta local nombres coincidentes. CDPATH
buscará en las rutas que proporcionó el directorio al que desea ir.
Si instala CDPATH
de esta manera:
$ CDPATH=/:/lib
y luego ingresa:
$ cd /home
$ cd tmp
Entonces siempre terminarás en /tmp
No importa dónde estés.
Sin embargo, tenga cuidado, porque si no especifica el local en la lista (.
) carpeta, entonces no podrá crear ninguna otra carpeta tmp
y ve a él como de costumbre:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
¡Uy!
Esto es similar a la confusión que sentí cuando me di cuenta de que la carpeta local no estaba incluida en la variable más familiar. PATH
... pero tienes que hacerlo en tu variable PATH porque es posible que te engañen para que ejecutes un comando falso a partir de algún código descargado.
El mío lo marca el punto de partida:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
¿Alguna vez te has preguntado, escribiendo exit
¿Lo sacará de su shell bash actual a otro shell "principal" o simplemente cerrará la ventana de la consola por completo?
Esta variable realiza un seguimiento de qué tan profundamente anidado está en el shell bash. Si crea una nueva terminal, se establece en 1:
$ echo $SHLVL
1
Luego, si inicia otro proceso de shell, el número aumenta:
$ bash
$ echo $SHLVL
2
Esto puede ser muy útil en secuencias de comandos en las que no está seguro de salir o no, o realizar un seguimiento de dónde está anidado.
5) LINENO
La variable también es útil para analizar el estado actual y depurar. LINENO
, que informa la cantidad de comandos ejecutados en la sesión hasta el momento:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Esto se utiliza con mayor frecuencia al depurar scripts. Insertando líneas como echo DEBUG:$LINENO
, puede determinar rápidamente en qué parte del script se encuentra (o no).
6) REPLY
Si, como yo, sueles escribir código como este:
$ read input
echo do something with $input
Puede resultar sorprendente que no tengas que preocuparte en absoluto por crear la variable:
$ read
echo do something with $REPLY
Esto hace lo mismo.
7) TMOUT
Para evitar permanecer en los servidores de producción demasiado tiempo por razones de seguridad o ejecutar accidentalmente algo peligroso en el terminal equivocado, configurar esta variable actúa como protección.
Si no se ingresa nada durante un número determinado de segundos, el shell se cierra.
Es decir, esta es una alternativa. sleep 1 && exit
:
$ TMOUT=1
Fuente: habr.com