Differences between revisions 4 and 5
Revision 4 as of 2009-04-14 22:57:54
Size: 3635
Editor: MichelBarret
Comment:
Revision 5 as of 2009-08-25 09:47:36
Size: 3978
Editor: MichelBarret
Comment:
Deletions are marked like this. Additions are marked like this.
Line 85: Line 85:
== Comment tester si un dossier possède des fichiers ? ==

== Comment lancer un processus en tâche de fond ? ==

== Comment travailler avec des tableau en bash ? ==

== Comment utiliser une variable dans une variable en bash ? ==

== Comment compter le nombre de ligne dans les fichiers qui ont une certaines extension en bash ? ==

Translation(s): English

(!) Discussion


Astuces pour faire des scripts shell

Note : Le wiki Debian n'est peut être pas le meilleur endroit pour trouver de l'aide dans la créations de scripts shell. Si vous rencontrez des problèmes voud devrier vous reporter à la documentation du shell que vous utilisez (bash, zsh, tcsh, dash,...).

Comment voir l'espace disque utilisé ?

df
df -h # affichage lisible par les humains (en mega et giga octet)

Mon système est pleins. Comment puis-je voir où se trouve les plus gros fichiers ?

cd /quelquepart
du -sk *
# Répéter autant que nécessaire

Une autre voie :

find /quelquepart -size +2000k -ls
# Cela montre tout les fichiers plus lourd que 2000 kilo octets dans /quelquepart

Si vous voulez garder vos .deb, vous pouvez filter la liste ainsi :

find / -size +2000k -ls | awk ' substr($NF, length($NF) - 3, 4) != ".deb" '
# Cela montre tout les fichiers sur votre système plus lourd que 2000 kilo octets qui ne sont pas des paquets debian

Si vous voulais voir les gros répertoires au lieu des fichiers, vous pouvez le faire ainsi :

du -x /quelquepart | sort -n | tail -10
# Cela montre les 10 plus gros répertoires dans /quelquepart

Je possède beaucoup de mp3... Comment puis-je tous les renomer en remplaçant les espaces par des soulignés ?

rename 's/ /_/g' *.mp3

La commande {rename} n'est pas une commande Unix classique mais elle est inclus dans perl qui est installé par défaut dans Debian bien sur.

Comment puis-je le faire de manière récursive ?

C'est un peu compliqué. Vous pouvez récupérer la liste des fichiers à passer à {rename} grâce à {find}, mais si vous renomer les répertoire avant les fichiers qu'ils contiennent, {rename} ne réussiras pas. Vous devez utiliser {-depth} avec {find} pour être sur que les fichiers seront renomser avant les répertoires qui les contiens.

cd /quelquepart
find . -depth -name '* *' -type f -print0 | xargs -r0 rename 's/ /_/g'

Avec la version 4 de bash (et zsh) vous pouvez utiliser les "globing" (exemple pour les mp3) :

rename 's/ /_/g' **/*.mp3

Comment faire pour renomer (récursivement) tout les fichiers en majuscule pour qu'ils soient en minuscule ?

Comment faire pour supprimer un fichier dont le nom commence par "-" ?

unlink -monfichier

Trois autre façon :

rm -- -monfichier
rm ./-monfichier
utiliser mc, et appuyer sur F8 lorsque le fichier en question est sélectionné

La deuxième façon fonctionne avec tout les programmes en ligne de commande et pas uniquement {rm}.

Comment faire pour voir le contenu d'un fichier en temps réel ?

Si c'est un fichier de log, on regarde la fin du fichier :

tail -f /var/log/messages

ou

less +F /var/log/messages

Si c'est une commande général, utilisez {watch} :

watch -n 1 ls -l ~/un/fichier

Comment récupérer le nom du fichier dans un chemin complet ?

Deux solutions :

basename /chemin/vers/un/fichier
var=/chemin/vers/un/fichier ; echo ${var##*/} 

Comment tester si un dossier possède des fichiers ?

Comment lancer un processus en tâche de fond ?

Comment travailler avec des tableau en bash ?

Comment utiliser une variable dans une variable en bash ?

Comment compter le nombre de ligne dans les fichiers qui ont une certaines extension en bash ?