Commandes UNIX

De Diablotins.org.


Commandes de base d'UNIX
Image:brush.png



Comme vous le savez tous, les Unix, ( dont les *BSD et Linux ) se commandent beaucoup à l'aide de commandes lancées par interpréteurs.
Cela peut être très pratique pour lancer des applications avec des paramètres, mais aussi pour éventuellement contrôler le résultat d'une action, en particulier lorsque vous soupçonnez un plantage.
Mais voyons ça de plus près

Sommaire

les Shells

Pour lancer une commande dans un shell, il faut tout d'abord ouvrir un shell. Pour cela, 2 possibilités:

  • Votre station démarre en mode texte: dès que vous vous connectez, vous êtes dans un terminal virtuel.
  • Votre station démarre sous X: Vous trouverez des raccourcis pour ouvrir un xterm.

Des shells, il en existe une petite collection:

  • bash
  • sh
  • tcsh
  • zsh
  • et bien d'autres encore...

A vous de voir celui que vous préférez le mieux. Essayez les et jugez par vous-mêmes. Certains shells ont des fonctionnalités que d'autres n'ont pas:

  • auto-complétion des commandes
  • auto-complétion des chemins d'accès
  • mise en couleur
  • .....

Chemin d'accès

Pour lancer une commande dans un shell, soit vous tapez le chemin relatif, soit le chemin absolu Je m'explique:
Un chemin relatif va etre un chemin par rapport au répertoire actuel, dans lequel vous vous trouvez. Si vous etes dans le répertoire “/home/sebastien” et que vous voulez exécuter le fichier “toto/titi”, vous aurez a taper:

./toto/titi 

Par contre, pour le chemin absolu, tapez:

/home/sebastien/toto/titi

En plus de cela, vous avez une aide: le “PATH” .
C'est une variable de shell qui va regrouper différents chemins. Grâce a lui, au lieu de taper:

  # /usr/local/bin/zsh

Vous n'aurez plus qu'a taper

zsh 

à condition que “/usr/local/bin” soit dans votre PATH.

Commande ls

Elle permet de lister le contenu d'un répertoire:

  $ ls /home/sebastien

vous obtiendrez donc la liste des répertoires et fichiers de l'espace de l'utilisateur «sebastien». L'avantage du monde Unix est que vous pouvez aussi lister la liste du matériel présent dans votre machine:

  # ls /dev

Vous obtiendrez entre autre un aperçu des différentes partitions de votre disque dur (ex: /dev/ad0s2a), ainsi que vos cartes son, firewire, ...

Vous pouvez ajouter des paramètres à ls pour avoir plus de détails:

  • ls -l -> liste détaillée du répertoire
  • ls -al -> liste de tous les fichiers et répertoire (même cachées)
  • ls -rtl -> liste les fichiers du plus ancien au plus récent

Commande cd

Elle permet de changer de répertoire. Rien ne vaut un exemple plutôt qu'un long discours:

  /home/sebastien# cd toto
  /home/sebastien/toto#

Commande pwd

Elle affiche le répertoire courant:

  # pwd
  /home/sebastien
  # cd toto
  # pwd
  /home/sebastien/toto

su et sudo

La commande su permet de vous substituer a un autre utilisateur.
Cela permet d'avoir un shell en root pour faire certaines commandes sans avoir a se déconnecter/connecter...x fois. La syntaxe est très simple:

  $ su -> console user
    (saisie de votre mot de passe)
  # -> console root

Si vous voulez prendre tous le contexte du user a remplacer, il suffit de taper:

  $ su -
   (mdp)
  #

Ainsi, vous prenez tous les PATH et autres variables locales a l'utilisateur
La commande sudo est quelque peut différente puisqu'elle permet d'exécuter une commande en tant que root. par exemple:

% sudo cp /home/sebastien/prog.c /tmp/prog.c -> on veux copier le fichier prog.c en tant que root

Cela est très pratique si on ne veux pas se connecter en root, ou si on a peur d'être root dans un shell..

Commande whoami

Si vous êtes habitué a voyager souvent entre différents utilisateurs, vous risquez de ne plus savoir qui vous êtes: root? sebastien? toto?... Pour cela, une commande bien pratique: whoami. Elle permet d'interroger le shell dans lequel vous êtes pour vous dire l'utilisateur connecté.

chmod, chown et chgrp

Ces trois commandes permettent de gérer les accès aux fichiers, au niveau utilisateur etc. Il existe trois types d'accès a un fichier:

  • accès en lecture (r)
  • accès en écriture (w)
  • accès en exécution (x)

Pour autoriser un accès a un fichier, on 'additionne' la valeur de chacun des droits (r a pour valeur 4, w 2 et x 1).

  • Un accès en lecture seule: 4
  • un accès en lecture + exécution: 4 + 1 = 5
  • Un accès total: 4 + 2 + 1 = 7

Pour accéder a un fichier, les utilisateurs sont scindées en 3 classes:

  • le propriétaire du fichier, noté u
  • les autres membres du groupe, noté g
  • les autres utilisateurs, noté o

Pour chaque classe d'utilisateur, il y a des droits différents.
Les droits d'accès sont un mélange de tout ca:
par exemple:

  $ ls -l
  drwxr-xr-x 3 seub users 512 Oct 10 14:26 test.txt

Si maintenant on veux changer les droits a un fichier, on utilise 'chmod'. Nous avons 2 manières de procéder: relatif ou absolu.
De manière absolue tout d'abord,

  $ chmod u+x test.txt

On ajoute les droits x (exécution) au user (u) pour le fichier test.txt
au exemple:

  $ chmod g+w test.txt

ajout des droits en écriture pour le groupe propriétaire sur le fichier test.txt
De manière absolue:
un bon exemple vaut mieux qu'un long discours:

  $ chmod 0754 test.txt

pour le propriétaire: contrôle totale (r + w + x)
pour le groupe : contrôle en lecture exécution
pour les autres: contrôle en lecture seulement.
chown” permet de spécifier le nouvel utilisateur propriétaire du fichier:
par exemple:

  $ chown lecid test.txt

Lecid est le nouveau propriétaire du fichier.

«chgrp” permet de spécifier le nouveau groupe propriétaire du fichier:
par exemple:

  $ chgrp diablotins test.txt

diablotins est le nouveau groupe propriétaire du fichier. Tout les utilisateurs membres de du groupe diablotins pourront avoir des droits spéciaux sur ce fichier.

Projets :