Fichiers avec des noms vides

J'écrivais un widget pour afficher des files dans un directory donné et je me demandais si je devais couvrir le cas où un file a un nom vide.

Les tests n'ont pas montré de résultats évidents, alors je me demandais si quelqu'un avait des informations précises

$ touch "" touch: cannot touch `': No such file or directory $ echo > "" bash: : No such file or directory 

Un nom de file peut ne pas être vide. Pour citer la spécification Unix Unix, §3.170 , un nom de file est:

Un nom composé de 1 octets {NAME_MAX} utilisés pour nommer un file. Les caractères composant le nom peuvent être sélectionnés dans l'set de toutes les valeurs de caractères, à l'exception du caractère <slash> et de l'octet nul.

Donc, il doit comporter au less 1 octet, c'est-à-dire pas vide.

Pas de cette définition, aucun de ces caractères n'a besoin d'être visible (c.-à-d., Tous pourraient être des espaces blancs) et ils n'ont pas besoin d'être imprimés (tous peuvent être des caractères de contrôle). Et si vous supposez que les noms de files sont UTF-8, ils n'ont pas besoin d'être.

Je ne pense pas que vous puissiez avoir un file sans nom. Cependant, vous voudrez peut-être gérer le cas (plutôt artificiel) d'un nom de file qui n'est composé que d'espaces, ce qui est possible:

 $ echo "Hi" > " " $ echo "Bye" > " " $ cat " " Bye $ cat " " Hi 

Intéressant. On dirait que vous pouvez au less faire des noms d'espaces blancs:

 $ touch " " $ ls -l total 0 -rw-r--r-- 1 user user 0 Mar 5 22:57 $ file \ : empty 

EDIT : WRONG WRONG WRONG.

Dans mon cas, le nom de file n'était pas vide, il se composait de caractères non imprimables. Voir: Comment créer un file avec un nom vide?

Vieille réponse

Vous devriez. Je ne sais pas comment, mais j'ai créé un file avec un nom de file vide, je doute qu'il y avait un espace blanc là-bas:

 chaouche@karabeela /mnt/ubuntu/storage $ ls total 352K drwx------ 3 chaouche chaouche 4.0K Feb 12 11:00 drwxr-xr-x 4 chaouche chaouche 4.0K Apr 14 23:13 AUDIO drwxr-xr-x 5 chaouche chaouche 4.0K Jul 20 22:25 BACKUPS -rw-r--r-- 1 chaouche chaouche 310K Jun 15 13:00 cv_yassine_chaouche_2012.pdf drwxr-xr-x 2 chaouche chaouche 4.0K Jun 10 22:16 Mageia-3-i586-DVD drwxr-xr-x 5 chaouche 1001 4.0K Oct 12 2012 MUSIQUE drwxr-xr-x 15 chaouche chaouche 4.0K Oct 27 2012 PARISVIII drwxr-xr-x 6 chaouche chaouche 4.0K Jun 12 18:33 SABAYON drwxr-xr-x 5 chaouche chaouche 4.0K Jun 15 13:23 SIFTECH drwxr-xr-x 5 chaouche chaouche 4.0K Feb 6 15:11 TOILES drwxr-xr-x 4 chaouche chaouche 4.0K Jul 17 17:21 VIDEOS chaouche@karabeela /mnt/ubuntu/storage $ 

J'ai demandé à #linux comment supprimer le file et une personne m'a proposé de déplacer tous les autres files, puis d'utiliser la complétion de l'onglet, ce qui a donné un comportement très intéressant:

 # with tab completion chaouche@karabeela /mnt/ubuntu/storage $ ls / total 45M -rwxr-xr-x 1 chaouche chaouche 34M Jan 16 2013 inkscape-0.48.4-1-win32.exe -rwxr-xr-x 1 chaouche chaouche 8.6M Feb 4 11:42 mypaint-1.0.0-win32-installer.exe -rwxr-xr-x 1 chaouche chaouche 2.7M Jan 17 2013 pdftkb_setup.exe # without tab completion, wrote "/" by hand chaouche@karabeela /mnt/ubuntu/storage $ ls / total 212K -rw-r--r-- 1 root root 0 Apr 15 2012 1 drwxr-xr-x 2 root root 4.0K Dec 9 2012 bin drwxr-xr-x 3 root root 4.0K Jun 15 12:10 boot -rw------- 1 root root 74K Jul 1 2011 dead.letter drwxr-xr-x 19 root root 4.2K Jul 20 20:14 dev drwxr-xr-x 117 root root 12K Jul 20 21:30 etc drwxr-xr-x 4 root root 4.0K Jun 12 18:40 home drwxr-xr-x 2 root root 4.0K Jun 8 2011 initrd drwxr-xr-x 20 root root 12K Dec 9 2012 lib drwx------ 2 root root 16K Jun 7 2011 lost+found drwxr-xr-x 4 root root 4.0K Jul 3 01:56 media drwxr-xr-x 9 root root 4.0K Apr 15 00:06 mnt drwxr-xr-x 8 root root 4.0K Jun 30 23:19 opt dr-xr-xr-x 198 root root 0 Jun 15 13:10 proc drwxr-x--- 28 root root 4.0K Jul 20 21:42 root drwxr-xr-x 2 root root 12K Dec 9 2012 sbin drwxr-xr-x 2 root root 4.0K Apr 3 2011 srv drwxr-xr-x 12 root root 0 Jun 15 13:10 sys -rw-r--r-- 1 root root 0 Jun 12 18:40 thisismageia drwxrwxrwt 69 root root 36K Jul 20 22:04 tmp drwxr-xr-x 14 root root 4.0K Nov 6 2011 usr drwxr-xr-x 18 root root 4.0K Jul 2 2011 var chaouche@karabeela /mnt/ubuntu/storage $ 

S'il y avait un espace dans le nom de file, il aurait été remplacé par \ "" quand j'aurais cliqué sur la touche de tabulation, mais ce n'était pas le cas.