GNU/Linux >> Tutoriels Linux >  >> Linux

15 exemples pour maîtriser l'historique de la ligne de commande Linux

Lorsque vous utilisez fréquemment la ligne de commande Linux, l'utilisation efficace de l'historique peut être un gain de productivité majeur. En fait, une fois que vous aurez maîtrisé les 15 exemples que j'ai fournis ici, vous trouverez l'utilisation de la ligne de commande plus agréable et amusante.

1. Afficher l'horodatage à l'aide de HISTTIMEFORMAT

Généralement, lorsque vous tapez l'historique à partir de la ligne de commande, il affiche la commande # et la commande. À des fins d'audit, il peut être avantageux d'afficher l'horodatage avec la commande, comme indiqué ci-dessous.

# export HISTTIMEFORMAT='%F %T '
# history | more
1  2008-08-05 19:02:39 service network restart
2  2008-08-05 19:02:39 exit
3  2008-08-05 19:02:39 id
4  2008-08-05 19:02:39 cat /etc/redhat-release

2. Rechercher dans l'historique en utilisant Control+R

Je crois fermement que c'est peut-être votre caractéristique historique la plus fréquemment utilisée. Lorsque vous avez déjà exécuté une commande très longue, vous pouvez simplement rechercher l'historique à l'aide d'un mot-clé et ré-exécuter la même commande sans avoir à la saisir entièrement. Appuyez sur Ctrl+R et saisissez le mot-clé . Dans l'exemple suivant, j'ai recherché rouge , qui affichait la commande précédente "cat /etc/redhat-release ” dans l'historique qui contenait le mot rouge.

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`red': cat /etc/redhat-release
[Note: Press enter when you see your command,
which will execute the command from the history]
# cat /etc/redhat-release
Fedora release 9 (Sulphur)

Parfois, vous souhaitez modifier une commande de l'historique avant de l'exécuter. Par ex. vous pouvez rechercher httpd , qui affichera service httpd stop à partir de l'historique des commandes, sélectionnez cette commande et changez l'arrêt en début et réexécutez-le à nouveau comme indiqué ci-dessous.

# [Press Ctrl+R from the command prompt,
which will display the reverse-i-search prompt]
(reverse-i-search)`httpd': service httpd stop
[Note: Press either left arrow or right arrow key when you see your
command, which will display the command for you to edit, before executing it]
# service httpd start

3. Répétez rapidement la commande précédente en utilisant 4 méthodes différentes

Parfois, vous pouvez finir par répéter les commandes précédentes pour diverses raisons. Voici les 4 façons différentes de répéter la dernière commande exécutée.

  1. Utilisez la flèche vers le haut pour afficher la commande précédente et appuyez sur Entrée pour l'exécuter.
  2. Tapez  !! et appuyez sur entrée depuis la ligne de commande
  3. Tapez !-1 et appuyez sur Entrée depuis la ligne de commande.
  4. Appuyez sur Ctrl+P affichera la commande précédente, appuyez sur Entrée pour l'exécuter

4. Exécuter une commande spécifique depuis l'historique

Dans l'exemple suivant, si vous voulez répéter la commande #4, vous pouvez faire !4 comme indiqué ci-dessous.

# history | more
1  service network restart
2  exit
3  id
4  cat /etc/redhat-release

# !4
cat /etc/redhat-release
Fedora release 9 (Sulphur)

5. Exécute la commande précédente qui commence par un mot spécifique

Taper ! suivi des premières lettres de la commande que vous souhaitez réexécuter. Dans l'exemple suivant, en tapant !ps et enter, exécutez la commande précédente en commençant par ps, qui est 'ps aux | grep yp'.

# !ps
ps aux | grep yp
root     16947  0.0  0.1  36516  1264 ?        Sl   13:10   0:00 ypbind
root     17503  0.0  0.0   4124   740 pts/0    S+   19:19   0:00 grep yp

6. Contrôlez le nombre total de lignes dans l'historique à l'aide de HISTSIZE

Ajoutez les deux lignes suivantes au .bash_profile et reconnectez-vous au shell bash pour voir le changement. Dans cet exemple, seule la commande 450 sera stockée dans l'historique bash.

# vi ~/.bash_profile
HISTSIZE=450
HISTFILESIZE=450

7. Modifiez le nom du fichier d'historique à l'aide de HISTFILE

Par défaut, l'historique est stocké dans ~/.bash_history dossier. Ajoutez la ligne suivante au .bash_profile et reconnectez-vous au shell bash pour stocker la commande history dans le fichier .commandline_warrior au lieu du fichier .bash_history. Je n'ai pas encore trouvé d'utilisation pratique pour cela. Je peux voir que cela s'utilise lorsque vous souhaitez suivre les commandes exécutées à partir de différents terminaux en utilisant un nom de fichier d'historique différent.

# vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior

Si vous avez une bonne raison de changer le nom du fichier d'historique, partagez-le avec moi, car je suis intéressé à savoir comment vous utilisez cette fonctionnalité.

8. Éliminer l'entrée répétée continue de l'historique à l'aide de HISTCONTROL

Dans l'exemple suivant, pwd a été tapé trois fois, lorsque vous faites l'historique, vous pouvez voir les 3 occurrences continues de celui-ci. Pour éliminer les doublons, définissez HISTCONTROL sur ignorés comme indiqué ci-dessous.

# pwd
# pwd
# pwd
# history | tail -4
44  pwd
45  pwd
46  pwd [Note that there are three pwd commands in history, after
executing pwd 3 times as shown above]
47  history | tail -4

# export HISTCONTROL=ignoredups
# pwd
# pwd
# pwd
# history | tail -3
56  export HISTCONTROL=ignoredups
57  pwd [Note that there is only one pwd command in the history, even after
executing pwd 3 times as shown above]
58  history | tail -4

9. Effacez les doublons dans tout l'historique à l'aide de HISTCONTROL

L'ignoréups montré ci-dessus supprime les doublons uniquement s'il s'agit de commandes consécutives. Pour éliminer les doublons dans tout l'historique, réglez HISTCONTROL sur erasedups comme indiqué ci-dessous.

# export HISTCONTROL=erasedups
# pwd
# service httpd stop
# history | tail -3
38  pwd
39  service httpd stop
40  history | tail -3

# ls -ltr
# service httpd stop
# history | tail -6
35  export HISTCONTROL=erasedups
36  pwd
37  history | tail -3
38  ls -ltr
39  service httpd stop
[Note that the previous service httpd stop after pwd got erased]
40  history | tail -6

10. Forcer l'historique à ne pas se souvenir d'une commande particulière en utilisant HISTCONTROL

Lorsque vous exécutez une commande, vous pouvez indiquer à l'historique d'ignorer la commande en définissant HISTCONTROL sur ignorespace ET en tapant un espace devant la commande, comme indiqué ci-dessous. Je peux voir beaucoup d'administrateurs système juniors s'enthousiasmer à ce sujet, car ils peuvent masquer une commande de l'historique. Il est bon de comprendre comment fonctionne ignorespace. Mais, en tant que bonne pratique, ne cachez pas délibérément quoi que ce soit de l'histoire.

# export HISTCONTROL=ignorespace
# ls -ltr
# pwd
#  service httpd stop [Note that there is a space at the beginning of service,
to ignore this command from history]
# history | tail -3
67  ls -ltr
68  pwd
69  history | tail -3

11. Effacer tout l'historique précédent en utilisant l'option -c

Parfois, vous voudrez peut-être effacer tout l'historique précédent, mais vous souhaitez conserver l'historique.

# history -c

12. Remplacer les mots des commandes d'historique

Lorsque vous effectuez une recherche dans l'historique, vous pouvez exécuter une commande différente, mais utiliser le même paramètre de la commande que vous venez de rechercher.

Dans l'exemple ci-dessous, le !!:$ à côté de la commande vi obtient l'argument de la commande précédente à la commande actuelle.

# ls anaconda-ks.cfg
anaconda-ks.cfg
# vi !!:$
vi anaconda-ks.cfg

Dans l'exemple ci-dessous, le !^ à côté de la commande vi obtient le premier argument de la commande précédente (c'est-à-dire la commande cp) à la commande actuelle (c'est-à-dire la commande vi).

# cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi  !^
vi anaconda-ks.cfg

13. Remplacez un argument spécifique par une commande spécifique.

Dans l'exemple ci-dessous, !cp:2 recherche la commande précédente dans l'historique qui commence par cp et prend le deuxième argument de cp et le remplace par la commande ls -l comme indiqué ci-dessous.

# cp ~/longname.txt /really/a/very/long/path/long-filename.txt
# ls -l !cp:2
ls -l /really/a/very/long/path/long-filename.txt

Dans l'exemple ci-dessous, !cp:$ recherche la commande précédente dans l'historique qui commence par cp et prend le dernier argument (dans ce cas, qui est également le deuxième argument comme indiqué ci-dessus) de cp et le remplace par la commande ls -l comme indiqué ci-dessous.

# ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt

14. Désactiver l'utilisation de l'historique à l'aide de HISTSIZE

Si vous souhaitez désactiver complètement l'historique et ne souhaitez pas que le shell bash se souvienne des commandes que vous avez tapées, définissez HISTSIZE sur 0, comme indiqué ci-dessous.

# export HISTSIZE=0
# history
# [Note that history did not display anything]

15. Ignorer des commandes spécifiques de l'historique à l'aide de HISTIGNORE

Parfois, vous ne voudrez peut-être pas encombrer votre historique avec des commandes de base telles que pwd et ls. Utilisez HISTIGNORE pour spécifier toutes les commandes que vous souhaitez ignorer de l'historique. Veuillez noter que l'ajout de ls à HISTIGNORE ignore uniquement ls et non ls -l. Vous devez donc fournir la commande exacte que vous souhaitez ignorer de l'historique.

# export HISTIGNORE="pwd:ls:ls -ltr:"
# pwd
# ls
# ls -ltr
# service httpd stop

# history | tail -3
79  export HISTIGNORE="pwd:ls:ls -ltr:"
80  service httpd stop
81  history
[Note that history did not record pwd, ls and ls -ltr]

Lecture recommandée

Bash 101 Hacks, par Ramesh Natarajan . Je passe la plupart de mon temps sur l'environnement Linux. Donc, naturellement, je suis un grand fan de la ligne de commande Bash et des scripts shell. Il y a 15 ans, lorsque je travaillais sur différentes versions de *nix, j'écrivais beaucoup de code sur le shell C et le shell Korn. Des années plus tard, lorsque j'ai commencé à travailler sur Linux en tant qu'administrateur système, j'ai pratiquement automatisé toutes les tâches possibles à l'aide de scripts shell Bash. Sur la base de mon expérience avec Bash, j'ai écrit le livre électronique Bash 101 Hacks qui contient 101 exemples pratiques sur la ligne de commande Bash et les scripts shell. Si vous songez à maîtriser Bash, rendez-vous service et lisez ce livre, qui vous aidera à prendre le contrôle de votre ligne de commande Bash et de vos scripts shell.

Des articles Linux géniaux

Voici quelques exemples impressionnants de 15 articles qui pourraient vous être utiles.

  • Commande LS Unix :15 exemples pratiques
  • Maîtrisez le Grep ! – 15 exemples pratiques de commandes Grep
  • Linux Crontab :15 exemples de tâches Cron impressionnants
  • Maman, je l'ai trouvé ! - 15 exemples pratiques de commande de recherche Linux

Linux
  1. Commande d'historique Linux

  2. 7 Exemples de commandes Linux df

  3. Exemples de commande rm sous Linux

  4. Exemples de commandes ps sous Linux

  5. ac Exemples de commandes sous Linux

Commande Diff sous Linux avec exemples

Commande d'historique sous Linux avec des exemples

Maîtrisez la ligne de commande Linux

Utilisation de la commande Linux sed avec des exemples

15 exemples pratiques de commande Grep sous Linux / UNIX

Exemples de commandes id sous Linux