Bienvenue sur mon petit mémo des bases d’Unix !
VIVE LINUX ❤️
Les extensions sont une saloperie Windowsienne !
Les scripts se lancent dans un shell séparer, ils n’ont donc pas accès au différentes variables ou fonction ajouté dans notre shell actuel.
Si on veut garder des informations entre deux scripts, il faut les stocker séparément, dans un fichier, base de données, etc.
Le signe # indique que la ligne est un commentaire
Si jamais vous voulez connaître le fonctionnement d’une commande,
vous pouvez utiliser man.
Par exemple pour ouvrir le manuel de ls :
man lsAfficher les fichiers actuels :
lsAfficher les fichers actuels avec leurs droits dans une liste :
ls -alSe rendre dans un dossier :
cd nom_du_dossierAfficher l’emplacement actuel :
pwdSupprimer un fichier :
rm nom_du_fichierPour bouger un fichier/dossier (On peut également renommer un fichier/dossier) :
mv /chemin/vers/lemplacement/dorigine/fichier /chemin/vers/le/nouvel/emplacement/fichierPour copier un fichier :
cp fichier1 fichier2Pour copier 1 ou plusieurs fichier dans un dossier :
cp fichier1 fichier2 fichier3 dossierPour copier un dossier :
cp -r dossier1 dossier2* permet de remplacer par ce que l’on veut.
Par exemple, nous avons 4 fichiers :
ls fichier*On va récupérer
4fichier ne sera pas afficher car il commence par 4 et
nous chercher des fichiers qui comment par fichier.
? permet de remplacer une lettre :
Par exemple, nous avons 4 fichiers :
ls fichier?_*On va récupérer seulement :
[a-h] va récupérer toute les lettres entre a et h.
Par exemple, nous avons 4 fichiers :
ls [a-h]*On va récupérer seulement :
! permet de faire l’inverse d’une opération.
Création :
mkdir nom_du_dossierCréation de plusieurs dossiers à la fois (si le dossier existe déjà ça ne fait rien) :
mkdir -p nom_du_dossier_1/nom_du_dossier_2Suppresion :
rm -r nom_du_dossier
# ou
rmdir nom_du_dossierATTENTION: rm -r va supprimer récursivement,
donc le dossier et son contenu
Pour créer un fichier vide :
touch nom_du_fichier
# Ou
cat </dev/null > nom_du_fichierPour entrer du texte dans le fichier directement depuis le shell
En EN ÉCRASANT LE CONTENU DU FICHIER :
echo "test" > nom_du_fichierEn ajoutant à la fin :
echo "test 2" >> nom_du_fichierOn peut afficher le contenu d’un fichier :
cat nom_du_fichierOn peut également l’ouvrir avec un éditeur de texte :
nano nom_du_fichierDeux éditeurs de textes sont généralement installé sur les différentes distributions Linux, nano et vi.
Généralement nano est le plus simple à prendre en
main.
On peut simplement les voir en faisant ls -al. C’est le
premier caractère avant les droits. J’explique cela plus en détail après
si jamais.
- Fichierd Dossierl Lien symboliquec Fichier utilisé par le système (caractère)b Périphérique en mode bloc (Disque dur par
exemple)s Socket Unix (permet à deux applications de
communiquer simplement)p Pipe (permet de récupérer des info d’un processus à
un autre)m Mémoire partagéeOn peut créer des alias dans Bash.
Pour faire cela on peut ajouter l’alias dans la session actuelle :
alias salut="ls"On peut également l’ajouter dans le fichier .bashrc qui
se trouve à la racine du home :
nano ~/.bashrcPour l’ajouter directement à la fin du fichier :
echo 'alias salut="ls"' >> ~/.bashrcOn peut charger les changements en rechargeant le fichier bashrc :
source ~/.bashrc$1, $2, etc pour récup une variable
jusqu’à 9$* pour toutes les avoir$# pour avoir le nombre de d’argument$@ pour récup des variables dans une bouclesExemple :
# On boucle pour afficher tous les arguments
for i in $#
do
echo "$@"
doneshift prend les arguments et les décales vers la gauche
Si on colle les double quotes on faite un unique mot :
test="jean"
echo "$test""$test""$test"Echo permet uniquement de sortir des lignes classique, pour afficher de meilleurs sorties, on peut utiliser printf.
for :
for i in $var
do
echo "$i"
donewhile (ATTENTION: ici c’est une boucle infinie):
while [1 != 2]; do
echo "1"
donecase "$a" in
a) var=b;;
b) var=c;;
c) var=d;;
*)
esac*) représente la case par défaut, si aucun autre cas
n’est valide.
if [ $a != a ]; then
echo "$a";
fiATTENTION : Les fonctions ne peuvent pas être vide
Version pour les soixantenaire, moi j’aime bien :
name_of_func() {
echo "Hello World"
}Ou version plus “moderne” :
function name_of_func {
echo "Hello World"
}On peut envoyer des arguments en les ajoutant après l’appel de la fonction :
name_of_func "arg1" "arg2" "$var_arg3"Pour inclure une fonction d’une autre fichier, pour cela il faut lancer un script dans un shell ou ces fonctions on déjà été importé.
On peut lancer un script dans un shell existant avec :
. ./script.shOn peut donc ensuite appeler toutes les fonctions présentes dans le script.
ATTENTION: Ce n’est pas vraiment une bonne pratique, à ne faire qu’uniquement en cas de strict nécessité
Pour avoir les différents processus qui tourne :
ps -auxOn peut aussi utiliser :
topSi jamais un processus pose problème on peu le “tuer” avec la commande kill ainsi que son id, trouvable avec soit ps ou top :
kill 12345Plusieurs niveau de kill, existe. De base, kill envoie un SIGTERM, c’est-à-dire un 15. Dans le cas où le processus ne veut vraiment pas se fermer, on peut envoyer un SIGKILL, c’est-à-dire un 9.
kill -9 12345Les droits Unix sont diviser en 3.
On peut voir les différents droits avec ls -al

L’utilisateur est le créateur du fichier.
Les droits fonctionnent avec trois lettres :
r : read (permet de lire le contenu du fichier)w : write (permet d’écrire dans le fichier)x : execute (permet d’exécuter le fichier, telle une
application)On peut également donner ces droits avec des octales (base 8)
Posséder tous les droits : rwx ou 7
Si tout le monde possède tous les droits (utilisateur, groupe,
everyone) : rwxrwxrwx ou 777.
ATTENTION: il ne faut jamais attribuer tous les droits, c’est un
risque de sécurité majeure !
On peut changer ces droits avec la commande chmod.
Pour ajouter les droits d’exécution pour le propriétaire sur le
fichier fichier :
chmod u+x fichierEn octale on peut par exemple donner tous les droits au propriétaire et aucun au groupe et à tous le monde :
chmod 700 fichierOn peut également modifier le propriétaire et le groupe d’un fichier
avec chown :
chown nv_user:nv_grp fichierMaintenant le fichier appartient à l’utilisateur nv_user
et au groupe nv_grp.
On peut également changer les droits des dossiers, les commandes sont les mêmes. La seul différence, est que “l’exécution” d’un dossier revient à avoir le droit de rentrer dedans.
Un dossier est de type d.
On peut également ajouter le paramètre -R à
chmod et chown, afin de changer les droits
récursivement. Donc pour tous les dossier et fichier contenue dans le
dossier sur lequel on change les droits.
On peut changer les droits pas défaut, lors de la création d’un fichier.
Par exemple, tous les nouveaux fichiers ai du 740 en droits :
umask 017Généralement, le système d’exploitation aura par défaut des droits “raisonnable”, donc à ne changer qu’en cas de stricte nécessité