###### 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/