ablog

不器用で落着きのない技術者のメモ

ファイル名で使用可能な文字(UNIX)

UNIX において、ファイル名として使用できない文字は以下の 2つのみである。
"/" (スラッシュ。ASCII コード 0x2F)
\0 (ASCII コードのゼロ)
上記以外の文字、例えば空白・タブ・各種記号 (#$%& など)・コントロールコードなどはすべて使用可能である。

用語集:ファイル制限まとめ: UNIX/Linuxの部屋

知らなかった。ま、知らないことのほうが多いけど。
1 〜 127 の ASCII コードをファイル名に含むファイルを作成してみた。

$ perl -MFcntl -e 'for(0..127){
   $hex=pack("H2",sprintf("%X", $_));sysopen(FH,sprintf("%03d_%s",$_,$hex),O_WRONLY|O_CREAT,0600);}'
$ ls -1B
000_
001_\020
002_ 
003_0
004_@
005_P
006_`
007_p
008_%80
009_%90
010_%A0
011_%B0
012_%C0
013_%D0
014_%E0
015_%F0
016_\020
017_\021
018_\022
019_\023
020_\024
021_\025
022_\026
023_\027
024_\030
025_\031
026_\032
027_\033
028_\034
029_\035
030_\036
031_\037
032_ 
033_!
034_\042
035_#
036_$
037_%
038_&
039_'
040_(
041_)
042_*
043_+
044_,
045_-
046_.
048_0
049_1
050_2
051_3
052_4
053_5
054_6
055_7
056_8
057_9
058_:
059_;
060_<
061_=
062_>
063_?
064_@
065_A
066_B
067_C
068_D
069_E
070_F
071_G
072_H
073_I
074_J
075_K
076_L
077_M
078_N
079_O
080_P
081_Q
082_R
083_S
084_T
085_U
086_V
087_W
088_X
089_Y
090_Z
091_[
092_\134
093_]
094_^
095__
096_`
097_a
098_b
099_c
100_d
101_e
102_f
103_g
104_h
105_i
106_j
107_k
108_l
109_m
110_n
111_o
112_p
113_q
114_r
115_s
116_t
117_u
118_v
119_w
120_x
121_y
122_z
123_{
124_|
125_}
126_~
127_\177