さて、今日もワンコインVPNのServersMan@VPSでお遊び。
ls コマンド結果のファイル一覧が順番に並ばない
のでちょっと調べてみた。
「ファイルが順番に並ばない」ってのは、lsコマンドの結果で「.」から始まるファイルとそれ以外のファイルが順番ばらばらで混ざって表示されている状態。いままで慣れていたのは、小文字大文字を見分けて、名前順(アルファベット順)に並ぶもの。「.」から始まる隠しファイルは一番最初に表示されていた。
ちなみに現状はこんな感じ。
[root@trippyboy ~]# touch apple ←ファイル「apple」を作成 [root@trippyboy ~]# touch nipple ←ファイル「nipple」を作成 [root@trippyboy ~]# touch shippo ←ファイル「shippo」を作成 [root@trippyboy ~]# ls -la ←隠しファイルを含めて一覧表示 total 60 drwx------ 4 trippyboy trippyboy 4096 Jul 1 15:40 . drwxr-xr-x 5 root root 4096 Jun 30 14:12 .. -rw-r--r-- 1 root root 0 Jul 1 15:40 apple -rw------- 1 trippyboy trippyboy 10689 Jul 1 15:38 .bash_history -rw-r--r-- 1 trippyboy trippyboy 33 Jun 25 23:45 .bash_logout -rw-r--r-- 1 trippyboy trippyboy 176 Jun 25 23:45 .bash_profile -rw-r--r-- 1 trippyboy trippyboy 240 Jun 26 19:32 .bashrc -rw------- 1 trippyboy trippyboy 274 Jul 1 09:41 .lesshst drwx------ 8 trippyboy trippyboy 4096 Jul 1 10:23 Maildir -rw------- 1 root root 1208 Jun 29 12:35 .mysql_history -rw-r--r-- 1 root root 0 Jul 1 15:40 nipple -rw------- 1 trippyboy trippyboy 1024 Jun 26 23:08 .rnd -rw-r--r-- 1 root root 0 Jul 1 15:40 shippo drwx------ 2 trippyboy trippyboy 4096 Jun 28 21:57 .ssh -rw------- 1 trippyboy trippyboy 8149 Jul 1 10:55 .viminfo [root@trippyboy ~]#
「.」から始まるファイルも混ざって一覧表示されている・・・ なぜだ!!!
ちなみに大文字小文字も検証してみた。
[root@trippyboy ~]# touch Aa [root@trippyboy ~]# touch Apple [root@trippyboy ~]# touch aa [root@trippyboy ~]# ls -al total 60 drwx------ 4 trippyboy trippyboy 4096 Jul 1 15:41 . drwxr-xr-x 5 root root 4096 Jun 30 14:12 .. -rw-r--r-- 1 root root 0 Jul 1 15:41 aa -rw-r--r-- 1 root root 0 Jul 1 15:41 Aa -rw-r--r-- 1 root root 0 Jul 1 15:40 apple -rw-r--r-- 1 root root 0 Jul 1 15:41 Apple -rw------- 1 trippyboy trippyboy 10689 Jul 1 15:38 .bash_history -rw-r--r-- 1 trippyboy trippyboy 33 Jun 25 23:45 .bash_logout -rw-r--r-- 1 trippyboy trippyboy 176 Jun 25 23:45 .bash_profile -rw-r--r-- 1 trippyboy trippyboy 240 Jun 26 19:32 .bashrc -rw------- 1 trippyboy trippyboy 274 Jul 1 09:41 .lesshst drwx------ 8 trippyboy trippyboy 4096 Jul 1 10:23 Maildir -rw------- 1 root root 1208 Jun 29 12:35 .mysql_history -rw-r--r-- 1 root root 0 Jul 1 15:40 nipple -rw------- 1 trippyboy trippyboy 1024 Jun 26 23:08 .rnd -rw-r--r-- 1 root root 0 Jul 1 15:40 shippo drwx------ 2 trippyboy trippyboy 4096 Jun 28 21:57 .ssh -rw------- 1 trippyboy trippyboy 8149 Jul 1 10:55 .viminfo
うん。とても気持ちが悪いですね・・・・
そこで、 「strace」コマンドを使ってlsコマンドの動作をトレースしてみました!!
# strace -o ./strace-ls -f /bin/ls ←straceコマンドで/bin/lsをトレースし、その結果を strace-ls に吐き出す。 # grep open strace-ls ←トレースの結果から「open」を含む行を表示
上記の結果がこちら↓
[root@trippyboy ~]# grep open strace-ls 50311 open(“/etc/ld.so.cache”, O_RDONLY) = 3 50311 open(“/lib/librt.so.1″, O_RDONLY) = 3 50311 open(“/lib/libacl.so.1″, O_RDONLY) = 3 50311 open(“/lib/libselinux.so.1″, O_RDONLY) = 3 50311 open(“/lib/libc.so.6″, O_RDONLY) = 3 50311 open(“/lib/libpthread.so.0″, O_RDONLY) = 3 50311 open(“/lib/libattr.so.1″, O_RDONLY) = 3 50311 open(“/lib/libdl.so.2″, O_RDONLY) = 3 50311 open(“/lib/libsepol.so.1″, O_RDONLY) = 3 50311 open(“/etc/selinux/config”, O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory) 50311 open(“/proc/mounts”, O_RDONLY|O_LARGEFILE) = 3 50311 open(“/usr/lib/locale/locale-archive”, O_RDONLY|O_LARGEFILE) = 3 50311 open(“/usr/share/locale/locale.alias”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_IDENTIFICATION”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION”, O_RDONLY) = 3 50311 open(“/usr/lib/gconv/gconv-modules.cache”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_MEASUREMENT”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_MEASUREMENT”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_TELEPHONE”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_TELEPHONE”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_ADDRESS”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_ADDRESS”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_NAME”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_NAME”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_PAPER”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_PAPER”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_MESSAGES”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_MESSAGES”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_MONETARY”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_MONETARY”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_COLLATE”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_COLLATE”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_TIME”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_TIME”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_NUMERIC”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_NUMERIC”, O_RDONLY) = 3 50311 open(“/usr/lib/locale/en_US.UTF-8/LC_CTYPE”, O_RDONLY) = -1 ENOENT (No such file or directory) 50311 open(“/usr/lib/locale/en_US.utf8/LC_CTYPE”, O_RDONLY) = 3 50311 open(“.”, O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3 [root@trippyboy ~]#
どうやらlocaleを読んでいるらしい。 ふむふむ。
現状のlocaleはこ ちら↓
[root@trippyboy ~]# locale LANG=en_US.UTF-8 LC_CTYPE=”en_US.UTF-8″ LC_NUMERIC=”en_US.UTF-8″ LC_TIME=”en_US.UTF-8″ LC_COLLATE=”en_US.UTF-8″ LC_MONETARY=”en_US.UTF-8″ LC_MESSAGES=”en_US.UTF-8″ LC_PAPER=”en_US.UTF-8″ LC_NAME=”en_US.UTF-8″ LC_ADDRESS=”en_US.UTF-8″ LC_TELEPHONE=”en_US.UTF-8″ LC_MEASUREMENT=”en_US.UTF-8″ LC_IDENTIFICATION=”en_US.UTF-8″ LC_ALL= [root@trippyboy ~]#
ためしにlocaleをCにしてみる。
[root@trippyboy ~]# LANG=C [root@trippyboy ~]# [root@trippyboy ~]# locale LANG=C LC_CTYPE=”C” LC_NUMERIC=”C” LC_TIME=”C” LC_COLLATE=”C” LC_MONETARY=”C” LC_MESSAGES=”C” LC_PAPER=”C” LC_NAME=”C” LC_ADDRESS=”C” LC_TELEPHONE=”C” LC_MEASUREMENT=”C” LC_IDENTIFICATION=”C” LC_ALL= [root@trippyboy ~]#
で、ls -la実行!
drwx------ 4 trippyboy trippyboy 4096 Jul 1 15:44 . drwxr-xr-x 5 root root 4096 Jun 30 14:12 .. -rw------- 1 trippyboy trippyboy 10689 Jul 1 15:38 .bash_history -rw-r--r-- 1 trippyboy trippyboy 33 Jun 25 23:45 .bash_logout -rw-r--r-- 1 trippyboy trippyboy 176 Jun 25 23:45 .bash_profile -rw-r--r-- 1 trippyboy trippyboy 240 Jun 26 19:32 .bashrc -rw------- 1 trippyboy trippyboy 274 Jul 1 09:41 .lesshst -rw------- 1 root root 1208 Jun 29 12:35 .mysql_history -rw------- 1 trippyboy trippyboy 1024 Jun 26 23:08 .rnd drwx------ 2 trippyboy trippyboy 4096 Jun 28 21:57 .ssh -rw------- 1 trippyboy trippyboy 8149 Jul 1 10:55 .viminfo -rw-r--r-- 1 root root 0 Jul 1 15:41 Aa -rw-r--r-- 1 root root 0 Jul 1 15:41 Apple drwx------ 8 trippyboy trippyboy 4096 Jul 1 10:23 Maildir -rw-r--r-- 1 root root 0 Jul 1 15:41 aa -rw-r--r-- 1 root root 0 Jul 1 15:40 apple -rw-r--r-- 1 root root 0 Jul 1 15:40 nipple -rw-r--r-- 1 root root 0 Jul 1 15:40 shippo -rw-r--r-- 1 root root 12446 Jul 1 15:44 strace-ls [root@trippyboy ~]#
これでとても気持ちが良いw
ちなみに/etc/sysconfig/i18n を変更しておくと起動時に読み取ってくれるよ
でも、この設定嫌いじゃないから自分は原因が分れば、それでいいっかな~
ファイルが順番に並ばない理由はlocaleにあったのでした。
めでたしめでたし
コメント