某所で ls に関する話題が出たので、つい awk で ls を作ってみました。 gawk には filefuncs という共有オフジェクトがあり、これをロードすることでファイル情報を取得できることから、ls -l のようなものを作ってみます。 この filefuncs を使うことでファイルの情報を簡単かつ高速に取得することができます。 ただし、UID と GID のままでも良いのですが、ここでは /etc/passwd と /etc/group からユーザー名とグループ名を見てます。 実際のコードは以下のようになります。 #! /bin/gawk -f # ls.awk @load "filefuncs" BEGIN { passwd = "/etc/passwd"; group = "/etc/group"; FS = ":"; while (getline < passwd > 0)