Articles

Affichage des articles associés au libellé shell

Comment renommer 350 fichiers d'un coup d'un seul sous Linux-bash

Je me suis retrouvé dans la situation ou dans un répertoire j'avais 350 fichiers du style dtmgrid122413_1m.asc.gz qu'il fallai que je renomme en MNT_1224-13_1m.asc.gz grâce aux pipe et à sed c'est possible en une seule commande: for i in dtm*; do (mv $i `echo $i|sed 's/dtmgrid\([1-9]\{4\}\)/MNT_\1-/'`); done on retrouve une boucle for qui parcoure chaque fichier dans le répertoire courant et le stocke dans la variable i. Puis pour chaque fichier trouver on va faire un mv pour renommer l'ancien nom de fichier se trouvant en $i en quelquechose qui se trouve etre le résultat de l'expression: `echo $i|sed 's/dtmgrid\([1-9]\{4\}\)/MNT_\1-/'` notez bien que l'expression est entre backquotes c'est grâce à cela que l'on reçoit la valeur finale de l'éxécution de cette suite de commande et non pas une simple chaine de caractères équivalent à notre commande... en gros c'est grâce à une substitution sed " s/avant/apres/ " qui ...

Changer le prompt en ligne de commande sous Bash

Quand on est tout le temps en train de travailler dans la console, il peut arriver que l'on désire changer le prompt du shell. Ce prompt peut ressembler à qqch du style : cfred@tuxhost:/var/log$ seulement parfois on arrive dans des profondeurs de répertoire qui rendent juste intenable l'affichage du path courant dans le prompt. Dans ce cas il suffit de changer la définition du prompt qui se trouve dans la variable PS1 cfred@tuxhost:/var/log$ SAVE=$PS1 cfred@tuxhost:/var/log$ PS1="\u:\W $ " cfred:log $ echo "Pour restaurer la valeur d'origine il suffira alors de faire" cfred:log $ PS1=$SAVE Il y a plusieurs caractères d'échappement qui peuvent être utilisé comme par exemple : \d pour la date \h le nom du host jusqu'au premier point (sans le suffixe dns) \H le nom du host complet \t l'heure au format 24h HH:MM:SS \T l'heure au format 12h HH:MM:SS \u le nom d'utilisateur courant \w le chemin compl...