Les droits sur Linux

Partons d'un exemple :

$ ls -l
- rwx rw- r--  1 francois admin    0 2011-01-30 02:19 f1.txt
d rwx r-x r-x  3 francois admin 4096 2011-01-28 23:58 tmp
Continuer la lecture
Publié dans Généralités sur Linux | Marqué avec , | Commentaires fermés

Quelques remarques sur le système de fichiers ext3

Sous Linux avec le système de fichiers ext3 (j'utiliserai l'abréviation fs pour "File System" afin d'aller plus vite), un fichier de type standard (par exemple txt, pdf, mp3 etc.) ou un fichier de type dossier est une suite de bytes non structurée (byte stream). Ils sont stockés dans le disque dans une série de title="Explications avec un joli schéma.">blocs plus ou moins contiguës (quand cette série de blocs est éparpillée sur le disque, on dit que le fichier est fragmenté). Cette série de blocs ne contient que le contenu du fichier à proprement parlé : ni l'emplacement de ce fichier dans l'arborescence, ni les droits Unix, ni la date de dernière modification etc. ne sont stockés dans cette série de blocs. Continuer la lecture
Publié dans Généralités sur Linux | Marqué avec , , | Commentaires fermés

Rechercher les fichiers contenant une chaîne donnée

D'abord il faut comprendre ce que fait cette commande :

$ grep -EHn -e "salut toto" fichier.txt
Continuer la lecture
Publié dans Commandes pratiques | Marqué avec , | Commentaires fermés

Faire un renommage en masse avec find et sed

Mise en situation : dans un dossier D, on a une somme de fichiers vidéo avec diverses extensions (mpg, mov etc). On suppose que ce répertoire contient : ou bien de tels fichiers, ou bien d'autres sous-répertoires (dont il importe peu de connaître le contenu ici). On voudrait renommer les fichiers en masse, seulement dans le répertoire D et pas dans ses sous-répertoires, de la manière suivante : le fichier nomFichier.ext devient ext_nomFichier.ext.

Pour ce faire, il faut se placer dans ce fameux répertoire D (à coup de cd) et taper l'instruction ci-dessous :

$ find . -maxdepth 1 -type f | sed -r 's/^\.\/(.+)\.(.+)/mv & .\/\2_\1.\2/' | bash
Continuer la lecture
Publié dans Commandes pratiques | Marqué avec , , | Commentaires fermés

Connaître le temps d’exécution d’une commande

Il est très facile de mesurer le temps d'exécution d'une commande à l'aide du mot clé time :

~$ time sleep 2

real 0m2.003s
user 0m0.000s
sys 0m0.000s
Continuer la lecture
Publié dans Shell bash | Marqué avec | Commentaires fermés

Les catégories de commandes

Dans le shell bash, on peut distinguer 3 catégories de commandes :

  • Les commandes définies par une fonction shell ou par un alias (par exemple définies dans .bashrc).
  • Les commandes primitives (builtin en anglais) du bash qu'on peut appeler aussi commandes internes. Le code de ces commandes est encapsulé directement dans l'exécutable /bin/bash et un appel d'une telle commande ne crée pas de processus fils du shell courant.
  • Les commandes externes qui sont des programmes exécutables stockés dans l'un des répertoires du PATH (par exemple find qui se trouve dans le répertoire /usr/bin/). Lors de l'appel de ces commandes, le shell courant crée un processus fils dans lequel la commande en question sera exécutée.
Continuer la lecture
Publié dans Shell bash | Marqué avec , | Commentaires fermés

Faire de Virtualbox un daemon sur Ubuntu

Le but est de faire en sorte d'avoir, sur une Ubuntu 10.04, une machine virtuelle Virtualbox 3.1.8. :

  1. qui se lance au démarrage de la Ubuntu (même si on n'a pas ouvert de session sur le poste hôte). La machine virtuelle pourra par exemple être accessible par le réseau avec une prise en main à distance.
  2. et qui s'éteint automatiquement un quand on décide d'éteindre (ou redémarrer) le poste hôte Ubuntu.

Bref, une sorte de virtualbox en tant que daemon (service). L'intérêt, c'est qu'une machine virtualbox, c'est une machine qu'on peut sauvegarder et surtout restaurer comme un simple fichier, et cela indépendamment de la plateforme hôte.

Continuer la lecture
Publié dans Commandes pratiques | Marqué avec , | Commentaires fermés

Récupérer la saisie d’un utilisateur dans une variable

Voici un exemple de script qui demande à l'utilisateur de saisir une chaîne de caractère, la récupère dans une variable et affiche le contenu de cette variable :

#! /bin/bash

echo -n "Entrez votre chaîne : "
read ma_variable
echo $ma_variable

L'option -n de la commande echo permet d'afficher la consigne sans passer à la ligne. De cette manière, l'utilisateur fera sa saisie sur la même ligne que la consigne. La commande read stoppe le script, attend la saisie de l'utilisateur et la stocke dans la variable ma_variable. Ensuite, on affiche le contenu la variable avec echo.

Publié dans Shell bash | Marqué avec | Commentaires fermés

Retrouver les fichiers modifiés depuis moins de n minutes

Imaginons que, via l'interface graphique, on ait changé les paramètres du système et qu'on souhaite identifier les fichiers qui contiennent ces fameux paramètres, afin de pouvoir les bidouiller par exemple. Comme d'habitude, on utilise la commande find :

~$ find . -mmin -2

La commande find recherche les fichiers modifiés depuis moins de 2 minutes dans le répertoire courant (et ses sous-répertoires).

Publié dans Commandes pratiques | Marqué avec | Commentaires fermés

Supprimer tous les fichiers .jpg d’un répertoire

Si vous voulez supprimer tous les fichiers .jpg du répertoire courant (et de ses sous-répertoires), il suffit de taper :

~$ find . -type f -iname "*.jpg" -exec rm -f {} \;

L'option -iname rend la recherche insensible à la casse.

Publié dans Commandes pratiques | Marqué avec | Commentaires fermés