Як створити файл із порожнім іменем?


9

Не знаю як, але я створив файл із порожнім ім'ям файлу, я сумніваюся, що там був пробіл (я поясню, чому в кінці):

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 $

Я запитав у #linux, як видалити файл, і людина запропонувала мені перенести всі інші файли, а потім скористатися вкладкою, що дуже цікаво:

# 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 $

Якби у назві файлу була пробіл, його було б замінено \ "", коли я натиснув клавішу вкладки, але це не відбулося.


5
Це каталог, а не файл, мабуть, він містить три файли.
Bananguin

2
Якщо припустити, що ви все ще зберігали каталог, куди ви перемістили все, окрім порожнього файлу, що робити коли робити file *?
Джозеф Р.

Ні, на жаль, я не перейменував файл за допомогою команди mv.
ychaouche


2
Це запитання не є дублікатом цього.  Це питання стосується практичних прийомів поводження з випадково створеним файлом (або каталогом), ім'я якого не містить символів друку.  Це інше питання - це теоретичне, гіпотетичне, бурхливе обговорення способів створення такого файлу, якби ви цього хотіли, і нічого не говорить про наслідки.
G-Man каже: "Відновіть Моніку"

Відповіді:


14

Неможливо мати файл із порожнім іменем. У вас є файл, ім'я якого повністю складається з порожніх або недрукувальних символів.

Щоб точно побачити, що таке ім'я файлу, запустіть LC_CTYPE=C ls -b. Це замінює всі порожні або недруковані символи восьмеричними втечами. Наприклад, файл, ім'я якого є єдиним простором нульової ширини, буде вказано як \342\200\213.

Ви можете виділити цей файл із глобусом, який виключає файли з гарним ім'ям. Наприклад, ви можете спробувати перерахувати файли, ім'я яких не починається з літери.

chaouche@karabeela /mnt/ubuntu/storage $ ls -d [^A-Za-z]*

Не забувайте параметр -d, щоб lsперелічити сам каталог, а не його вміст.

Ви повинні перейменувати файл, щоб мати ім’я. Ви можете розраховувати на заповнення оболонки або використовувати глобус, який відповідає лише цьому файлу.

mv [^A-Za-z]* windows-programs

5

Це може бути каталог із лише пробілами або символами, що не надруковані в імені. Крім того, видається, що в ньому є лише один запис, окрім '.' і "..", тому ви бачите "3" у другому стовпці виводу вашої першої команди. Ви завжди можете використовувати , statщоб роздрукувати ім'я каталогу, з: stat -f "'%N'" *. Якщо він не друкується, вам, можливо, доведеться вставити в нього трубу cat -vабо od -cподивитися, що це насправді.

Щоб видалити його, вам, ймовірно, доведеться запустити rmdir -- 'dirname'(замінити 'dirname' на ім’я каталогу. Можливо, вам знадобиться використовувати глобуси, якщо в ньому є недруковані імена), хоча, як я вже говорив раніше, він, мабуть, містить вміст, так що ви Мені доведеться спуститися до цього каталогу cd -- 'dirname'та вивчити його вміст.

Я б радив вам уникати використання rm -rfбудь-якої ціни, оскільки проблема з іменем каталогу легко зіпсувати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.