memo commandes shell bash

memo commandes shell bash

Tutoriel linux valant le détour :

tutoriel linux

Système de fichiers

Répertoire Description - contenu
/
/bin les programmes essentiels au système
/boot les images de noyaux Linux
/dev l’accès aux périphériques
/etc la configuration du système
/home les comptes utilisateurs
/home/user la racine du compte de l’utilisateur user (~)
/lib les bibliothèques essentielles au système
/proc les ressources matérielles détectées
/root la racine du compte de l’administrateur root
/sbin les exécutables essentiels réservés à l’administrateur
/usr les programmes installés par le système
/usr/bin les exécutables installés
/usr/include les fichiers d’en-tête installés
/usr/lib les bibliothèques installées
/usr/local les programmes installés manuellement (hors gestion de paquets)
/usr/sbin les exécutables réservés à l’administrateur installés
/usr/share la documentation installée
/var données fréquemment réécrites

Raccourcis Terminal

touche tab : pour l’auto-complétion des chemins

~/ : Répertoire Home/[user]/

| ctrl + z | | annuler |
| ctrl + c | | stopper |
| ctrl + u | | undo |
| ctrl + shift + c | | copier |
| ctrl + shift + v | | coller |
| ctrl + r | | rechercher commande dans l’historique |
| ctrl + a | | retour début de ligne |

Exécution non bloquante :
$ gedit hello.c &

Exécuter plusieurs commandes :
$ commande_1 && commande_2

Les données relatives au profil utilisateur pour l’utilisation des différents programme se retrouvent sous forme de fichiers cachés (précédés de ‘.’) dans ~/ ou ~/.config/ ; pour les faire apparaitre dans un explorateur de fichier : ctrl+H (hide).
L’effacement de ces fichiers peut réinitialiser un programme manifestant un comportement étonnant.


Commandes de base

memo.sh.zip

#! /bin/bash
#=======================================================================
#			COMMANDES DE BASE
#=======================================================================
man [commande]

pwd                     # Où suis-je ?

file [FICHIER]          # Infos sur un fichier

ls                      # liste du répertoire courant
ls -al                  # liste + détailes+ fichiers cachés

cp [SOURCE] [DEST]      # Copier-Coller Fichier
cp -r [SOURCE] [DEST]   # Copier-Coller récursif (dossiers)
cp -u [SOURCE] [DEST]   # update : copie si fichier plus récent
cp -arv [SOURCE] [DEST] # copie récursive all (avec infos fichiers date, user)
                        # -v : verbose

cd [répertoire]         # Change Directory 
cd ..                   # Retour
cd /                    # Racine

mkdir [rep]             # Make Directory (créer répertoire)

mv	[SOURCE] [DEST]     # Rename / Couper-Coller

ln -s [SOURCE] [NON LIEN] # link --> Création d'un raccourcis

cat [FICHIER]                           # afficher fichier dans console
cat [FICHIER_1][FICHIER_2] > [DEST]     # Concaténation de fichiers 

chmod +x [FICHIER]          # Rendre exécutable un fichier
chmod 777 [FICHIER/DOSSIER] # UGO (User/Group/Others) rwxrwxrwx (read/write/exec)

# Exécution Programme
chmod +x [PROG]             # Rendre exécutable
./[PROG]                    # Exécution Programme Binaire

bash [PROG].sh              # Exécution Shell

nano [FICHIER]              # Editeur de texte dans le terminal

#=======================================================================
#			RECHERCHE D'UN FICHIER / PATTERN DANS UN FICHIER
#=======================================================================
find ./[REPERTOIRE RACINE DE RECHERCHE] -name [FICHIER_RECHERCHE] -print

# sans warnings :
find ./[REPERTOIRE RACINE DE RECHERCHE] -name [FICHIER_RECHERCHE] -print 2> /dev/null

grep "phrase dans un fichier" [fichier] # mot/phrase dans un fichier

# grep récursif dans des dossiers/sous-dossiers :
grep -r "mot/phrase dans un fichier" ./	

# Remplacement d'un pattern dans des fichiers :
grep -rl oldtext . | xargs sed -i 's/oldtext/newtext/g'

#=======================================================================
#			GESTION DES PAQUETS UBUNTU
#=======================================================================
nano /etc/apt/source.list               # Liste des paquetages
apt-get update && apt-get upgrade       # mise à jour paquetages
apt-get install [PACKAGE]
apt-get remove [PACKAGE]

#=======================================================================
#			COMPRESSION / DECOMPRESSION
#=======================================================================
# ZIP
zip -r [NOM].zip [A_COMPRESSER]                 # Compression
unzip [A_DECOMPRESSER] -d [REPERTOIRE_DEST]     # Extraction

# TAR
tar -cvf [NOM].tar [REP_A_ARCHIVER] # Archivage

tar -czvf [NOM].tar.gz  [REP_A_COMPRESSER]  # tar -cv MonRepertoire | gzip > archive.tar.gz
tar -cjvf [NOM].tar.bz2 [REP_A_COMPRESSER]  # tar -cv MonRepertoire | bzip2 > archive.tar.bz2

tar -xvf [archive].tar              # Extraction

tar -xvzf [REP_COMP].tar.gz         # Extraction
tar -xvjf [REP_COMP].tar.bz2 
#=======================================================================
#			VARIABLES D'ENVIRONNEMENT
#=======================================================================
printenv                                    # liste des variables d'evironnement
echo $PATH                                  # Affichage variable PATH
export PATH=$PATH:/home/user/mes_prog       # Ajouter un répertoire à PATH

nano /etc/environment                       # Redéfinition des variables d'environnement

#=======================================================================
#	                   GESTION DES PROCESSUS
#=======================================================================
# Liste des Processus
top                         # equivalent ctrl+alt+suppr sous windows
ps -el

# Stop processus
kill -9 [N°PROC]            # Kill forcé
pkill [NOM_PROCESSUS]
#=======================================================================
#	                   MONTER UNE CLE / DISQUE
#=======================================================================
sudo fdisk -l					 
#ou
lsblk                           # Quel /dev/sd[xi] correspond à la clé ?

mkdir /mnt/[REP]                # Création répertoire de montage
mount /dev/sd[xi] /mnt/[REP]    # Montage

umount /dev/sd[xi]              # Démontage
#ou
umount /mnt/[REP]

#=======================================================================
#	                   FORMATAGE CLE USB
#=======================================================================
# !! Ne pas aller trop vite !!

sudo fdisk -l               # Quel /dev/sd[xi] correspond à la clé ?
umount /media/votre_disque  # Démontage si déjà monté
ls -l /dev/disk/by-id/*usb*

sudo mkfs.vfat /dev/sd[xi]  # Formatage !!! Bien Vérifier le N° de partition

#=======================================================================
#	                   CREER LIVE USB SOUS LINUX
#=======================================================================
lsblk		# quel device ?
umount /dev/sd[x]
sudo dd bs=4M if=[nom].iso of=/dev/sd[1 lettre]
sync
#=======================================================================
#	                   GESTION MULTIECRAN
#=======================================================================
# Essayer dans un premier temps avec touche windows + P (Affichage)
# en cas de problème, se tourner vers le terminal :

xrandr                                          # repérer noms sortie (screen)	
xrandr -s 1600x900                              # Changer la Résolution
xrandr --output [SCREEN_2] --mode 1024x768      # changer résol NOM_SORTIE	
xrandr --output [SCREEN_2] --mode 1024x768 --same-as [SCREEN]   # Ecrans Miroir

#=======================================================================
#	                    RESEAU
#=======================================================================

# ANCIENNE VERSION
ifconfig                        # Affichage adresses IP
ifconfig eth0 192.168.0.1       # Forçage adresse IP pour eth0
ping 192.168.0.2
ping www.google.com             # Test liaison
route -n                        # affichage du routage

# NOUVELLE VERSION ( IP COMMAND )
ip a
ip a show eth0
ip a add 192.168.0.1/255.255.255.0 dev eth0
ip r                           # table de routage


# CONFIGURATION DU PROXY
export http_proxy=http://[NOM_UTILISATEUR]:[PASSWORD]@proxy.enib.fr:3128

# REINITIALISATION 
unset http_proxy

# CONNECTION SSH
ssh pi@192.168.1.12           # cf ~/.ssh/known_hosts

# COPIE SECURISEE Host --> Cible
scp [FICHIER] pi@192.168.1.12:/home/pi/

#=======================================================================
#	                   SERVEUR WEB LIGHTTPD
#=======================================================================
sudo apt-get install gamin lighttpd
nano /etc/lighttpd/lighttpd.conf
# server.document-root        = "/var/www"
# Placer les .html à afficher dans /var/www
lighttpd  -f /etc/lighttpd/lighttpd.conf

#=======================================================================
#	                   OPERATION SUR DES IMAGES (ImageMagick)
#=======================================================================
# Rotation
convert -rotate 90 image_initiale.jpg image_rotation.jpg
convert image_initiale.jpg -resize 50% image.jpg
# Plusieurs images :
mogrify -resize 800x600 *.jpg

#=======================================================================
#	        OPERATION SUR DES FICHIERS AUDIO ( soundconverter)
#=======================================================================
# ex : .wma --> .mp3
soundconverter -b -m audio/mpeg -s .mp3 "file_to_convert.wma"
# convertir des mp4 en mp3 dans un dossier avec ffmpeg :
find . -type f -iname "*.mp4" -exec bash -c 'FILE="$1"; ffmpeg -i "${FILE}" -vn -ab 128k -ar 44100 -y "${FILE%.mpr}.mp3";' _ '{}' \;

#=======================================================================
#	        DIAGNOSTIQUES
#=======================================================================
# mémoire ram
free -h

 # Espace disque disponible ( disk free )
 df -h
 
 # taille des répertoires ( disk usage )
 du -h [Repertoire]
 du -sk [PATH_TO_FOLDER]/* 2>/dev/null | sort -k1n


#=======================================================================
#	       VERSIONS
#=======================================================================
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.2 LTS
Release:	18.04
Codename:	bionic

$ uname -a
Linux kerhoas-dell 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

#=======================================================================




Editeur de Texte NANO

memo_nano.sh.zip

#===============================================================
#                       FICHIER
#===============================================================
CTRL + o : write Out ( save )
CTRL + x : eXit

#===============================================================
#                     NAVIGATION
#===============================================================
CTRL + v : Next Page
CTRL + y : Previous page
CTRL + a : line beginning
CTRL + e : line End

#===============================================================
#                    COPIER COLLER
#===============================================================
CTRL + SHIFT + 6 : Set Mark
ALT + SHIFT + 6 : Copy
CTRL + k : cut
CTRL + u : paste

#===============================================================
#                 RECHERCHER / REMPLACER
#===============================================================
CTRL + w : Where is ?
ALT + w : Where is ( next instance ) ?
ALT + r : search and Replace

#===============================================================