---
# System prepended metadata

title: Commande importante Linux
tags: [Sys.management]

---

###### tags: `Sys.management`

# Commande importante Linux
https://www.raspberrypi.com/documentation/computers/using_linux.html

## commande **sudo** (**S**uper**U**ser **DO**)
permet d'avoir plus d'accès tel que des permissions administrative ou de racine

## --help (pour voir les possibilités de commande)
exemples:

    ls --help
    car --help
    
## hostname
## ifconfig

## pwd 
trouver le chemin du dossier actuel ( celui dans lequel on se trouve) renvoi le chemin total commancant par / ;
    ex: **/home/username**
    
## cd (change direction)

pour naviguer à travers les fichiers/dossiers linux
    en mettant le chemin direct ou le nom du dossier 
    
*   **cd ..** pour remonter d'un fichier
*   **cd** pour droit au fichier principal ( home folder)
*   **cd -** pour aller au fichier précédant
*    **cd /** pour aller au au root directment
    
## ls 

pour voir le contenu d'un répertoire. 
    Par défaut ça montrera le contenu du fichier/dossier/répertoire actuel 
    si on veut voir le contenu d'un autre fichier;:
    **ls/home/username/Documents** pour pouvoir le contenu de **Documents** p.ex
    

    
*    **ls -R** listera aussi tous les fichiers dans les sous-répertoires
*    **ls -a** affiche les fichiers cachés
*    **ls -al** liste les fichiers et les répertoires avec des
        taille, le propriétaire, etc.
*  **ls -l** liste les fichiers en long format
*  **ls -lisah** liste les fichiers en très long format
        
## cat (concatenate)

Elle est utilisée pour lister le contenu d'un fichier sur la sortie standard (sdout). Pour exécuter cette commande, tapez **cat** suivi du nom du fichier et de son extension. Par exemple : **cat fichier.txt.**

Voici d'autres façons d'utiliser la commande cat :

*    **cat > nomfichier** crée un nouveau fichier
*    **cat nom_fichier1 nom_fichier2>nom_fichier3** joint deux  fichiers (1 et 2) et stocke leur sortie dans un nouveau fichier (3)
*  pour convertir un fichier en majuscules ou en minuscules, utilisez **cat nomfichier | tr a-z A-Z>sortie.txt**

### other tips

Pour avoir des informations sur le cpu on peut faire cette commande:

    cat /proc/cpuinfo

## Autre commande pour View (comme cat)

    more Test  (view file content pagewise)
    less Test  (View file content scrollable)
    head Test  (View first lines)
    tail Test  (View last lines)
    tail -f Test  (View last lines continous)
    
## cp

Utilisez la commande **cp** pour copier des fichiers du répertoire actuel vers un autre répertoire. Par exemple, la commande **cp scenery.jpg /home/username/Pictures** créera une copie de **scenery.jpg** (de votre répertoire actuel) dans le répertoire **Pictures**.

## mv (move)

L'utilisation principale de la commande **mv** est de déplacer des fichiers, bien qu'elle puisse également être utilisée pour renommer des fichiers.

Les arguments de mv sont similaires à ceux de la commande cp. Vous devez taper mv, le nom du fichier et le répertoire de destination. Par exemple : **mv fichier.txt /home/nomd'utilisateur/Documents.**

Pour renommer des fichiers, la commande Linux est **mv oldname.ext newname.ext**

## rm
Le fichier sera supprimé
exemple:

    rm Test
    
## mkdir (**m**a**k**e **dir**ectory)
créer un nouveau dossier
exemple:

    mkdir Test
    
ou bien créer un fichier dans un fichier:
        
        mkdir Music/Newfile
        
avec **-p** créer un fichier entre deux fichiers:

    mkdir -p Music/2020/Newfile
    
## rmdir  (**r**e**m**ove **dir**ectory)
Supprimer un dossier **vide**

    rmdir Test

## faire modif à travers les dossier avec **rm**

exemple: supprimer un ficher Tt dans le dossier Test qui est dans le current dossier

    rm ./Test/Tt 
    
Si c'est seulement supprimer le répertoire - comme alternative à rmdir, utilisez: **rm -r** .
    
## commande **touch**, pour créer un fichier

La commande touch permet de créer un nouveau fichier vierge par le biais de la ligne de commande Linux. Par exemple, entrez **touch /home/username/Documents/Web.html** pour créer un fichier HTML intitulé Web sous le répertoire Documents.
    
    
## commande **locate** pour trouver un fichier

 utiliser cette commande pour localiser un fichier.
 l'utilisation de l'argument -i avec cette commande la rendra insensible à la casse, de sorte que vous pouvez rechercher un fichier même si vous ne vous souvenez pas de son nom exact.

p.ex: 
        
    rechercher un fichier contenant deux mots ou plus, utilisez un astérisque (*). Par exemple, la commande locate -i school*note recherchera tout fichier contenant les mots "school" et "note", qu'ils soient en majuscules ou en minuscules.

 
## éditer un fichier
fichier Text:

    nano Test  (créer et éditer un fichier Test)
    
### autre possibilités

    vi   
    emacs
    gedit
    mc
    
## find 
Recherche dans une hiérarchie de fichiers donnée, spécifiée par le chemin d'accès,
en trouvant les fichiers qui correspondent aux critères donnés par l'expression

    find -name "*.c"
    
    
Comme la commande locate, find permet de rechercher des fichiers et des répertoires. La différence est que vous utilisez la commande find pour localiser des fichiers dans un répertoire donné.

Par exemple, la commande find /home/ -name notes.txt recherchera un fichier appelé notes.txt dans le répertoire home et ses sous-répertoires.

Il existe d'autres variantes de la commande find :

* Pour trouver des fichiers dans le répertoire actuel, utilisez la commande find . -nom notes.txt
* Pour rechercher des répertoires, utilisez / -type d -name notes.txt.
    
## grep
Recherche dans les fichiers un ou plusieurs arguments de motif.
Il effectue la recherche de chaînes de caractères simples, d'expressions régulières de base et d'expressions régulières étendues.
expression régulière étendue

    grep "text" * -r
    
    
## commande df

pour avoir un rapport de l'espace du disque montré en % et en KBs. Si on veut en MB alors : **df -m**

## commande **du** (**D**isk **U**sage)

pour voir combien de mémoire prend un fichier. si on veut voir en bytes, KB, et MB alors: **du -h**

## commande head

pour voir les premières lignes de fichiers textes( par defaut les 10 premières lignes) si on veut voir que les 5 premières lignes p.ex alors:

    head -n 5 filename.ext.

## tail

pour voir les derinères lignes de fichiers textes

    tail -n filename.ext.
    
## diff commande

pour comparer deux fichiers ligne par ligne

    diff file1.ext file2.ext

## tar commande
pour archiver un/des fichier/s (similaire a zip sur windows)

    
## who
Liste des personnes actuellement connectées au système

## whoami
Signaler l'utilisateur sous lequel vous êtes connecté

## ps
Listez vos processus sur le système


## ps -aux
Liste de tous les processus du système

## echo
Écho d'une chaîne (ou d'une liste d'arguments) au terminal

 echo "A string to be echoed"
 
## chmod (droit d'accès)
autorisation d'accès

    chmod 744 Test
    
* 4 stands for "read",
* 2 stands for "write",
* 1 stands for "execute", and
* 0 stands for "no permission."
So 7 is the combination of permissions 4+2+1 (read, write, and execute), 5 is 4+0+1 (read, no write, and execute), and 4 is 4+0+0 (read, no write, and no execute).

## chown
changer ou transferer le propriétaire d'un fichier : 
**chown linuxuser2 file.ext** fera que **linuxuser2** sera propriétaire du fichier **file.ext**
 
## créer un nouvel utilisateur

    adduser
    sudo adduser hftuser
    ls -l ( pour voir les dossiers)
    
pour se connecter à un utilisateur:

    su visitor 
    exit
 ## pour voir l'état, démarrer ou arrêter un programe
 
- sudo systemctl start 
- sudo systemctl restart (après avoir modifier qqch)
- sudo systemctl stop 
- sudo systemctl status 
 
 ## **ln** (**L**i**n**k)
 ln est un utilitaire de ligne de commande permettant de créer des liens entre les fichiers. Par défaut, la commande ln crée des liens physiques. Pour créer un lien symbolique, utilisez l'option -s (--symbolic).

La syntaxe de la commande **ln** pour créer des liens symboliques est la suivante : 

    ln -s [OPTIONS] FILE LINK

* Si les deux options **FILE** et **LINK** sont données, ln créera un lien du fichier spécifié comme premier argument (**FILE**) vers le fichier spécifié comme second argument (**LINK**).
* Si un seul fichier est donné en argument ou si le second argument est un point (**.**), ln créera un lien vers ce fichier dans le répertoire de travail actuel. Le nom du lien symbolique sera le même que le nom du fichier vers lequel il pointe.

Par défaut, en cas de succès, **ln** ne produit aucune sortie et renvoie zéro.
##### Création d'un lien symbolique vers un fichier
Pour créer un lien symbolique vers un fichier donné, ouvrez votre terminal et tapez : 

    ln -s fichier_source lien_symbolique

Remplacez **fichier_source** par le nom du fichier existant pour lequel vous souhaitez créer un lien symbolique et **lien_symbolique** par le nom du lien symbolique.

Le paramètre **lien_symbolique** est facultatif. Si vous ne spécifiez pas le lien symbolique, la commande **ln** créera un nouveau lien dans votre répertoire actuel :

Dans l'exemple suivant, nous créons un lien symbolique nommé **mon_lien.txt** vers un fichier nommé **mon_fichier.txt** :

    ln -s mon_fichier.txt mon_lien.txt

(
    Pour vérifier que le lien symbolique a été créé avec         succès, utilisez la commande ls :

    ls -l mon_lien.txt
    
La sortie ressemblera à ceci :
    
    lrwxrwxrwx 1 linuxize users 4 Nov 2 23:03 mon_lien.txt -> mon_fichier.txt
)
## exercice des commandes:
### exercice 1
    
    cd /home
    tree
    cd /home/pi
    mkdir sport
    cd sport
    mkdir volley ski athletics tennis volley
    cd volley 
    touch volleyplan skiplan
    nano volleyplan 
    nano skiplan
    mv ./skiplan ../ski/skiplan
    cp ./volley/volleyplan ./athletics/athleticsplan
    cp ./volley/volleyplan ./tennis/tennisplan
    tree
    df
    ps
    kill 941
    ps
    sudo adduser visitor
    su visitor
    chmod 777 /home/pi
    ln -s /home/pi/sport/tennis/tennisplan linktennis
    rm tennisplan

 
    
### exercice 2 shell linux / fichier script

    ls /usr/bin | file *.ziprm 
    sudo dnf install vlc
    cvlc v4l2:///dev/video0
    
    nano hello 
    #!/bin/bash
    read user
    if [ "$user" = "pi" ]; then
    echo "hi Mr. Gerber your last login was:"
    last pi | head -n2 | tail -n1
    else
    echo "hello $USER"
    fi
    

    read a
    read b
    read sign

    if [ "$sign" = "+" ]; then
    echo $[$a+$b]
    fi

    if [ "$sign" = "-" ]; then
    echo $[$a-$b]
    fi

    if [ "$sign" = "*" ]; then
    echo $[$a*$b]
    fi

    if [ "$sign" = "/" ]; then
    echo $[$a/$b]
    fi

    #!/bin/bash
    for ((i=10; i>0;i--)) do
       echo "$i"
    done

    #!/bin/bash
    echo "nbr ?"
    read nbrStudent
    echo "Number of Student: $nbrStudent">>file.txt
    for ((i=1; i<nbrStudent+1;i++)) do
       echo "Name student $i:"
       read name
       echo "Student $i: $name">>file.txt
    done


### exécuter un fichier

       ./hello (il execute le fichier)[]
       
       
 
## répertoire important

* /bin/ : Contient toutes les commandes de base nécessaires au démarrage et à l’utilisation d’un système minimaliste (par exemple : cat, ls, cp, sh).
* /sbin  : Contient les commandes systèmes réservées aux administrateurs.
* /boot : Contient les fichiers nécessaires au démarrage du système d’exploitation.
* /dev   : Contient des fichiers correspondants à un périphériques (disques , disquettes …).
* /etc   :  Contient la plupart des fichiers de configuration du système.
* /home/ : Utilisé pour stocker les répertoires utilisateurs (exemple : /home/user1).
* /opt   : Utilisé comme emplacement d’installation d’un logiciel utilisé.
* /tmp/ : Utilisé pour stocker les fichiers temporaires tout comme /var/tmp et /run/tmp et généralement vidé à chaque démarrage.

## site assez bien expliquer

https://www.sitedetout.com/commandes-linux-de-base/
