Recherche des fichiers sous Linux et la variable PATH

locate et updatedb

updatedb

En administrateur.

updatedb

ou

sudo updatedb

Pour mettre à jour la base d’indexation utilisée par la commande locate.

locate

locate sources.list
 /etc/apt/sources.list
 /etc/apt/sources.list.d
 /etc/apt/sources.list.d/official-package-repositories.list
 /usr/share/doc/apt/examples/sources.list
 /usr/share/man/de/man5/sources.list.5.gz
 /usr/share/man/fr/man5/sources.list.5.gz
 /usr/share/man/it/man5/sources.list.5.gz
 /usr/share/man/ja/man5/sources.list.5.gz
 /usr/share/man/man5/sources.list.5.gz
 /usr/share/man/nl/man5/sources.list.5.gz
 /usr/share/man/pt/man5/sources.list.5.gz
 /var/lib/dpkg/info/mintsources.list
 /var/lib/dpkg/info/python3-pkg-resources.list

Pour effectuer une recherche rapide d’un chemin.

Si les commandes locate et updatedb ne sont pas présentes, on installe le paquet mlocate. Vous pouvez exécuter updatedb (en administrateur ou avec sudo) avant locate si nécessaire.

find

Recherche de fichiers depuis un répertoire de départ et sa descendance avec la commande find (en administrateur ou avec sudo).

find /etc -name sources.list ou sudo find /etc -name sources.list
 /etc/apt/sources.list
find /var/log/ -name "syslog" ou sudo find /var/log/ -name "syslog"
 /var/log/syslog
 /var/log/installer/syslog

Avec le caractère jockers * qui correspond à 0 ou n caractères pour rechercher par exemple tous les fichiers .png.

find -name ".png" ou sudo find -name ".png"
 ./Images/test.png
 ….

which

Les commandes externes sont fournies par des fichiers, which permet de les retrouver (pas besoin d’être administrateur).

which python
 /usr/bin/python
which bash
 /bin/bash
which pwd
 /bin/pwd

whereis

whereis localise l’exécutable (comme which) , les sources et la page de manuel d’une commande (pas besoin d’être administrateur).

whereis python
 python: /usr/bin/python /usr/bin/python2.7-config /usr/bin/python3.7m-config /usr/bin/python3.7m /usr/bin/python3.7-config /usr/bin/python2.7 /usr/bin/python3.7 /usr/lib/python2.7 /usr/lib/python3.7 /etc/python /etc/python2.7 /etc/python3.7 /usr/local/lib/python2.7 /usr/local/lib/python3.7 /usr/include/python3.7m /usr/include/python2.7 /usr/include/python3.7 /usr/share/python /usr/share/man/man1/python.1.gz
whereis -m bash    -m pour les pages de manuel
 bash: /usr/share/man/man1/bash.1.gz

La variable d’environnement PATH

Si vous avez installé un paquet, une commande, que le système ne trouve pas, vous pouvez la localiser avec whereis et ajouter le chemin d’accès de son dossier à la variable PATH.

Pour voir le contenu de la variable PATH (pas besoin d’être administrateur) :

 echo $PATH

Exemple, pour ajouter /usr/sbin à la variable d’environnement PATH (pas besoin d’être administrateur) :

export PATH=$PATH:/usr/sbin

Voir un cas dans l’article suivant :

Iftop surveiller le trafic réseau depuis un terminal sous Ubuntu ou Linux Mint et Debian

À la déconnexion PATH reprendra sa valeur par défaut, donc /usr/sbin n’existera plus dans PATH.

Pour modifier PATH de façon permanente

On peut éditer le fichier de configuration du Shell de connexion. Pour le Shell BASH il s’agit de /home/user/.bashrc.

Attention, vous devez remplacer user par votre nom d’utilisateur !

On peut utiliser un éditeur de texte ou utiliser la commande suivante :

echo 'export PATH=$PATH:/usr/sbin' >> /home/user/.bashrc

La ligne est ajoutée à la fin du fichier. Pour que la modification soit prise en compte, vous devez redémarrer votre ordinateur.

Plus d’informations

Si vous travaillez sur un système sans interface graphique, il peut être nécessaire de modifier la variable PATH pour la session afin d’avoir accès aux commandes permettant de redémarrer le système et de modifier également la variable PATH de façon permanente pour que cela soit pris en compte après le redémarrage.

J’ai dû modifier la variable PATH sous Debian 10.


Fichiers systèmes

Les fichiers systèmes que j’ai déjà eu l’occasion de modifier ou de consulter.

Quelques fichiers systèmes sous Linux

Sauvegarder vos variables dans un fichier avec Python

J’utilise Debian 10 Buster et Python 3.7.3

Pour sauvegarder mes variables dans un fichier, j’utilise ici le module pickle. L’ordre de sauvegarde et de restauration doit être identique.

Le fichier peut être ouvert de différentes façons :

‘r’ Ouvrir le fichier en lecture seule (défaut).

‘w’ Ouvrir en écriture. Écrase le fichier existant.

‘x’ Ouvrir en écriture si et seulement si le fichier n’existe pas déjà.

‘a’ Ouvrir en écriture. Ajoute au fichier existant.

‘b’ Mode binaire.

‘t’ Mode texte (défaut).

Dans mes exemples, j’utilise ‘wb’ et ‘rb’

Exemple de sauvegarde des variables dans un fichier :

#!/usr/bin/env python3.7
#-*- coding: utf-8 -*-

import pickle
#Enregistrer mes variables sous forme d'une liste dans un fichier
#Initialisation des variables
serveursmb = "PC-DOM"
partagesmb = "Partage-Diaporama"
utilisateur = "dominique"
mot_de_passe = "motdepasse"
domaine = "WORKGROUP"
fichier_diaporama = "Diaporama.odp"

#Enregistrement des variables dans le fichier
variables = [serveursmb, partagesmb, utilisateur, mot_de_passe, domaine, fichier_diaporama]
fichierSauvegarde = open("diaporamaini","wb")
pickle.dump(variables, fichierSauvegarde)
fichierSauvegarde.close()

Exemple de récupération de mes variables depuis un fichier. Au préalable, je teste que le fichier existe bien :

#!/usr/bin/env python3.7
#-*- coding: utf-8 -*-

import pickle
import os.path

fichierini = "diaporamaini"

#Ouverture du fichier si il existe et récupération de la liste
if os.path.isfile(fichierini):
    fichierSauvegarde = open(fichierini,"rb")
    variables = pickle.load(fichierSauvegarde)
    fichierSauvegarde.close()

    #Affichage de la liste
    print(variables)

    #récupération des données dans les variables
    serveursmb = variables[0]
    partagesmb = variables[1]
    utilisateur = variables[2]
    mot_de_passe = variables[3]
    domaine = variables[4]
    fichier_diaporama = variables[5]

    #Affichage des variables
    print("Serveur : ", serveursmb)
    print("Partage : ", partagesmb) 
    print("Utilisateur : ",utilisateur)
    print("Mot de passe : ", mot_de_passe)
    print("Domaine : ", domaine)
    print("Fichier du diaporama : ", fichier_diaporama)
else:
    #Le fichier n'existe pas
    print("Fichier " + fichierini + " non trouvé")

Plus d’informations sur le WEB :

https://python.antoinepernot.fr/cours.php?course=chap5

Copier, renommer, créer, supprimer un fichier ou un répertoire

Vous devez vous connecter en administrateur « root » si nécessaire.

La commande cp « copy » permet de copier les fichiers et les répertoires.

Pour copier un fichier ou un répertoire et son contenu :

cp fichier1 fichier2

Pour copier un répertoire et tous les sous répertoire et fichiers qu’il contient (-r ou -R) :

cp -r répertoire1 répertoire2 
cp -R répertoire1 répertoire2

Par exemple, la copie d’un répertoire et de tout ce qu’il contient en utilisant la récursivité :

cp -R tiny-framework/ /var/www/html/wp-content/themes/

La commande mv « move » permet de déplacer ou renommer un fichier ou un répertoire.

mv source destination (déplacement et renommage) :

mv fichier1 répertoire/fichier2

Pour renommer un fichier :

mv fichier1 fichier2

La commande rm « remove » permet de supprimer des fichiers ou des répertoires.

Effacer un fichier :

rm fichier

Supprimer un répertoire non vide et tout ce qu’il contient (attention danger !) :

rm -r partage

La commande rmdir « remove directory » permet de supprimer un répertoire vide :

rmdir répertoire

La commande touch permet de créer un fichier vide :

touch fichier

La commande mkdir « make directory » permet de créer un répertoire :

mkdir répertoire

Le paramètre -p « pour parents » permet la création de toute l’arborescence menant au répertoire si elle n’existait pas :

mkdir -p /répertoire/sous-répertoire