Comment effacer complètement l'histoire bash?

254

Je veux effacer toutes les commandes précédentes de l'historique de mon serveur. J'ai utilisé history -cet il semble que tout est effacé, mais lorsque je ssh au serveur, toutes les commandes sont toujours là.

Comment puis-je les effacer de façon permanente?

haute définition.
la source

Réponses:

332

Le fichier ~/.bash_historycontient l'historique.

Pour effacer l’historique bash complètement sur le serveur, ouvrez terminal et tapez

cat /dev/null > ~/.bash_history

Un autre moyen alternatif est de créer un lien ~/.bash_historyvers/dev/null

cependant,

Un effet secondaire gênant est que les entrées d’historique ont une copie en mémoire et qu’elles reviendront dans le fichier lorsque vous vous déconnecterez .

Pour contourner ce problème, utilisez la commande suivante (a travaillé pour moi):

cat /dev/null > ~/.bash_history && history -c && exit
devav2
la source
17
vous pouvez également mettre la commande ci-dessus dans .bashrc & .bash_logout. ce que cela signifie lorsque vous vous connectez, vous aurez un historique clair et lorsque vous vous déconnecterez, votre historique sera effacé
Qasim
26
Pourquoi avez-vous besoin de / dev / null ici? Ça ne > ~/.bash_hstorysuffirait pas?
configurateur
4
oui ça suffirait!
fromnaboo
3
J'ai essayé de le faire sur une boîte de framboise en étant connecté via SSH. J'ai ajouté la commande ci-dessus (cat / dev / null> ~ / .bash_history && history -c && exit) à la fois à .bashrc & .bash_logout comme suggéré par @Qasim. Désormais, dès que je me connecte via SSH, l'hôte distant ferme la connexion (après avoir imprimé le motd). Aide: /
Avancé
14
Va montrer ce qui se passe lorsque vous faites aveuglément des choses sans lire correctement ni comprendre le traitement et le flux de données. Il montre également les pièges d'une mauvaise communication. Ce que devav2 a fait, c'est de l'exécuter une fois. Ce que Qasim aurait dû écrire, c'est de supprimer la commande exit avant de l'ajouter dans le script de connexion.
Sri
142

Que faire:

Dans chaque shell bash ouvert (vous pouvez avoir plusieurs terminaux ouverts):

history -c
history -w

Pourquoi: comme indiqué ci-dessus, history -cvide le fichier ~/.bash_history. Il est important de noter que le shell bash ne vide pas immédiatement l'historique dans le fichier bash_history. Il est donc important de (1) vider l'historique dans le fichier et (2) d'effacer l'historique, dans tous les terminaux . C'est ce que font les commandes ci-dessus.

Référence: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/

callpraths
la source
3
En fait, l'inverse a fonctionné pour moi.
Kristianp
24
Dans de nombreux cas, vous pouvez combiner ces deux commandes:history -cw
Elliot
2
Pour une raison quelconque, cela ne fonctionne pas sur Ubuntu 14.04, probablement d'autres. Cela devrait mais ce n'est pas le cas. Si vous exécutez la commande "history -cw", vous pouvez confirmer avec la flèche haut que l'historique n'y figure plus, mais si vous ouvrez une autre fenêtre de terminal (dans le bureau Unity) avec Maj + clic sur l'icône du terminal (je l'ai épinglé dans le lanceur) l'historique des commandes est de retour, peu importe combien de fois vous faites "history -cw". "cat / dev / null> ~ / .bash_history" est le seul moyen qui a fonctionné pour moi.
Hatoru Hansou
Bien que je ne sois pas Ubantu, fonctionne bien pour mon shell bash sous OSX.
Scott Biggs
3
C'est l'histoire -c puis l'histoire -w, vous effacez d'abord l'historique puis écrivez les modifications. Ceci est facilement confirmé en fermant et en rouvrant le terminal, avec -w les commandes sont de nouveau là-bas, avec -w le dernier historique est effacé.
Hatoru Hansou
56

exécuter les commandes suivantes pour effacer l'historique pour toujours

history -c && history -w

bonne chance!

Edwin Jose
la source
3
Beaucoup mieux que la réponse acceptée. ;)
Chiramisu
Cette réponse serait encore plus utile si elle expliquait le rôle de ces indicateurs (et donc pourquoi / quand ils sont les bonnes commandes à utiliser).
LarsH
20

Il existe une autre solution beaucoup plus simple: l'exécution history -cà l'invite du terminal et toutes les entrées du bash_historyfichier sont parties .

Peter Eijlander
la source
Non ce n'est pas. Déconnectez-vous, connectez-vous, la flèche en haut me donne tout. Vous avez aussi besoin de "l'histoire -w".
Stolsvik
1
Si vous lisez la question du PO, vous saurez que l'utilisation history -cest la méthode exacte qui a conduit à cette question.
J.Money
10

Une autre façon de faire consiste à supprimer le ~/.bash_historyfichier à l'aide de la rm ~/.bash_historycommande. Lorsque vous vous connectez une autre fois, le .bash_historyfichier sera automatiquement créé.

Anwar
la source
4
Au moins sur certains systèmes d'exploitation ~ / .bash_history est écrit sur le disque lorsque vous vous déconnectez - Vous n'êtes pas sûr de * buntus.
d -_- b
7

Effacer l'historique du shell actuel:

history -c

Lorsque vous vous déconnectez, l'historique de votre shell actuel est ajouté à ~ / .bash_history, qui est un cache des historiques des shells précédents, jusqu'à un nombre maximal (voir HISTFILESIZE dans "man bash").

Si vous souhaitez supprimer complètement l'historique, vous devez essentiellement vider ~ / .bash_history, comme le suggèrent nombre des entrées ci-dessus. Tel que:

history -c && history -w

Cela efface l'historique du shell actuel, puis force l'historique du shell actuel (vide) à écraser ~ / .bash_history .... ou, pour être plus précis, il oblige à écraser HISTFILE (dont la valeur par défaut est ~ / .bash_history).

J'espère que cela t'aides.

MobiGeek
la source
4
Votre réponse est exacte, mais la question avait deux ans, elle avait accepté les réponses et incluait la même réponse que vous avez donnée.
Charles Green
6
rm ~/.bash_history; history -c; logout

Reconnectez-vous maintenant et constatez que votre flèche vers le haut ne vous donne rien.

Stolsvik
la source
1
@KasiyA Il s'agit d'un serveur et d'une session SSH, donc pas besoin de modifier ...
Radu Rădeanu
0

Essaye celui-là

éditez votre .profileet ajoutez la ligne ci-dessous à la fin du fichier

rm -f .bash_history

Ainsi, chaque fois que vous vous connecterez, votre fichier .bash_history sera automatiquement supprimé. L'ajout de l'option de suppression récursive -r semble dangereux et inutile.

Mixed IT Prof
la source