Commande Bash

Remarque : “~$ ” est le prompt du terminal qu'il ne faut pas saisir.

Avertissement: Certains scripts agissent sur un ensemble de fichiers et sont donc à utiliser avec prudence.

  ~$ for i in *\ *; do mv "$i" `echo $i | tr " " "_"`; done
  pour faire l'inverse 
  ~$ for i in *_*; do mv "$i" "`echo $i | tr "_" " "`"; done
  Si voulez tester cette commande sans que les modifications soient faites: 
  ~$ for i in *\ *; do printf "$i\n" | tr " " "_"; done
  affichera les nouveaux noms des fichiers.

Pour “cibler” les fichiers on peut modifier la commande; par exemple pour n'agir que sur les mp3:

  ~$ for i in *\ *.mp3; do mv "$i" `echo $i | tr " " "_"`; done
for file in *.flac; do $(flac -cd "$file" | lame -h - "${file%.flac}.mp3"); done
for file in *.aif ; do ffmpeg -i $file -f mp3 -ab 192 -ar 44100 $file.mp3 ; done
# pour faire une liste de test avant
$ find . -type d | while read f ; do echo $f; done
# pour faire la convertion (lancer plusieurs fois ...)
$ (IFS=$'\n';for f in `find . -type d `; do folder=$(echo $f | tr [:blank:] '_'); [ -e $f ] && [ ! -e $folder ] && mv "$f" $folder;done;unset IFS)

~$ for i in *; do mv “$i” `echo $i | tr [:upper:] [:lower:]`; done

# 1024k est la taille en kilo-octet (1 mega)
$ find / -size +1024k -print
$ find -depth -type d -empty -exec rmdir {} \;
# remplacer la variable NOM_DU_FICHIER
$ find . -maxdepth 1 -not -name NOM_DU_FICHIER -exec rm -rf '{}' \; 2>/tmp/NULL
# Pour effacer la fin d'un fichier MP3 avec une chaine similaire
$for file in *.mp3
>    do
>           mv "$file" "${file%\[www.gwadanina.net\].mp3}.mp3"
>    done
for file in *.flv; do $(mencoder "$file" -o "${file%.flac}.mp3" -of rawaudio -oac mp3lame -lameopts cbr:br=192 -ovc copy); done

~$ for i in *.EXT1; do mv $i `basename $i EXT1`EXT2; done

  EXT1 est l'extension à modifier ; EXT2 est la nouvelle extension
  Par exemple pour remplacer l'extension php3 de vos scripts par php: 
  ~$ for i in *.php3; do mv $i `basename $i php3`php; done
  Par exemple pour remplacer le mot windows par linux dans vos fichier texte: 
  perl -i.bak -pe 's/windows/linux/g' *.txt
 Une fois vérifié que tout va bien vous pouvez effacer les fichiers de sauvegarde (.bak)

grep -rn “expression” *.txt

  Affichera le nom du fichier est le numéro de ligne ou l'expression a été trouvée. 

~$ man emacs | col -b > man_emacs.txt

  Crée ou remplace le fichier mon_fichier si il existe: 
  ~$ cat >mon_fichier.txt <<"EOF"
  >Le fichier contiendra les lignes
  >que vous tapez jusqu'à ce qu'au
  >EOF
  ~$
  Ajoute le texte à la fin du fichier ou le crée s'il n'existe pas: 
  ~$ cat >>mon_fichier.txt <<"EOF"
  >Ajout à la fin du fichier ou création
  >de celui-ci
  >EOF
  ~$

~$ tr -d “\015” < fich_dos >fich_unix

 fich_dos étant le fichier dos et fich_unix le fichier obtenu après conversion

~$ split -b 1457664 mon_fichier part.

  mon_fichier est le nom du fichier à découper
  part. est le préfixe de sortie. Les fichier s'appelleront part.aa, part.ab,...
  -b 1456664 demande à split de couper le fichier en morceaux de 1456664 octets ce qui correspond à la capacité d'une disquette.

Le recollage se fait de la manière suivante (une fois les fichiers regroupés dans un même dossier):

  ~$ cat part.* >mon_fichier
  Créez un fichier sign_al.sh contenant: 
    #!/bin/sh  
    SIGFIFO=$HOME/.signature
    rm -f $SIGFIFO
    mkfifo $SIGFIFO
    while true;
    do (
    printf "Votre nom\n\nCitation :\n" >>$SIGFIFO | fortune -s >> $SIGFIFO
    );
    sleep 1;
    done
   Rendez ce fichier exécutable avec chmod +x sign_al.sh. Puis exécutez le fichier sign_al en arrière plan (./sign_al.sh &). 
   A chaque accés au fichier ~/.signature son contenu est changé. Vous pourrez le constater en utilisant cat sur celui-ci. 
   Il ne vous reste plus qu'à dire à votre logiciel de mail d'utiliser .signature pour signer vos messages.

~$ commande 2>err.log

  2 correspond à stderr c'est à dire la sortie standard pour les erreurs
  Exemple d'utilisation: 
  ~$ gcc -o mon_prog main.c 2>err.log
  ~$ cat err.log
  main.c: In function `main':
  main.c:47: warning: unused variable `editor_display'
  Autre exemple: Version "améliorée" de la commande pour mettre les noms de fichiers en minuscule 
  ~$ for i in *; do mv "$i" `echo $i | tr [:upper:] [:lower:]` 2>/dev/null; done
 Évite d'avoir des message du style:" mv: `abcdef' et `abcdef' identifient le même fichier " pour les fichiers
 dont le nom ne contient pas de lettres majuscules.

commande 2>&1

  Ceci peut être utile pour certains programmes (comme cdrecord ou mkisofs) qui envoient
  l'aide vers stderr ce qui empêche d'utiliser less pour la faire d�filer.

Exemple:

 ~$ cdrecord --help | less
 (END)
 ne fonctionne pas par contre :  
 ~$ cdrecord --help 2>&1 | less
 cdrecord: Usage: cdrecord [options] track1...trackn
 Options:
    -version        print version information and exit
    -v              increment general verbose level by one
    -V              increment SCSI command transport verbose level by one
    -debug          print additional debug messages
    dev=target      SCSI target to use as CD/DVD-Recorder
    timeout=#       set the default SCSI command timeout to #.
    driver=name     user supplied driver name, use with extreme care
    -checkdrive     check if a driver for the drive is present
    -prcap          print drive capabilities for MMC compliant drives
    -inq            do an inquiry for the drive end exit
    -scanbus        scan the SCSI bus end exit
    -reset          reset the SCSI bus with the cdrecorder (if possible)
    -ignsize        ignore the known size of a medium (may cause problems)
  donne le résultat attendu !

Réinitialiser la console

~$ reset

  Erase is delete.                                                                        
  Kill is control-U (^U).
  Interrupt is control-C (^C).
  ~$
# Liste les processus en cours d'exécution et leur identifiant (PID)
$ top
# Tue un processus grâce à son PID  
$ kill
# Liste des connexions au serveur FTP  
$ ftptop
# Top des interfaces réseau (installation par aptitude install iftop)    
$ iftop
# Top Apache (installation par aptitude install apachetop)    
$ apachetop
# Top MySQL (installation par aptitude install mtop)    
$ mtop
 
##Pour le réseau :
# Liste les connexions établies
$ netstat -tap
# Liste les ports en écoute    
$ netstat -tulp
# Liste les ports en écoute    
$ lsof -n | grep LISTEN
# Liste les connexions UDP     
$ lsof -n | grep UDP  
# Connaitre la version de Debian installée
$ cat /etc/debian_version 
# Connaitre la version du noyau installée
$ uname -a
# cat /proc/version
# Installation de image magick
$ urpmi imagemagick
# Convertir les fichier jpg en pdf
$ convert *.jpg new_file.pdf
$ mplayer -dumpstream mms://video.gwadanina.net/video.wmv -dumpfile video.wmv
  • linux/commandes_linux.txt
  • Dernière modification: 2018/10/13 14:59
  • (modification externe)