Moyen de sauvegarder automatiquement toutes les commandes exécutées dans le répertoire [Réglé]

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
Je sais qu'il y a un fichier quelque part (je ne sais plus où) qui contient toutes les commandes exécutées. Je voudrais avoir le même genre de fichier dans chaque répertoire.
Avant de réinventer la roue, je voulais savoir si vous connaissiez un moyen simple de faire cela.

nic80 Membre non connecté
-
- Voir le profil du membre nic80
- Inscrit le : 06/08/2018
- Groupes :
-
Modérateur
Citation :
Je sais qu'il y a un fichier quelque part (je ne sais plus où)
Sous un environnement Bash, il s' agit du fichier ~/.bash_history ( le contenu peut être vu avec un cat, la commande history permet de lister les commandes tapées avec un numéro (il suffit alors de taper !numero_de_commande pour réexecuter la commande relative au numéro).
S' aigissant d' un fichier global au user ( puisque situé à la racine du /home de l' utilisateur), je ne crois pas qu' il soit possible d' avoir un historique par répertoire.

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
Merci pour ces informations. Je ne connaissais pas la commande history.
S'il n'y a pas de moyen existant, je pense bricoler quelque chose moi-même. Un petit programme qui permettrait de saisir une commande, lancerait la commande, la sauvegarderait dans un fichier dans le répertoire courant.
Il faudrait que je puisse lancer mon programme avec un clic droit dans la fenêtre, comme je fais actuellement pour ouvrir un terminal ("Actions/Ouvrir un terminal ici").
J'étudie la chose...

steven Membre non connecté
-
- Voir le profil du membre steven
- Inscrit le : 18/05/2018
No Comment ...
Merci de ne pas 'rebondir' sur mes post's
Censor => 2025





Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron

steven Membre non connecté
-
- Voir le profil du membre steven
- Inscrit le : 18/05/2018
No Comment ...
Merci de ne pas 'rebondir' sur mes post's
Censor => 2025





Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
steven :
Mais, le keyllog, va enregistrer dans une "liste" toutes les saisies au clavier dont les commands, il ne lui reste plus alors qu'a reinjecter cette liste selectivement non ?
Non c'est différent.
Je me demande s'il est possible de réorienter la sortie du bash_history vers un autre fichier a travers une variable d'environnement qu'on redéfinierait depuis le PS1
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
https://unix.stackexchange.com/questions/305524/create-history-log-per-working-directory-in-bash
Voilà quelqu'un y a déjà pensé.
Donc tu peux installer avec :
Code BASH :
cat <<EOT >>${HOME}/.bashrc function ch () { cd "${@}" ; export HISTFILE="$(pwd)/.bash_history" ; } alias cd=ch EOT
ou une alternative à l'installation :
Code BASH :
echo -e 'function ch () { cd "${@}" ; export HISTFILE="$(pwd)/.bash_history" ; }\nalias cd=ch' >>${HOME}/.bashrc
je trouve que c'est très intéressant... Je vais me l'installer aussi.
Pour l'utilisation, c'est transparent, on utilise cd (attention, ça ne marche pas avec pushd/popd)
et pour récupérer l'historique, la commande history.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
@Jybz
J'ai collé le premier code de ton message dans un fichier nommé install.sh. J'ai ouvert un terminal et tapé sh install.sh. J'ai fermé le terminal, en ai ouvert un autre, tapé n'importe quelle commande puis exit. Je ne vois aucun fichier créé dans mon dossier. (J'ai bien activé l'option "Afficher les fichiers cachés" dans l'explorateur.) Apparemment il y a quelque chose que je n'ai pas bien compris. D'ailleurs je n'ai pas compris ce que tu dis au sujet de la commande cd qu'on doit utiliser.

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron
La commande de Jybz se rajoute dans le bashrc. Ensuite on lit la commande cd qui permet de passer d'un dossier à un autre à la fonction ch créee. Ainsi lorsque l'on est dans un terminal, on rentre cd maDestination et cela lancera la fonction ch qui créera un historique des commandes dans le dossier de destination. À chaque fois qu'on rappelle la commande cd, cela créera un fichier dans le dossier ou écriras dans le fichier historique existant.
Les deux méthodes sont juste deux manières différentes d'écrire directement la fonction dans le bashrc sans avoir à ouvrir un éditeur de texte.

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
Merci. Cette fois je crois que j'ai compris. J'ai ouvert .bashrc dans un éditeur. Il avait bien été modifié, mais pas comme il faut (vu que je m'y étais mal pris). Voici ce qu'il contient maintenant :
Code BASH :
# .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi function ch () { cd "${@}" ; export HISTFILE="$(pwd)/.bash_history" ; } alias cd=ch
Et ça fonctionne. Génial !
Édité par Roland57 Le 15/11/2021 à 15h50

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
Code BASH :
cd .
Ça fonctionne.
Je vais faire un petit outil qui trie chaque .bash_history par ordre alphabétique et supprime les doublons. Le bonheur !

Édité par Roland57 Le 15/11/2021 à 16h09

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron
Code BASH :
# don't put duplicate lines or lines starting with space in the history. # See bash(1) for more options HISTCONTROL=ignoreboth
Ça va aussi ignorer les lignes qui commencent par un espace et les lignes en double. Si tu veux garder les lignes qui commencent par un espace, il faut regarder les options des HISTCONTROL dans le manuel de bash.

Roland57 Membre non connecté
-
- Voir le profil du membre Roland57
- Inscrit le : 08/02/2020
- Site internet
- Groupes :
Parfait. Merci !
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie