Ligne de commande

Sommaire des commande utiles

# Se déplacer dans le repertoire dir/
cd dir

# Se déplacer dans le repertoire parent
cd ..

# Lister tous les fichiers et répertoire present dans le repertoire courant
ls

# Afficher le chemin complet du répertoire courant
pwd

Ligne de commande: principe et chemins

Une ligne de commande peut être vu comme un "explorateur de fichier" en mode textuel.
Désigner un fichier ou répertoire en ligne de commande se réalise par le biais d'un chemin (/path) désignant une suite de répertoires séparés par "/", et optionellement terminant par un fichier. ex.
cd dir1/dir2/
# est equivalent à
cd dir1
cd dir2

Chemin relatif, ou absolue

Par défaut, les chemins débutant par un nom de répertoire ou fichier sont relatif au répertoire courant.
Il est possible de désigner des chemins "absolus" en débuttant celui-ci par le symbole "/". L'utilisation d'un chemin absolu le rend alors indépendant du répertoire courant.
cd /dir1/dir2 # chemin relatif depuis la racine / -> dir1 -> dir2
pwd # indique /dir1/dir2 indépendamment du répertoire d'origine
"/" lorsqu'il n'est précédé de rien indique le chemin de la racine d'où partent tous les autres répertoires.
cd / # amène la ligne de commande sur le répertoire racine

Chemins particuliers

"/" Désigne le répertoire de la racine du système. Chemin absolu.
"." Désigne le répertoire courant.
".." Désigne le répertoire parent à celui actuel.
"~" Désigne le répertoire "home" de l'utilisateur courant.
Exemple:
cd dir1/dir2/ # va dans le répertoire relatif dir1, puis dir2
cd .. # revient dans le répertoire dir1
cd dir2 # va a nouveau dans dir2
Remarques:
cd ../../ # va dans le répertoire parent du parent
cd ../dir1/dir2/ # va dans le répertoire parent, puis dans dir1, puis dir2
cd /dir1/../dir2/ # identique à cd /dir2
cd ~/Download/myFile/examples/ # va dans home, puis Download/, puis myFile, puis examples

Autocompletion

Tapper des commandes et chemins long est source d'erreur. La ligne de commande dispose d'une autocomplétion des noms de fichiers à partir de la touche "Tabulation".
assets/tab.png
Lorsque vous commencez à entrer un nom de répertoire/fichier, appuyez sur "tabulation" au bout de quelques lettres
Example: Aller dans le répertoire: "dir1/myVeryLongDirName/"
# Commencez à écrire
cd dir1/myVeryL
# Tappez tab: autocomplete en cd dir1/myVeryLongDirName/
En général, la règle est la suivante:
Prenez l'habitude d'utiliser autant que possible l'autocomplétion de la ligne de commande, elle permet:

Lancement d'un executable

On appel "executable" un fichier qui se lance "en autonomie" sur l'OS. Les exécutables sont dépendant d'un système. Sous Windows ils ce sont des fichiers qui se terminent par l'extension .exe, et ils n'ont souvent pas d'extensions sous Linux/MacOS. Pour lancer un executable il faut le désigner par son chemin soit relatif, soit absolue:
# lance le fichier monExecutable depuis le répertoire courant
./monExecutable 

# lance le fichier monExecutable présent dans le répertoire dir1
dir1/monExecutable 

# lance l'executable depuis un chemin absolue.
/home/monNom/monExecutable 
rem. Pour lancer un executable dans le répertoire courant, il est nécessaire d'expliciter celui-ci par "./".
Par défaut, un programme lancé dans la ligne de commande va bloquer celle-ci jusqu'à ce qu'il termine.
# Le & permet de récupérer la main sur la ligne de commande pendant l'executable du programme
./monExecutableLong & 

Autres commandes

Créer un répertoire
mkdir pathDirectory
Suppression
# Supprimer un fichier
rm pathFile

# Supprime un répertoire et tout son contenu
rm -rf pathDirectory
Lister les fichiers du répertoire courant
# Liste les fichier standards
ls
# Liste également les fichiers cachés (commencant par un .) 
ls -a
Connaitre le répertoire courant
pwd
Copier
# Copier un fichier filename vers filenameCopy
cp filename filenameCopy

# ex. copier un fichier "filename" dans le répertoire dir/
cp filename dir/filenameCopy # filenameCopy est optionnel si le fichier garde le même nom

# copier un répertoire dir1 dans un autre dir2
cp -r dir1 dir2
Déplacer (ou renommer)
# Déplacer/renommer un fichier
mv filenameOrigin filenameDest

# Déplacer/renommer un répertoire
mv -r filenameOrigin filenameDest

Commandes plus avancées

Utiles pour regarder et analyser des fichiers depuis la ligne de commande

Genère un fichier vide (update sa dernière mises à jour)
touch filename
Lire un fichier
# Affiche sur la ligne de commande le contenu du fichier
cat filename 

# Regarde le contenu d'un fichier (ouvre une fenetre séparée, utile pour les fichiers long, appuis sur 'q' pour sortir)
less filename 

# Affiche le début du fichier
head filename
head filename -n N # affiche les N premières lignes

# Affiche la fin du fichier
tail filename
tail filename -n N # affiche les N dernières lignes
Trouver une ligne/syntaxe particulière
# Trouver "some lines" dans le fichier "filename"
grep "some lines" filename

# Trouver "some lines" dans n'importe quel fichier depuis le répertoire courant, et de manière réccursive.
grep "some lines" -R .

Utiles pour trouver un fichier depuis le répertoire courant

# Fichier nomé filename
find . -name "filename"

# Fichier se terminant par .jpg
find . -name "*.jpg"

# Fichier débutant par scene et se terminant par .hpp
find . -name "scene*.hpp"

Utiles pour terminer un programme bloquant:

Raccourcis claviers:
Connaitre les programmes exécutés encore en cours ainsi que leur identifiants (PID)
# Commandes lancés depuis cette ligne de commande
ps 

# Commandes lancés depuis toutes les lignes de commande
ps -aux
Terminer (kill) un programme en ayant connaissance de son PID
kill -9 PID
# permet par exemple de tuer un programme qui aurait été mis en mode "sleep" a posteriori