ログインシェルを抜き出す シェルスクリプトメモ(2)
特に、ログインシェルを抜き出して何かしたいわけじゃないけど、シェルスクリプトのメモとして残しておく。
実際にやってるのは、「ファイル中の各行を指定したセパレータでトークンに分解してやって、n番目のトークンを取り出す」という処理。
Perl や Ruby で書いてもよいけど、もっと簡単なのが cut コマンドを使った方法。以下のようにすると、cut コマンドがコロン「:」で各行をトークンに切って、そのトークンの内の7番目を表示してくれる。
$ cut -d':' -f7 /etc/passwd /bin/bash /bin/bash /bin/bash /bin/bash
こうして取り出したログインシェルをsortで並べかえて、使われているコマンドの頻度を調べたり、
$ cut -d':' -f7 /etc/passwd | uniq -c | sort -nr 4 /bin/bash 2
パイプ経由で xargs ls -lに流しこんで、想定しているコマンドが存在するか、パーミッション等は大丈夫かといった点を確認したり、
$ cut -d':' -f7 /etc/passwd | xargs.exe ls -l
といったこともできる。