Sept variables Bash inattendues

En poursuivant la sĂ©rie d'annotations sur des fonctionnalitĂ©s moins connues de bash, je vais vous montrer sept variables que vous ne connaissiez peut-ĂȘtre pas. PROMPT_COMMAND

1) Vous ĂȘtes peut-ĂȘtre dĂ©jĂ  au courant de la façon de manipuler l'invite prompt pour afficher diverses informations utiles, mais peu de gens savent que chaque fois que l'invite est affichĂ©e, une commande de shell peut ĂȘtre exĂ©cutĂ©e.

En fait, de nombreux manipulateurs d'invite complexes utilisent cette variable pour exécuter des commandes qui collectent des informations affichées dans l'invite.

Essayez d'exécuter ceci dans un nouveau shell et voyez ce qui se passe avec la session :

$ PROMPT_COMMAND='echo -n "writing the prompt at " && date'

HISTTIMEFORMAT

2) dans le terminal, vous obtiendrez une liste des commandes précédemment exécutées sous votre compte.

Si l'on exécute history $ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T '

Une fois que cette variable est définie, les nouvelles entrées enregistrent l'heure avec la commande, donc la sortie ressemblera à ceci :

1871 I ran this at: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 I ran this at: 01/05/19 13:38:19 curl bbc.co.uk 1873 I ran this at: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 I ran this at: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 I ran this at: 01/05/19 13:39:25 sudo su -

Le formatage correspond aux symboles de

man date CDPATH.

3) Pour gagner du temps dans l'invite de commande, vous pouvez utiliser cette variable pour changer de répertoire aussi facilement que vous exécutez des commandes.

, la variable

Comme l'année PATHest une liste de chemins, séparés par des deux-points. Lorsque vous exécutez une commande Pour gagner du temps dans l'invite de commande, vous pouvez utiliser cette variable pour changer de répertoire aussi facilement que vous exécutez des commandes. avec un chemin relatif (c'est-à-dire sans barre oblique au début), par défaut, le shell cherche dans votre dossier local les noms correspondants. cd cherchera dans les chemins que vous avez spécifiés pour le répertoire dans lequel vous souhaitez aller. Pour gagner du temps dans l'invite de commande, vous pouvez utiliser cette variable pour changer de répertoire aussi facilement que vous exécutez des commandes. Si vous définissez

comme ceci : Pour gagner du temps dans l'invite de commande, vous pouvez utiliser cette variable pour changer de répertoire aussi facilement que vous exécutez des commandes. $ CDPATH=/:/lib

et ensuite entrez :

$ cd /home $ cd tmp

vous arriverez toujours Ă 

peu importe oĂč vous ĂȘtes. /tmp Cependant, faites attention, car si vous n'incluez pas le dossier local (

) dans la liste, vous ne pourrez pas créer un autre dossier.tmp et y accéder comme d'habitude : $ cd /home $ mkdir tmp $ cd tmp $ pwd /tmp

Oops !

C'est un peu déroutant, ce que j'ai ressenti quand j'ai réalisé que le dossier local n'avait pas été inclus dans la variable plus familiÚre


 mais vous devez le faire dans la variable PATH, car vous pourriez ĂȘtre trompĂ© en exĂ©cutant une commande factice depuis un code tĂ©lĂ©chargĂ©. PATHLe mien est dĂ©fini comme point de dĂ©part :

CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt

SHLVL

4) Vous ĂȘtes-vous dĂ©jĂ  demandĂ©, en entrant

Avez-vous dĂ©jĂ  pensĂ© Ă  introduire exit vous sortira de l'environnement bash actuel dans un autre 'parent' shell ou fermera simplement complĂštement la fenĂȘtre de console ?

Cette variable suit Ă  quel point vous ĂȘtes en profondeur dans l'environnement bash. Si vous crĂ©ez un nouveau terminal, elle est dĂ©finie Ă  1 :

$ echo $SHLVL
1

Ensuite, si vous lancez un autre processus shell, le nombre augmente :

$ bash
$ echo $SHLVL
2

Ceci peut ĂȘtre trĂšs utile dans les scripts, lorsque vous n'ĂȘtes pas sĂ»r s'il faut sortir ou non, ou pour suivre oĂč vous vous trouvez par niveau d'imbrication.

5) LINENO

La variable LINENOest également utile pour analyser l'état actuel et le débogage, car elle indique le nombre de commandes exécutées dans la session jusqu'à présent :

$ bash
$ echo $LINENO
1
$ echo $LINENO
2

Ceci est le plus souvent utilisĂ© lors du dĂ©bogage de scripts. En insĂ©rant des lignes telles que echo DEBUG:$LINENO, vous pouvez rapidement dĂ©terminer oĂč vous en ĂȘtes dans le script (ou non).

6) REPLY

Si, comme moi, vous écrivez généralement ce type de code :

$ read input
echo do something with $input

alors cela peut ĂȘtre une surprise qu'il n'est pas nĂ©cessaire de s'inquiĂ©ter de crĂ©er une variable :

$ read
echo do something with $REPLY

Cela fait la mĂȘme chose.

7) TMOUT

Pour ne pas rester trop longtemps sur les serveurs de production pour des raisons de sécurité ou ne pas exécuter accidentellement quelque chose de dangereux dans le mauvais terminal, définir cette variable agit comme une protection.

Si rien n'est saisi pendant le nombre de secondes défini, la session shell se termine.

C'est-Ă -dire que c'est une alternative Ă  sleep 1 && exit:

$ TMOUT=1

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster