# Le système d'exploitation GNU-Linux/Commandes de base

* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
[ Modifier le sommaire ]

## Éléments de syntaxe

Les commandes présentées dans les sections qui suivent sont introduites juste après un message d'invite qui dépend de la configuration du shell utilisé. Celui-ci est représenté par un signe dollar $. Il ne doit donc pas être tapé.
Le caractère dièse # marque le début d'un commentaire qui se termine en fin de ligne. Il n'est pas nécessaire de le recopier pour exécuter la commande.
Exemple :
Pour tester cette commande, il suffit d'entrer p w d ↵.
Les lignes qui ne sont pas marquées du signe dollar indiquent ce que la commande précédente doit/peut afficher.
Par ailleurs, il existe deux opérateurs de concaténation des commandes :
* ";" : qui enchaine les commandes quelques soient leurs résultats. Exemple : pwd ; pwd.
* "&" : qui stoppe l'enchainement si une commande renvoie une erreur. Exemple : pwd & pwd. De plus, si aucune commande ne figure après le "&", le terminal redonne le focus avant la fin de la première commande, de sorte que l'on peut en taper d'autres si elle est longue (en asynchrone).
** "&&" : idem sans les informations sur les processus.

## pwd (print working directory)

Affiche le répertoire courant.

## id

Affiche les informations relatives à l'utilisateur connecté.

## passwd

Permet de changer son mot de passe
Ne pas utiliser le symbole euros (€) dans les mots de passe, car il est potentiellement mal géré par Linux et pourrait se voir systématiquement refusé.

## cd (change directory)

Pour se placer dans un répertoire
Connecté en root, la commande cd m'amène au répertoire /root qui est le répertoire de travail de l'utilisateur root.
Connecté avec l'utilisateur alex, cd m'amène au répertoire de travail de l'utilisateur alex, à savoir /home/alex.

## ls (list sorting)

Liste les fichiers d'un répertoire
On peut combiner plusieurs options, l'ordre n'est pas important. Les quatre commandes suivantes sont identiques :
Lister de façon détaillée (-l) tous les fichiers, même cachés (-a), les plus récents (-t) en derniers (-r), avec leur taille en kilo-octets (-k) lisible facilement avec les unités K pour Kilo, M pour Mega, G pour Giga(-h).
Pour ne lister que les sous-dossiers :
Pour compter les éléments de la liste :

## cat (concatenate)

Affiche le contenu d'un fichier ou de plusieurs fichiers concaténés sur la sortie standard (l'écran)
Pour que les modifications de fichiers s'ajoutent en temps réel sur la sortie standard, utiliser :

## mkdir (make directory)

Permet de créer un répertoire
Exercice : je suis dans le répertoire /var/log, je souhaite créer un répertoire rep2 dans le répertoire /home/alex, comment faire ?
J'ai trois possibilités :
l'option -p permet de créer le(s) répertoire(s) parent(s).

## rmdir (remove directory)

Supprimer un répertoire vide

## cp (copy)

Copier un fichier
Attention, si le fichier destination existe déjà, il sera remplacé sans demande de confirmation !
Options courantes :

### Copier un dossier (avec son contenu)
## rm (remove)

Effacer un fichier
Attention, le fichier est effacé et sans demander confirmation !
Options courantes :

### Exemples

* Pour supprimer le répertoire "tmp" et son contenu :
* Pour supprimer les fichiers de log de plus de deux jours :

## mv (move)

Déplacer ou renommer des fichiers
Par précaution, on utilise l'option -i qui permet d'être averti par le système avant l'écrasement du fichier destination si celui-ci existe.
Si le dossier n'est pas vide, utiliser "-f" pour forcer l'écrasement.
Pour inclure les fichiers cachés dans les déplacements *, exécuter avant shopt -s dotglob.

## ln (link)

La commande ln permet de créer des liens, c'est à dire des raccourcis vers des fichiers ou des répertoires.
Exemple
Cette commande crée le lien suivant :

## find : recherche par nom de fichier

Par exemple pour trouver tous les fichiers .log dans le dossier courant récursivement :

## grep : recherche par contenu de fichier

Par exemple pour trouver tous les fichiers qui contiennent "mon texte" dans le dossier courant récursivement :
En regex en ignorant la casse :

## clear et reset

* clear masque les données affichées en console, et on peut les retrouver en remontant l'ascenseur.
* reset efface complètement les données affichées en console.