UNIX において、ファイル名として使用できない文字は以下の 2つのみである。
用語集:ファイル制限まとめ: UNIX/Linuxの部屋
"/" (スラッシュ。ASCII コード 0x2F)
\0 (ASCII コードのゼロ)
上記以外の文字、例えば空白・タブ・各種記号 (#$%& など)・コントロールコードなどはすべて使用可能である。
知らなかった。ま、知らないことのほうが多いけど。
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