On utilise la commande ls
:
ls
Seul 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.txt
mkdir chemin/vers/dossier
Si le dossier chemin
n’existe pas:
mkdir -p chemin/vers/dossier/et/ses/sous/dossiers
mkdir dossier/vide
rmdir dossier/vide
touch chemimn/vers/dossier/un_fichier
rm -r chemin/vers/dossier
On utilise la commande cat
pour afficher le contenu d’un
fichier texte :
cat .bash_history
Tous 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.bak
Cette 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 Backup
Dé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 DossierArchives
Cette commande permet de créer ou de modifier la date de dernière modification d’un fichier à la date actuelle:
touch fichierVide
On utilise la commande rm
:
rm fichierVide
Utilisation de rmdir
rmdir dossierVide
C’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 dossierNonVide
Cette 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 rm
Une 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=bonjour
La 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:
. ~/.bashrc
La 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/bin
Par 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 ls
PATH
Chaque 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, stripped
Cette même commande montre que le fichier .bashrc
est un
simple fichier texte:
$ file .bashrc
.bashrc: ASCII text
Ceci 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 executable
Pour 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 bin
Puis on y crée un fichier :
$ touch bin/executable
$ nano bin/executable
$ cat bin/executable
echo Bonjour
ls
pwd
Si 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/executable
Dont 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/tstn1
Cependant 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/Documents
Ou ceci:
$ /home/tstn1/bin/executable
Bonjour
/home/tstn1/Documents
Pour é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/games
Pour 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/bin
Vérification:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/tstn1/bin
Désormais, on peut exécuter executable
en utilisant son
nom simple:
$ executable
Bonjour
/home/tstn1/Documents