On utilise la commande ls:
lsSeul les noms des fichiers contenus dans le dossier sont affichés.
On utilise la commande ls -l:
$ ls -l
total 12
-rw-r--r-- 1 supv supv 25 Jul 4 09:28 fichier.txt
drwxr-xr-x 2 supv supv 4096 Jul 3 16:26 dossier
lrwxrwxrwx 1 supv supv 11 Jul 4 09:28 lien -> fichier.txtmkdir chemin/vers/dossierSi le dossier chemin n’existe pas:
mkdir -p chemin/vers/dossier/et/ses/sous/dossiersmkdir dossier/vide
rmdir dossier/videtouch chemimn/vers/dossier/un_fichier
rm -r chemin/vers/dossierOn utilise la commande cat pour afficher le contenu d’un
fichier texte :
cat .bash_historyTous les fichiers commençant par un point . sont des
fichiers cachés : ils ne sont pas affichés par la commande
ls (sauf si une option force cet affichage).
La commande suivante copie le fichier .bashrc vers le
fichier .bashrc.bak
$ cp .bashrc .bashrc.bakCette commande prend au moins deux paramètres :
C’est le meilleur moyen de sauvegarder un fichier pour éviter de perdre son contenu en cas d’erreur de manipulation.
On dit qu’on fait un backup, d’où l’extension du fichier:
.bak
Créer un répertoire se fait en utilisant la commande
mkdir :
$ mkdir BackupDéplacer un fichier se fait en utilisant la commande
mv
$ mv .bashrc.bak Backup/Pour changer la nom d’un fichier, on utilise la commande
mv :
mv Backup DossierArchivesCette commande permet de créer ou de modifier la date de dernière modification d’un fichier à la date actuelle:
touch fichierVideOn utilise la commande rm :
rm fichierVide
Utilisation de rmdir
rmdir dossierVideC’est une solution sécure, puisqu’elle évite de détruire le contenu interne au dossier celui-ci n’est pas vide:
L’option -r associée à la commande rm
permet d’effacer un dossier de manière récursive :
rm -r dossierNonVideCette commande est plus risquée et doit être faite en s’assurant qu’aucune donnée importante n’est supprimée avant son appel.
La commande man permet d’afficher le manuel de chaque
commande.
Pour quitter la page de manuel, appuyer sur la touche q.
Exemples:
man ls
man rmUne variable permet d’affecter à un mot-clé (une sorte d’étiquette), une valeur.
Cette valeur peut être :
Assigner la valeur bonjour à la variable nommée
salutation :
salutation=bonjourLa commande suivante affiche le contenu de la variable associé à un autre texte:
echo "$salutation n'importe qui"On affecte ici une valeur contenant des espaces (les guillemets sont importants) :
salutation="au revoir"Exécuter alors cette commande:
echo "$salutation n'importe qui"Les variables d’environnement sont des variables spécifiques du terminal.
Elles affectent sont comportement de manière notable.
Exécuter la commande suivante:
PS1="> "Constater l’effet sur l’invite de commande.
Re-saisir cette commande en modifiant PS1:
PS1="Saisir ici: "L’invite de commande est utilisée pour représenter ce qui est affiché dans le terminal pour inviter à saisir une commande. Exemple d’invite de commande:
tstn@ubuntu1804:~$
Désormais, dans les commandes indiquées, le symbole $
représentera l’invite de commande.
Ce symbole n’est pas à saisir dans le terminal.
Pour rétablir l’invite de commande initiale, deux options:
. ~/.bashrcLa variable d’environnement PATH permet de définir où
l’interpréteur de commande ira chercher le fichier à exécuter.
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/binPar exemple, la commande ls est en réalité située dans
/bin/ls.
Pour déterminer cela, l’interpréteur de commande
La commande which permet de déterminer où se situe un
programme exécutable:
which lsPATHChaque dossier stocké dans la variable PATH peut
contenir des fichiers exécutables
Chaque dossier est indiqué par un chemin, séparé des autres par un
symbole : (deux-points):
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
La commande which permet de déterminer le chemin vers la
commande, ici ls est stockée dans
/usr/bin:
$ which ls
/usr/bin/ls
La commande file permet ici de montrer que
ls est un fichier exécutable binaire:
$ file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6461a544c35b9dc1d172d1a1c09043e487326966, for GNU/Linux 3.2.0, strippedCette même commande montre que le fichier .bashrc est un
simple fichier texte:
$ file .bashrc
.bashrc: ASCII textCeci est applicable pour d’autres fichiers et commandes:
$ which zcat
/usr/bin/zcat
$ file /usr/bin/zcat
/usr/bin/zcat: POSIX shell script, ASCII text executablePour vérifier si un fichier est réellement exécutable, on peut
utiliser la commande ls -l ou la commande
stat:
$ stat /usr/bin/zcat
Fichier : /usr/bin/zcat
Taille : 1984 Blocs : 8 Blocs d'E/S : 4096 fichier
Périphérique : 801h/2049d Inœud : 787026 Liens : 1
Accès : (0755/-rwxr-xr-x) UID : ( 0/ root) GID : ( 0/ root)
Accès : 2023-03-28 11:10:09.707174807 +0200
Modif. : 2021-03-03 00:30:16.000000000 +0100
Changt : 2021-09-24 14:01:11.913849520 +0200
Créé : 2021-09-24 14:01:11.905849520 +0200
Le x indique que le fichier est exécutable:
$ ls -l /usr/bin/zcat
-rwxr-xr-x 1 root root 1984 3 mars 2021 /usr/bin/zcat
On commence par créer un dossier nommé bin dans le
dossier de départ de l’utilisateur :
mkdir binPuis on y crée un fichier :
$ touch bin/executable
$ nano bin/executable
$ cat bin/executable
echo Bonjour
ls
pwdSi on tente d’exécuter le fichier
$ bin/executable
bash: bin/executable: Permission non accordée
L’erreur ici indique que la permission d’exécuter le fichier n’est pas présente.
Ce qui est confirmé par la commande stat:
$ stat bin/executable
Fichier : bin/executable
Taille : 20 Blocs : 8 Blocs d'E/S : 4096 fichier
Périphérique : 801h/2049d Inœud : 1323037 Liens : 1
Accès : (0644/-rw-r--r--) UID : ( 1001/ user) GID : ( 1001/ user)
Accès : 2023-03-28 11:19:03.153757194 +0200
Modif. : 2023-03-28 11:18:56.809533223 +0200
Changt : 2023-03-28 11:18:56.809533223 +0200
Créé : 2023-03-28 11:16:20.307988915 +0200
Ou la commande ls -l:
$ ls -l bin/executable
-rw-r--r--- 1 user user 2020 3 mars 2021 bin/executable
On peut rendre ce fichier exécutable avec la commande
chmod adéquate:
$ chmod +x bin/executableDont on constate les effets avec ls -l :
$ ls -l bin/executable
-rwxr-xr--x 1 user user 2020 3 mars 2021 bin/executable
Ou avec stat:
$ stat bin/executable
Fichier : bin/executable
Taille : 20 Blocs : 8 Blocs d'E/S : 4096 fichier
Périphérique : 801h/2049d Inœud : 1323037 Liens : 1
Accès : (0755/-rwxr-xr-x) UID : ( 1001/ tstn1) GID : ( 1001/ tstn1)
Accès : 2023-03-28 11:19:03.153757194 +0200
Modif. : 2023-03-28 11:18:56.809533223 +0200
Changt : 2023-03-28 11:20:33.784961399 +0200
Créé : 2023-03-28 11:16:20.307988915 +0200
Cette fois l’exécution fonctionne:
$ bin/executable
Bonjour
Archives Bureau Documents Modèles Public Vidéos
bin demo Images Musique Téléchargements
/home/tstn1Cependant il y a une limite, si on change de dossier:
$ cd Documents
$ pwd
/home/tstn1/Documents
$ bin/executable
bash: bin/executable: Aucun fichier ou dossier de ce type
Ceci s’explique par le fait que la commande executable
n’est pas accessible en utilisant le chemin bin/executable
depuis ce nouvel emplacement de travail.
Par contre, ceci devrait fonctionner:
~/Documents$ ../bin/executable
Bonjour
/home/tstn1/DocumentsOu ceci:
$ /home/tstn1/bin/executable
Bonjour
/home/tstn1/DocumentsPour éviter d’avoir à saisir le chemin complet d’un exécutable, on
peut le placer dans un dossier du PATH:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesPour ajouter le dossier /home/tstn1/bin à la variable
d’environnement, on utilise la commande suivante qui ajoute
:/home/tstn1/bin à la suite du PATH (le
symbole : suivi du chemin /home/tstn1/bin)
:
$ export PATH=$PATH:/home/tstn1/binVérification:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/tstn1/binDésormais, on peut exécuter executable en utilisant son
nom simple:
$ executable
Bonjour
/home/tstn1/Documents