Tricks Unix

De DocUnix.

Suppression de doublon de répertoire ou fichier apparemment identique

ls -l
total 48
drwxr-xr-x  16 root       sys           8192 Aug  7  2009 Package1
drwxr-xr-x   6 root       sys             96 Oct 26 11:12 Package2
drwxr-xr-x  11 root       sys           8192 Jul 17  2006 Package3
drwxr-xr-x   8 root       sys           8192 Sep 28  2005 Package4
drwxr-xr-x   3 root       sys             96 Oct 26 10:40 Package2

option du ls -b List nonprinting characters in the octal \ddd notation.

ls -lb
total 48
drwxr-xr-x  16 root       sys           8192 Aug  7  2009 Package1
drwxr-xr-x   6 root       sys             96 Oct 26 11:12 Package2
drwxr-xr-x  11 root       sys           8192 Jul 17  2006 Package3
drwxr-xr-x   8 root       sys           8192 Sep 28  2005 Package4
drwxr-xr-x   3 root       sys             96 Oct 26 10:40 Packgae2\010\010\010\010age2

Récupération du numéro d'inode :

ls -lib .
total 48
  3784 drwxr-xr-x  16 root       sys           8192 Aug  7  2009 Package1
  3774 drwxr-xr-x   6 root       sys             96 Oct 26 11:12 Package2
  3780 drwxr-xr-x  11 root       sys           8192 Jul 17  2006 Package3
  3785 drwxr-xr-x   8 root       sys           8192 Sep 28  2005 Package4
 10869 drwxr-xr-x   3 root       sys             96 Oct 26 10:40 Packgae2\010\010\010\010age2

L'inode qui nous intéresse est le 10869. Pour en avoir la confirmation :

find . -xdev -inum 10869 -exec ls -libd {} \;
 10869 drwxr-xr-x   3 root       sys             96 Oct 26 10:40 ./Packgae2\010\010\010\010age2

Pour pouvoir supprimer le fichier, il faut le renommer; ici en toto

find . -xdev -inum 10869 -exec mv {} toto \;

Et pour terminer la manipulation, il suffit de faire un rm de toto (répertoire).

rm -ri toto

Merci Jean-Gabriel pour l'astuce.

unix2dos et dos2unix

Les commandes aix2dos et dos2aix d'AIX 4.1 ne sont plus fournies par IBM. L'astuce est de créer dans le profile générale du serveur (/etc/profile) 2 alias avec "sed" permettant la modification des fins de lignes.

alias dos2aix='sed s/^M$//'
alias aix2dos='sed s/$/^M/'
alias dos2unix='sed s/^M$//'
alias unix2dos='sed s/$/^M/'

Attention, sous vi pour générer le caractère ^M, il faut taper <ctrl>v<ctrl>m

Transcodage de jeu de caractère

Typiquement, il est parfois nécessaire de transcoder des fichiers de UTF-8 vers ISO-8859 ou vis-versa. La commande a utiliser sous unix est iconv.

Par exemple, pour transcoder de l'UTF-8 vers du ISO8859-1 :

iconv -f ISO-8859-1 -t UTF-8 <nom de fichier>
Outils personnels