空の名前のファイル


8

特定のディレクトリのファイルを表示するためのウィジェットを作成していて、ファイルの名前が空である場合をカバーする必要があるかどうか疑問に思いました。

テストは明白な結果を示さなかったので、誰かが明確な情報を持っているかどうか疑問に思っていました

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

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

回答:


15

ファイル名は空にできません。Single Unix Specification、§3.170を引用すると、ファイル名は次のようになります。

ファイルの名前に使用される1から{NAME_MAX}バイトで構成される名前。名前を構成する文字は、<slash>文字とnullバイトを除くすべての文字値のセットから選択できます。

したがって、それは少なくとも1バイトで構成される必要があります。つまり、空ではありません。

その定義から、それらの文字のいずれも可視である必要はなく(つまり、すべて空白である可能性も)、印刷する必要もありません(すべて制御文字である可能性があります)。また、ファイル名がUTF-8であると想定している場合は、そうである必要はありません。


ありがとう!空の文字列を使用して、コードにファイル名がないことを示すことができます。nice
ヨハネスシャウブ-litb 2013

唯一の実際の制限は、名前にASCII '\0'やを含めることができないこと'/'です。
フォンブランド2013年

@vonbrandええ、私はその文をコピーし(質問に直接対応していない場合でも)、OPがそれを確実に認識できるように繰り返し説明しました。PS:編集で修正していただきありがとうございます。
derobert 2013

3

名前のないファイルは作成できないと思います。ただし、スペースだけで構成されるファイル名の(むしろ不自然な)ケースを処理することもできます。

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

2
以前、「前の行、行の先頭」のエスケープシーケンス、およびいくつかのジャンクという名前のファイルがありました。やってlsいくつかのファイルは、ありませんでしたls missing加害者の極端な困惑のために...うまくそれを示しました。
フォンブランド2013年

1

面白い。少なくとも空白のみの名前を実行できるようです:

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

1

編集:間違った間違った。

私の場合、ファイル名は空ではなく、印刷不可能な文字で構成されていました。参照:空の名前でファイルをどのように作成しますか?

古い答え

あなたがすべき。方法はわかりませんが、空のファイル名でファイルを作成しました。そこに空白があったのではないかと思います。

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 $

ファイル名に空白が含まれている場合、タブキーを押すと\ ""に置き換えられますが、そうではありませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.