fifoやdeviceはtestコマンド的にはfileではない
少なくとも普通ではないので、-fでは判定できないようだ。
bashだと、-cでキャラクタデバイス、-pでfifoで判定できるみたい。
有無判定だけでいいなら-eでもいいかな。
-b [file] ファイルがブロックデバイスのとき真。 -c [file] ファイルがキャラクタデバイスのとき真。 -d [file] ファイルがディレクトリのとき真。 -e [file] 指定したファイルが存在するとき真。 -f [file] ファイルがノーマルファイルのとき真。 -g [file] ファイルのセットGIDビットが立っているとき真。 -h [file] ファイルがシンボリックリンクのとき真。 -k [file] ファイルのstickyビットが立っているとき真。 -L [file] ファイルがシンボリックリンクのとき真。 -p [file] ファイルが名前付きパイプ(FIFO)のとき真。 -r [file] ファイルが読み出し可能のとき真。 -S [file] 指定したファイルがソケットのとき真。 -s [file] ファイルの長さが1バイト以上あるとき真。 -u [file] ファイルのセットUIDビットが立っているとき真。 -w [file] ファイルが書き込み可能のとき真。 -x [file] ファイルが実行可能のとき真。
deviceやfifoなんて、testしないから知らなかったよ。