Continuando a série de notas sobre
1) PROMPT_COMMAND
Você já deve saber como manipular o prompt para mostrar várias informações úteis, mas nem todo mundo sabe que é possível executar um comando shell sempre que o prompt for mostrado.
Na verdade, muitos manipuladores de prompt complexos usam essa variável para executar comandos para coletar informações exibidas no prompt.
Tente executar isso em um novo shell e veja o que acontece com a sessão:
$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'
2) HISTTIMEFORMAT
Se correr history
no console, você receberá uma lista de comandos executados anteriormente em sua conta.
$ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '
Depois que esta variável for definida, novas entradas registrarão o tempo junto com o comando, então a saída será semelhante a esta:
1871 Executei isso em: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Executei isso em: 01/05/19 13:38:19 curl bbc.co.uk 1873 Executei isso em : 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Executei isso em: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Executei isso em: 01 /05/19 13:39:25 sudo su -
A formatação corresponde aos caracteres de man date
.
3) CDPATH
Para economizar tempo na linha de comando, você pode usar esta variável para alterar diretórios com a mesma facilidade com que emite comandos.
como PATH
, variável CDPATH
é uma lista de caminhos separados por dois pontos. Quando você executa o comando cd
com um caminho relativo (ou seja, sem barra inicial), por padrão o shell procura na sua pasta local por nomes correspondentes. CDPATH
irá procurar nos caminhos que você forneceu o diretório para o qual deseja ir.
Se você instalar CDPATH
assim:
$ CDPATH=/:/lib
e digite:
$ cd /home
$ cd tmp
então você sempre acabará em /tmp
Não importa onde você está.
Porém, tenha cuidado, pois se você não especificar o local na lista (.
), então você não poderá criar nenhuma outra pasta tmp
e vá como de costume:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmp
Opa!
Isto é semelhante à confusão que senti quando percebi que a pasta local não estava incluída na variável mais familiar PATH
... mas você precisa fazer isso em sua variável PATH porque pode ser levado a executar um comando falso a partir de algum código baixado.
O meu é definido pelo ponto de partida:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt
4) SHLVL
Você já se perguntou, digitando exit
isso o levará do shell bash atual para outro shell "pai" ou apenas fechará completamente a janela do console?
Esta variável monitora o quão profundamente aninhado você está no shell bash. Se você criar um novo terminal, ele será definido como 1:
$ echo $SHLVL
1
Então, se você iniciar outro processo shell, o número aumenta:
$ bash
$ echo $SHLVL
2
Isso pode ser muito útil em scripts onde você não tem certeza se deve sair ou não, ou para controlar onde está aninhado.
5) LINENO
A variável também é útil para analisar o estado atual e depurar LINENO
, que informa o número de comandos executados na sessão até o momento:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2
Isso é usado com mais frequência ao depurar scripts. Inserindo linhas como echo DEBUG:$LINENO
, você pode determinar rapidamente onde você está (ou não) no script.
6) REPLY
Se, como eu, você costuma escrever códigos como este:
$ read input
echo do something with $input
Pode ser uma surpresa que você não precise se preocupar em criar a variável:
$ read
echo do something with $REPLY
Isso faz a mesma coisa.
7) TMOUT
Para evitar permanecer em servidores de produção por muito tempo por motivos de segurança ou executar acidentalmente algo perigoso no terminal errado, definir esta variável atua como uma proteção.
Se nada for inserido por um determinado número de segundos, o shell será encerrado.
Ou seja, esta é uma alternativa sleep 1 && exit
:
$ TMOUT=1
Fonte: habr.com