# Commande Debian

Le système de commande Debian est une interface en ligne de commande du système d'exploitation Debian, similaire à celui des distributions Linux et Unix. Il offre aussi bien aux débutants qu'aux experts des commandes similaires à MS-DOS, mais plus puissantes.
Par défaut les commandes Debian utilise BASH (le Bourne Again Shell). Dans sa forme la plus simple, l'utilisateur tape une commande après l'affichage par le système d'une invite de commande. Le système de l'ordinateur (en fait le programme qui accepte de telles entrées) exécute ensuite la commande donnée. Le résultat peut être une sortie texte, ou l'initialisation et l'exécution d'un programme, ou la modification de l'affichage graphique sur un écran ou une imprimante, ou un changement dans le système de fichiers (par exemple effacer un fichier, modifier un fichier ou créer un fichier).

## Commandes de base

* Tout comme dans le DOS, cd signifie Changer de répertoire. Taper cd .. permet d'aller au répertoire supérieur.
* pwd : Imprime sur l'écran de la ligne de commandes le répertoire de travail, c'est-à-dire le répertoire ou le dossier que vous êtes actuellement.
* ls : Imprime tous les fichiers dans le répertoire de travail.
* su - Entrez le mot de passe root: La commande SU donne à l'utilisateur la racine des privilèges.
* aptitude
* OR
* apt-get [package] : Appelle le Gestionnaire de paquets qui permet de télécharger des logiciels en paquets.
* nano [file] : Nano est un éditeur de texte de base qui fonctionne dans la Shell. Il vous permet d'éditer des documents avec les privilèges root si vous avez exécuté SU.
* rm [file] : Supprime le fichier spécifié.

## Commandes de gestion de fichier et dossier
### Manipulation de fichier et de dossier

* cp : copie de fichier
* dir : Affiche le contenu d'un répertoire
* file : Détermine le type du fichier
* gzip et gunzip : Compresse ou décompresse des fichiers
* ls : Affiche le contenu de répertoire
* mv : Déplace ou renomme des fichiers ou des dossiers
* mkdir : création de dossier
* popd : Restaure la valeur précédente du répertoire courant
* pushd : Sauve et change le répertoire courant
* pwd : Affiche le répertoire de travail (Print Working Directory)
* rcp : Effectue une copie entre deux ordinateurs
* rm : Supprime des fichiers
* rmdir : Supprime des dossiers
* rsh : Shell à distance
* rsync : Copie de fichier à distance en utilisant son propre protocole. Il peut être utilisé au travers de ssh ou de rsh.
* scp : Copie des fichiers entre deux machines au travers d'une connexion ssh
* sync : Synchronise les données entre le disque dur et la mémoire
* tar : Créateur d'archive (à l'origine pour cassette)
* ln : Créer un lien.
* split : Diviser un fichier.

### Trouver un fichier

* find : Cherche des fichiers qui correspondent à des critères choisie

#### Exemple

    find /usr -name lilo -print .......... Cherche tous les fichiers avec un nom lilo en /usr.
    find /home/toto -name *.jpg -print .. Cherche toutes les images .jpg.
* locate : Trouver des fichiers en utilisant une liste indexée

### Imprimer

* lpr : Imprimer des fichiers
* lprint : Imprimer des fichiers

### Visualisation des fichiers

* cat : Affiche ou concatène le contenu d'un ou plusieurs fichiers
* less : Affiche le contenu d'un fichier à l'écran et permet de le parcourir
* more : Affiche le contenu d'un fichier à l'écran et permet de le parcourir

### Manipulation des droits

* chgrp : Change le groupe qui possède un fichier donné
* chmod : Change les permissions d'accès
* chown : Change le propriétaire et le groupe auquel appartient un fichier

### Obtenir des informations du système

* du : Estimation de l'espace occupé par des fichiers
* file : Indique le type de chaque fichier sur la ligne de commande

### Édition de texte

Les éditeurs de textes en ligne de commandes sont très importants avec des systèmes d'exploitation de type unix qui se base sur des fichiers de configuration.

#### vim

Vim est un clone de Vi très puissant. C'est un éditeur de texte en mode console. Il en existe également des versions graphiques (par exemple, vim-gtk ou vim-gnome). Il utilise la coloration syntaxique.

##### ouvrir un fichier

    vim /chemin/de/votre/fichier
Vim n'est au premier abord pas simple a appréhender. pour éditer le fichier ~/fichier.txt il suffit de lancer vim en lui donnant en paramètre le nom du fichier vim ~/fichier.txt
Le contenu du fichier est affiché sur terminal il est possible de déplacer le curseur à l'intérieur avec les touches de flèches, mais il n'est pas possible de éditer du texte. En effet c'est le mode normal de VIM. Ce mode permet de faire la transition entre chaque mode ainsi que lancer quelques commandes.
Pour éditer du texte comme avec gedit, kate ou n'importe quel autre éditeurs. il suffit de passer en mode insertion. Il existe 4 méthodes principales pour faire cela.
* i : insertion du texte juste avant la position courante du curseur ;
* I : insertion du texte juste au début de la ligne courante ;
* a : insertion du texte juste après la position courante du curseur ;
* A : insertion du texte à la fin de la ligne courante.
Pour le mode insertion. Il est possible de modifier le texte à peu près comme dans un éditeur de texte graphique. Il ne manque que l'utilisation de la souris.
Pour enregistrer les modifications, il suffit de retourner au mode insertion avec la touche Esc (Echap), puis on tape :
* :w pour enregistrer
* :q pour quitter
ou plus rapidement :
* :wq pour enregistrer et quitter
plus rapidement encore :
* :x pour faire la même chose
* :q! quitter en ignorant les modifications

#### nano

Éditeur de fichier texte facile à apprendre et à utiliser
nano fichier : Lire, créer, éditer un fichier texte.
* Ctrl + g : Invoquer le menu d'aide.
* Ctrl + x : Quitter nano.
* Ctrl + o : Écrire le fichier sur le disque.
* Ctrl + r : Insérer un autre fichier dans le contexte actuel.
* Ctrl + w : Recherche d'une chaîne ou d'une expression rationnelle.
* Ctrl + y : Déplacez-vous à la page précédente.
* Ctrl + v : Passer à la page suivante.
* Ctrl + k : Couper la ligne courante vers le presse-papiers.
* Ctrl + u : Coller le presse-papiers à partir de la ligne courante.
* Ctrl + l : Rafraîchir (redessiner) l'écran courant.
* Ctrl + j : Justifier le paragraphe courant.
* Ctrl + m : Insérer un passage à la ligne à la position du curseur.
* Ctrl + _ : Aller à la ligne et à la colonne indiquées.
* Alt + g : Aller à la ligne et à la colonne indiquées.
* Alt + i : Indenter automatiquement.
* Alt + x : Mode aide (commutateur).
* Alt + p : Afficher les blancs (commutateur).
* Alt + m : Utiliser la souris (commutateur).
* Alt + b : Conserver des copies de sécurité (commutateur).
* Alt + s : Défilement progressif (commutateur).
* Alt + h : Touche « Début » intelligente (commutateur).
* Alt + y : Colorisation syntaxique (commutateur).
* Alt + p : Afficher les blancs (commutateur).

## Commandes de gestion des utilisateurs

* su - : Entrez la session en tant que root ou un autre utilisateur.
* su -l utilisateur : En tant que root, entrer comme autre utilisateur.
* passwd : Modifier votre mot de passe.
* who -a -H : Affiche des informations de la part des utilisateurs connectés.
* users : Affiche des informations de la part des utilisateurs connectés au système.
* id : Affiche l'information de l'utilisateur actuel.
* groups : Affiche les groupes auxquels ils appartiennent à un utilisateur.
* adduser utilisateur : Créer un nouvel utilisateur.
* adduser utilisateur groupe : Ajouter un utilisateur existant à un groupe existant.
* adduser --no-create-home utilisateur : Créer un utilisateur sans répertoire (home).
* addgroup groupe : Créer un nouveau groupe.
* deluser utilisateur : Supprimer un utilisateur.
* deluser utilisateur groupe : Supprime un utilisateur d'un groupe.
* deluser --remove-home utilisateur : Supprime un utilisateur et son répertoire (home).
* delgroup groupe : Supprime un groupe.
* usermod -l new_utilisateur : Changer le nom de l'utilisateur.
* usermod -d new_home -m utilisateur : Changer le répertoire (home) d'un utilisateur.
* groupmod -n new-name current-name : Changer le nom d'un groupe.

## Commandes d'administration système

Ce sont les commandes utiles à l'administration de Debian (gestion des paquets, gestion des services, gestion des processus, configuration du système, …).

### Système

* free -m -s 3 : Affiche l'utilisation de la mémoire toutes les 3 secondes.
* df -h : Taille, espace utilisé et l'espace disponible sur chaque partition de disque.
* netstat -napt : Savoir quels ports a ouverts notre système.

### service

* /etc/init.d/service stop : Arrêter un service/démon.
* /etc/init.d/service start : Démarrer un service/démon.
* /etc/init.d/sservice restart : Redémarrer un service/démon.

### Processus

* ps aux : Affiche des informations sur les processus en cours.
* top : Affiche des informations sur les processus en cours.
* htop : Est un moniteur système qui permet de filtrer les processus par consommation de mémoire et/ou processeur.
* pstree : Affiche les processus en arbre.
* pidof commande : Trouver l'ID d'un programme qui est en cours d'exécution.
* killall processus : Arrêter un processus.
* strace commande : Indique les appels de système générés par un processus.
* fuser -v fichier : Affiche les processus qui utilisent un fichier.
* lsof | less : Liste des fichiers ouverts par le processus.
Exemple :
* lsof -c commande : Liste des fichiers ouverts par un processus.
* lsof +D /home/paco : Énumère les processus qui utilisent mon répertoire.
* lsof -i :627 : Montre que processus est trouvé derrière le port 627.
* nohup commande & : Lancement d'un processus en arrière-plan et en continu.
* commande & : Exécuter une commande dans l'arrière-plan.
* jobs : Énumère les processus en second plan avec un nº de tâche.
* fg nº : Il passe à premier plan (foreground) un processus.
* nice -n priorité commande : Exécuter une commande avec une priorité (par défaut 0).
* renice priorité PID_processus : Il change la priorité d'un processus en marche.
* sleep 5 commande : 5 secondes de retard à l'exécution d'une commande.

### Log

Chaque démon garde généralement des traces de tout ce qu'il a fait ainsi que des erreurs qu'il a rencontrées  on les appelle logs (journaux de bord du système). Les logs sont stockés dans /var/log/ ou l'un de ses sous-répertoires.
* tail /var/log/syslog : Enregistrement des messages concernant la sécurité.
* tail /var/log/debug : Les informations pour le débogage des programmes.
* tail /var/log/messages : Messages système d'information.
* tail /var/log/user.log : Renseignements sur l'utilisateur.
* tail /var/log/auth.log : L'accès au système (y compris les tentatives infructueuses).
* last : Liste des utilisateurs connectés / déconnecté.
* lastb : Affiche les tentatives de connexion a échoué.

### APT

APT est l'abréviation de Advanced Package Tool (outil avancé pour les paquets). Ce que ce programme a d'avance , c'est la manière d'aborder la problématique des paquets. Il ne se contente pas de les évaluer un par un, mais les considère dans leur ensemble et réalise la meilleure combinaison possible de paquets en fonction de tout ce qui est disponible et compatible (au sens des dépendances).
Apt permet :
* d'installer des applications
* de supprimer des applications
* de garder ses applications à jour
* et encore bien d’autres choses…

### Gestion du réseau

* ping : envoie de paquet ICMP vers une destination sur le réseau
* traceroute : affiche les chemins emprunté par les paquets pour atteindre une destination
* trafshow : Affiche le trafic IP entrant/sortant d'un protocole
* bmon : Surveiller la bande passante et estimateur de taux

### Gestion de téléchargement

wget [options] URL : Gestionnaire de téléchargement.

#### liste des options

* -p : Télécharger le site.
* -r : Recursive.
* -k : Conversion des liens absolus.
* -c : Reprise du téléchargement d'un fichier partiellement téléchargé.
* -l6 : La profondeur de récursivité (par défaut 5)
* -A format : Format à télécharger.
* -nH : Ne pas créer le répertoire localhost.
* --cut-dirs=n : Élimine nombre de répertoires dans la hiérarchie.

## Commandes de script

Un script est une procédure de commande écrite en shell. La session d'un utilisateur peut être paramétrée par des scripts qui sont exécutés automatiquement en début de session. Le script de l’interpréteur de commandes (« shell script ») est un fichier texte dont le bit d’exécution est positionné et qui contient des commandes dans le format suivant :
   * !/bin/sh ... lignes de commandes
La première ligne indique l’interpréteur qui sera utilisé pour lire et exécuter le contenu de ce fichier.
La lecture des scripts de l’interpréteur de commandes est la meilleure manière de comprendre comment fonctionne un système de type UNIX.
Contrairement à l’interpréteur de commandes en mode interactif, les scripts de l’interpréteur de commandes utilisent souvent des paramètres, des conditions et des boucles.

## Commandes Divers
### Historique de commandes

* history : Affiche une liste de commandes utilisées par l'utilisateur.
* fc -l : Affiche une liste des dernières commandes exécutées.

### Référence en ligne de commandes

* man commande --------------------
* commande --help ------------------|→ Affichage des informations sur la commande.
* info commande --------------------
* help commande : Affiche des informations sur une commande interne shell.
* apropos [mot] : Rechercher dans les descriptions de man.
* apropos -e [mot] : Trouver le mot exact dans les descriptions de man.

### Date et heure

* cal -my : Affiche le calendrier.
* uptime : Depuis combien de temps le système a été lancé.
* date : Affiche la date et l'heure du système.
* date -u : Affiche la date et l'heure UTC.

### Autres

* clear : Nettoyer l'écran.
* reset : Rétablir la Console.
* pwd : Affiche le répertoire courant.
* uname -a : Kernel version.
* hostname : Affiche le nom du serveur.
* Ctrl+C : Fin d'un processus.
* Ctrl+Z : Suspend temporairement la mise en œuvre d'un programme.
* Ctrl+S : Arrêter le transfert de données à La console de gestion.
* Ctrl+Q : Resume, redémarrer le transfert de données.
* ./script : Exécuter un script shell.
* java -jar fichier.jar : Exécuter un programme Java.