bashでunixで使えない文字を探してみる
bashでunixで使えない文字を探してみる
まあ、「/」なのは明らかなんだけど…つい組んでみたかった。
結論。「/」を含むファイル名と 「.」と「..」が使えない。(と、思う)
注意。これを実験する時には 「--」とか消すのがめんどいので別途ディレクトリを掘っておいた方がいい。
$ for i in {33..126} ; do j="" ;j=`printf "%02x" $i` ; k=`printf "\x$j"`; echo -n "$k"; : > "$k" ; done;echo !"#$%&'()*+,-.bash: .: Is a directory /bash: /: Is a directory 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ $ ls ! % ) - 3 7 ; ? C G K O S W [ _ c g k o s w { " & * 0 4 8 < @ D H L P T X \ ` d h l p t x | # ' + 1 5 9 = A E I M Q U Y ] a e i m q u y } $ ( , 2 6 : > B F J N R V Z ^ b f j n r v z ~
そうか、一文字だと「.」はだめだわな。
じゃあ、繰り返しだと「..」がだめか。
$ for i in {33..126} ; do j="" ;j=`printf "%02x" $i` ; k=`printf "\x$j"`; echo -n "$k"; : > "$k$k" ; done;echo !"#$%&'()*+,-.bash: ..: Is a directory /bash: //: Is a directory 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ $ ls !! && ++ 22 77 << AA FF KK PP UU ZZ __ dd ii nn ss xx }} "" '' ,, 33 88 == BB GG LL QQ VV [[ `` ee jj oo tt yy ~~ ## (( -- 44 99 >> CC HH MM RR WW \\ aa ff kk pp uu zz $$ )) 00 55 :: ?? DD II NN SS XX ]] bb gg ll qq vv {{ %% ** 11 66 ;; @@ EE JJ OO TT YY ^^ cc hh mm rr ww ||
3文字でも「...」はだめだ…なぜだろう。
$ for i in {33..126} ; do j="" ;j=`printf "%02x" $i` ; k=`printf "\x$j"`; : > "$k$k$k" ; done;echo bash: ///: Is a directory $ ls !!! ''' -- 444 ::: @@@ FFF LLL RRR XXX ^^^ ddd jjj ppp vvv ||| """ ((( --- 555 ;;; AAA GGG MMM SSS YYY ___ eee kkk qqq www }}} ### ))) 000 666 <<< BBB HHH NNN TTT ZZZ ``` fff lll rrr xxx ~~~ $$$ *** 111 777 === CCC III OOO UUU [[[ aaa ggg mmm sss yyy %%% +++ 222 888 >>> DDD JJJ PPP VVV \\\ bbb hhh nnn ttt zzz &&& ,,, 333 999 ??? EEE KKK QQQ WWW ]]] ccc iii ooo uuu {{{
ををっ。なぜだこれ。はじめて知った。
$ touch ..ab $ ls $
とおもったら ls -aしわすれてた。(笑
$ ls -a . .. ... .... ..a ..ab
めでたし、めでたし。