Avoir une corbeille avec la commande rm

Quand on est un adepte de la ligne de commande, on aime manipuler nos fichiers de travail avec les commandes usuelles (cd, ls, mv, rm). Seulement voilà, si vous êtes comme moi, vous savez qu’il arrive parfois de supprimer un fichier par erreur, ou de vouloir recuperer un fichier qu’on avait supprimer il y a quelque jour.

Alors, là, on se dit que Linux n’est pas si puissant que ça. Quel dommage ne ne pas avoir une corbeille permettant de contenir les fichiers dont on veut se debarrasser.

J’ai décidé ce matin de creer dans mon bashrc un alias de la commande rm afin que cette derniere ne supprime plus mes fichiers mais les deplaces dans un repertoire « Poubelle ».

An commençant mon alis, j’ai rencontré rapidement quelques soucis, j’ai donc du creer une fonction appellée rm dans mon fichier bashrc. Cette fonction va être appelée à chaque fois que la commande rm est tapée dans le terminal.

Cette fonction, vérifie s’il y a des options passées à l’appelle de la commande, si c’est le cas, alors elle verifie s’il y a l’option force (-f), si ce n’est pas le cas alors le ou les fichiers (ou repertoires) sont deplacés dans le repertoire POUBELLE défini dans la variable POUBELLE_DIRECTORY. Vous pouvez mettre le chemin du repertoire que vous souhaitez utiliser comme corbeille. Si le repertoire n’existe pas alors la fonction le creera automatiquement. Pas belle la vie?

J’oubliais de vous dire, si l’option -f est utilisée avec l’appelle de la commande rm, alors le ou les fichiers seront reelements surpprimés.

# Surcharges de la commande rm, si l'option -f n'est pas utilisée alors
# le(s) fichier(s) sont deplaces dans le repertoire POUBELLE_DIRECTORY
function rm {

# Repertoire contenant corbeille
POUBELLE_DIRECTORY="~/POUBELLE"

# si le repertoire corbeille n'existe pas alors le creer
if [ ! -d "$POUBELLE_DIRECTORY" ]; then
mkdir -p $POUBELLE_DIRECTORY

# Si erreur retournée par mkdir alors sortir en erreur
if [ $? -gt 0 ]
then
echo "Script .bashrc (Function rm) : Erreur de creation du repertoire $POUBELLE_DIRECTORY"
exit 1;
fi
fi

# si la commande rm a des options (argument 1 contient le caractere "-")
if [ $(expr index $1 -) -gt 0 ]
then
# si la commande rm ne contient l'option f (force)
if [ $(expr index $1 f) -eq 0 ]
then
mv "$2" $POUBELLE_DIRECTORY
if [ $? -eq 0 ]; then echo "Deplacement dans $POUBELLE_DIRECTORY"; fi
else
# Commandes rm classiques avec les arguments fournis
/usr/bin/rm $*
fi
else # Sinon la commande rm n'a pas d'option
mv "$1" $POUBELLE_DIRECTORY
if [ $? -eq 0 ]; then echo "Deplacement dans $POUBELLE_DIRECTORY"; fi
fi
}
export -f rm

Afficher le nombre d’arguments en C

Ci-dessous un morceau de code en langage c qui affiche simplement le nombre d’arguments passés en paramètre au programme.

Ci-dessus, notre code source.

Maintenant compilons…

Et lançons notre programme.

Tiens!! bizarre?!? Il affiche 1 alors que je n’ai fourni aucun parametre. Je vais lui donné un paramètre pour voir ce que cela donne.

Ah ben, ca y est, je crois avoir compris. Vous aussi? Le nom du programme est lui aussi comptabilisé.

 

Arreter un programme qui a bogué sous linux

Pour arrêter un programme graphique qui a bogué (planté) sous Linux, vous pouvez si vous êtes sous l’environnement graphique utilisez xkill.
Pour cela ouvrez un terminal, taper xkill, une petite tête de mort va apparaitre, dirigez là à l’aide de la souris sur l’application graphique qui a planté et tuer cette dernière d’un simple clic. Vous pouvez faire CTRL+C à l’aide du clavier pour fermer la xkill sans tuer d’application.

Si jamais vous souhaitez tuer une application qui n’est pas graphique, à ce moment là, il est nécessaire d’utiliser la commande kill. Ouvrez un terminal, nous allons rechercher le PID (Process Identificator) de l’application qui a bogué (planté). Pour cela, taper la commande ps -aux | more qui va lister tous les processus lancés sur le système (appuyer sur la touche entrée pour faire défiler la liste).

Nous pouvons observer dans la deuxième colonne le numéro représentatif du PID de chacun des processus. Pour arrêter le processus vous pouvez utiliser la commande kill. Ainsi la commande suivante demandera au processus 4183 de s’arrêter :

Forcer la fermeture d’un processus immédiatement

Si le processus ne se ferme pas, et si vous souhaitez forcer l’arret de ce dernier vous pouvez alors utiliser kill -9. Ainsi la commande suivante forcera la fermeture immédiate du processus :

 

Afficher un calendrier

La commande cal sous linux permet d’afficher un calendrier.

Par exemple, pour afficher le calendrier du mois courant :

Pour afficher toute l’année 2011 :

Il est possible d’afficher le calendrier julien :

Comment rechercher des fichiers avec la commande find

Nous allons au travers d’exemples voir comment rechercher des fichiers avec la commande find.

Rechercher un fichier spécifique dans un répertoire donné

La commande find dispose de l’option -name qui permet de spécifier le nom du fichier à rechercher. Par exemple pour rechercher un fichier nommé debian.txt dans le répertoire /home nous utiliserons la commande find suivante :

Rechercher un fichier dans tous les répertoires de la machine

Si vous souhaitez rechercher un fichier dans tous les répertoires du système, il faut se connecter en root. Sans être root vous n’aurez pas les droits de lecture nécessaire à parcourir tous les répertoires.

Par exemple pour rechercher un fichier nommé debian.txt dans tous les répertoires du système il faut en tant que root utiliser la commande find suivante :

Si vous ne connaissez pas le nom exacte de votre fichier alors vous pouvez utiliser les méta-caractères du Shell. Ainsi la commande :

parcourt tous les répertoires du système à la recherche des fichiers commençant par la chaîne de caractères « deb »

On peut de la même manière recherche par exemple tous les fichiers qui finissent par l’extension *jpg, ainsi la commande find :

recherche au sein du système tous les fichier ayant l’extension jpg.

Rechercher des fichiers contenant une expression particuliere specifiée

Dans l’exemple ci-dessous nous recherchons dans tous les fichiers .cpp l’expression spécifiée (le resultat sera dans : /tmp/fichier_sortie). Le resultat affichera tous les fichiers contenant cette expression.

Rechercher dans les fichiers .cpp et .h l’expression donnée :

Connaître la dernière date de démarrage du système Linux

Il est parfois utile de connaître quelle est la dernière date de démarrage d’un système Linux, c’est avec à la commande who qu’il nous est possible grâce à l’option -b d’avoir cette information.