Si vous êtes un utilisateur de ligne de commande Linux, vous ne souhaitez parfois pas que certaines commandes soient enregistrées dans votre historique de ligne de commande. Les raisons peuvent être multiples. Par exemple, vous occupez un certain poste dans une entreprise et disposez de certains privilèges dont vous ne voulez pas que les autres abusent. Il se peut également qu'il y ait des commandes particulièrement importantes que vous ne souhaitez pas exécuter par erreur lors de la navigation dans la liste de l'historique.
Cependant, existe-t-il un moyen de contrôler quelles commandes entrent dans la liste d'historique et lesquelles ne le sont pas ? Ou en d’autres termes, pouvons-nous activer le mode incognito comme un navigateur dans un terminal Linux ? La réponse est oui, et selon les objectifs spécifiques que vous souhaitez atteindre, il existe de nombreuses façons d’y parvenir. Dans cet article, nous aborderons quelques méthodes éprouvées.
Remarque : Toutes les commandes apparaissant dans cet article ont été testées sous Ubuntu.
Les deux premières méthodes ont été décrites dans un article précédent. Si vous le savez déjà, vous pouvez ignorer cette partie. Toutefois, si vous ne le comprenez pas, il est recommandé de le lire attentivement.
Oui, vous avez bien lu. En insérant un espace avant la commande, la commande sera ignorée par le shell, ce qui signifie qu'elle n'apparaîtra pas dans l'historique. Mais cette méthode a un prérequis. Elle ne fonctionnera que si votre variable d'environnement HISTCONTROL est définie sur "ignorespace" ou "ignoreboth". Dans la plupart des cas, il s'agit de la valeur par défaut.
Donc, comme la commande suivante (ici [espace] signifie entrer un espace) :
[space]echo "this is a top secret"
Si vous avez déjà exécuté la commande suivante pour définir les variables d'environnement, la commande ci-dessus n'apparaîtra pas dans l'historique.
export HISTCONTROL = ignorespace
La capture d'écran ci-dessous est un exemple de cette approche.
La quatrième commande "écho" n'est pas enregistrée dans l'historique car il y a un espace devant elle.
Si vous souhaitez désactiver tout l'historique d'une session, vous pouvez simplement effacer la valeur de la variable d'environnement HISTSIZE avant de commencer le travail en ligne de commande. Exécutez la commande suivante pour effacer sa valeur :
export HISTSIZE=0
HISTSIZE indique le nombre de commandes (nombre de lignes) pouvant être enregistrées dans la liste historique d'une session bash. Par défaut, il est défini sur une valeur non nulle, par exemple sur mon ordinateur, il est 1000.
La commande mentionnée ci-dessus définit donc sa valeur sur 0, avec pour résultat que rien ne sera stocké dans l'historique jusqu'à ce que vous fermiez le terminal. N'oubliez pas que vous ne pouvez pas non plus voir les commandes précédemment exécutées en appuyant sur la touche fléchée vers le haut ou en exécutant la commande d'historique.
Cela peut être considéré comme une autre implémentation de la solution proposée dans la partie précédente. La seule différence est d'exécuter cette commande une fois que vous avez terminé tout votre travail. Voici la commande qui vient d'être mentionnée :
history -cw
Comme mentionné tout à l'heure, cela a le même effet que la méthode HISTSIZE.
Bien que les méthodes décrites précédemment (2 et 3) soient utiles, elles peuvent effacer tout l'historique et, dans de nombreux cas, certaines peuvent ne pas correspondre à ce à quoi nous nous attendons. Parfois, vous souhaiterez peut-être enregistrer l'historique jusqu'à ce que vous commenciez à travailler sur la ligne de commande. Pour de tels besoins, vous commencez à exécuter les commandes suivantes avant de travailler :
[space]set +o history
Remarque : [espace] signifie espace. Et à cause des espaces, la commande elle-même n'est pas non plus enregistrée.
La commande ci-dessus désactivera temporairement la fonction d'historique, ce qui signifie que toutes les opérations que vous effectuez après cette commande ne seront pas enregistrées dans l'historique, mais tout ce qui précède cette commande sera enregistré dans la liste de l'historique tel quel.
Pour réactiver la fonction historique, exécutez la commande suivante :
[Space]set -o history
Il restaurera l'environnement à son état d'origine, c'est-à-dire que vous avez terminé votre travail, et les commandes après l'exécution de la commande ci-dessus apparaîtront dans l'historique.
现在假设历史记录中已经包含了一些你不希望记录的命令。这种情况下我们怎么办?很简单。直接动手删除它们。通过下面的命令来删除:
history | grep "part of command you want to remove"
上面的命令会输出历史记录中匹配的命令,每一条前面会有个数字。
一旦你找到你想删除的命令,执行下面的命令,从历史记录中删除那个指定的项:
history -d [num]
下面是这个例子的截图。
第二个 ‘echo’命令被成功的删除了。
(如果你不希望上述命令本身也被记录进历史中,你可以在上述命令前加个空格)
同样的,你可以使用向上的箭头一直往回翻看历史记录。当你发现你感兴趣的命令出现在终端上时,按下 “Ctrl + U”清除整行,也会从历史记录中删除它。
有多种不同的方法可以操作 Linux 命令行历史来满足你的需求。然而请记住,从历史中隐藏或者删除命令通常不是一个好习惯,尽管本质上这并没有错。但是你必须知道你在做什么,以及可能产生的后果。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!