이름이 비어 있는 파일

이름이 비어 있는 파일

주어진 디렉토리의 파일을 표시하는 위젯을 작성 중인데 파일 이름이 비어 있는 경우를 처리해야 하는지 궁금합니다.

테스트 결과가 명확하지 않아서 확실한 정보를 아시는 분 계시나요?

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

$ echo > ""
bash: : No such file or directory

답변1

파일 이름은 비워둘 수 없습니다. 인용하다단일 Unix 사양, §3.170, 파일 이름은 다음과 같습니다.

파일 이름을 지정하는 데 사용되는 1~{NAME_MAX}바이트로 구성된 이름입니다. 이름을 구성하는 문자는 <슬래시> 문자와 널 바이트를 제외한 모든 문자 값 집합에서 선택할 수 있습니다.

따라서 최소 1바이트로 구성되어야 합니다. 즉, 비어 있지 않아야 합니다.

이 정의에 따르면 이러한 문자 중 어느 것도 표시될 필요가 없으며(즉, 둘 다 공백일 수 있음) 인쇄할 필요도 없습니다(모두 제어 문자일 수 있음). 파일 이름이 UTF-8이라고 가정하면 반드시 그럴 필요는 없습니다.

답변2

이름이 없는 파일은 있을 수 없다고 생각합니다. 그러나 공백만 포함된 파일 이름의 (다소 인위적인) 경우를 처리하고 싶을 수도 있습니다. 이는 가능합니다.

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

답변3

흥미로운. 최소한 이름에 공백을 사용할 수 있는 것 같습니다.

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

답변4

편집하다: 틀렸어, 틀렸어, 틀렸어.

내 경우에는 파일 이름이 비어 있지 않았고 인쇄할 수 없는 문자로 구성되어 있었습니다. 바라보다:빈 이름으로 파일을 만드는 방법은 무엇입니까?

오래된 답변

당신은해야합니다. 방법은 모르겠지만 파일 이름이 비어 있는 파일을 생성했는데 거기에 공백이 있는 것 같습니다.

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 $

파일명에 공백이 있으면 탭키를 눌렀을 때 \" "로 바뀌는데 그렇지 않습니다.

관련 정보