USP友の会「4月13日、渋谷でシェル芸勉強会」の予習をしたい方向け

■USP友の会、「413日、渋谷でシェル芸勉強会」の予習をしたい方向け
 定員70名に拡大したらしい。

 第4回春爛漫シェル芸人撩乱勉強会&第22回勝手に新歓定例会
 http://kokucheese.com/event/index/78710/

■出題範囲が出てます。

$ w3m -dump http://www.usptomo.com/PAGE=20130315Ugrep -A 8 "出題範囲"
 出題範囲(予定)は、だいたいこんな感じです。
AWK
sed
grep
tr
w3m
curl
wget

■さっそくAWKが大文字ですね。
 以下で分かるとおり、言語としてはAWK、コマンドとしてはawkです。

$ man awk | grep -A 2 ^DESC
DESCRIPTION
       Gawk  is  the  GNU Project’s implementation of the AWK programming lan‐
       guage.  It conforms to the definition of  the  language  in  the  POSIX

■各コマンドの一行説明を出しましょう。

$ echo "
AWK
sed
grep
tr
w3m
curl
wget" | tr '[A-Z]' '[a-z]' | \
  for list in `xargs`;do apropos `echo "$list" | sed s/^/"\^"/ | sed s/"\$"/"\\\\$"/` ;done
awk (1)              - pattern scanning and processing language
sed (1)              - stream editor for filtering and transforming text
grep (1)             - print lines matching a pattern
tr (1)               - translate or delete characters
w3m (1)              - text base pager/WWW browser
curl (1)             - transfer a URL
wget (1)             - wget.info

■バージョンを確認しましょう。

$ echo "
AWK
sed
grep
tr
w3m
curl
wget" | tr '[A-Z]' '[a-z]' | \
  for list in `xargs`;do \
    echo "[$list]"; 
    if [ "$list" == "w3m" ];then \
      env LANG=C "$list" -version | grep -i ver; \
    else 
      env LANG=C "$list" --version | grep -i "ver\|$list.*[0-9]" ; \
    fi; \
  done | grep -v "License" | sed s/", options\|) lib\|verify,"/"&\n"/g
[awk]
GNU Awk 3.1.7
(at your option) any later version.
[sed]
GNU sed version 4.2.1
[grep]
GNU grep 2.6.3
[tr]
tr (GNU coreutils) 8.5
[w3m]
w3m version w3m/0.5.2+cvs-1.1027, options
 lang=en,m17n,image,color,ansi-color,mouse,gpm,menu,cookie,ssl,ssl-verify,
external-uri-loader,w3mmailer,nntp,gopher,ipv6,alarm,mark,migemo
[curl]
curl 7.21.0 (i486-pc-linux-gnu) lib
curl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
[wget]
GNU Wget 1.12 built on linux-gnu.

■コマンドパスを確認しましょう。

$ echo "
AWK
sed
grep
tr
w3m
curl
wget" | tr '[A-Z]' '[a-z]' |   for list in `xargs`;do whereis -b "$list";done
awk: /usr/bin/awk /usr/lib/awk /usr/share/awk
sed: /bin/sed
grep: /bin/grep
tr: /usr/bin/tr
w3m: /usr/bin/w3m /etc/w3m /usr/lib/w3m /usr/share/w3m
curl: /usr/bin/curl
wget: /usr/bin/wget

■上記にシンボリックリンクは含まれていないか確認しましょう。

$ echo "
AWK
sed
grep
tr
w3m
curl
wget" | tr '[A-Z]' '[a-z]' | \
  for list in `xargs`;do whereis -b "$list";done | awk -F\: '{print $2}' | sed s/" "/"\n"/g | grep bin | ls -l `xargs`
-rwxr-xr-x 1 root root  104628 2010-04-22 10:22 /bin/grep
-rwxr-xr-x 1 root root   52996 2010-04-18 14:53 /bin/sed
lrwxrwxrwx 1 root root      21 2013-03-02 05:10 /usr/bin/awk -> /etc/alternatives/awk
-rwxr-xr-x 1 root root  116732 2012-03-31 22:01 /usr/bin/curl
-rwxr-xr-x 1 root root   36708 2010-04-28 10:36 /usr/bin/tr
-rwxr-xr-x 1 root root 1193060 2010-08-05 22:58 /usr/bin/w3m
-rwxr-xr-x 1 root root  329488 2010-09-05 22:43 /usr/bin/wget

■awkはgawkにシンボリックリンクされています。
 「man awk」の際に「gawk」の説明が出る理由が分かりました。

$ ls -l /etc/alternatives/awk
lrwxrwxrwx 1 root root 13 2013-03-02 05:10 /etc/alternatives/awk -> /usr/bin/gawk

■IBM developerWorksを参照しよう。
 「参考文献」や更に詳しく「学ぶために」にある通り、
 「man」を参照する、ソースを見る等、ステップアップに関する情報もあります。

 共通テーマ: 実例でわかる awk: 第 1 回
 http://www.ibm.com/developerworks/jp/linux/library/l-awk1/

 共通テーマ: 実例でわかる awk: 第 2 回
 http://www.ibm.com/developerworks/jp/linux/library/l-awk2/

 共通テーマ: 実例でわかる awk: 第 3 回
 http://www.ibm.com/developerworks/jp/linux/library/l-awk3/index.html

 共通テーマ: 実例でわかるsed: 第1回
 http://www.ibm.com/developerworks/jp/linux/library/l-sed1/

 共通テーマ: 実例でわかる sed: 第 2 回
 http://www.ibm.com/developerworks/jp/linux/library/l-sed2/

 共通テーマ: 実例でわかるsed: 第3回
 http://www.ibm.com/developerworks/jp/linux/library/l-sed3/

 Linux テキスト・ユーティティーでデータ抽出を簡易化する
 http://www.ibm.com/developerworks/jp/linux/library/l-textutils/index.html

 Linux の 101 試験対策: 正規表現を使用したテキスト・ファイルの検索
 http://www.ibm.com/developerworks/jp/linux/library/l-lpic1-v3-103-7/

 ヒント: trを使ってファイルをフィルターにかける
 http://www.ibm.com/developerworks/jp/linux/library/l-tiptex5/index.html

 cURL と libcurl を使ってインターネット経由でやりとりする
 http://www.ibm.com/developerworks/jp/opensource/library/os-curl/index.html

 RPM を使ってソフトウェアをパッケージ化する: 第 1 回 パッケージのビルドと配布
 http://www.ibm.com/developerworks/jp/linux/library/l-rpm1/

 Linux のコマンドラインから Twitter と FriendFeed の更新を行う
 http://www.ibm.com/developerworks/jp/linux/library/l-friendfeed/index.html

■残念ながら、上記ではw3mの説明が無いので「w3m HomePage」を参照しましょう。

 w3mとは?
 http://w3m.sourceforge.net/index.ja.html

■CentOSのいずれかのバージョンではw3mやwgetをコンパイルした記憶があります。
 CentOS4の方はw3mのコンパイルが必要かも知れません。
 DebianにはLenny/Squeeze/Wheezy/Sidのいずれにもあります。

$ echo /home/labunix/cifs/centos* | \
  for list in `xargs`;do \
    echo -n "$list," | sed s%".*/"%%g ; \
    sudo chroot "$list" rpm -qa | grep "wget\|w3m" | awk '{print $1}' | sort | xargs echo -n | sed s/" "/","/g ;echo ; \
  done | awk -F\, '{printf "%-8s%30s%30s\n",$1,$2,$3}'
centos4          wget-1.10.2-1.el4_8.1
centos5               w3m-0.5.1-18.el5         wget-1.11.4-3.el5_8.2
centos6          w3m-0.5.2-16.el6.i686        wget-1.12-1.8.el6.i686

$ echo /home/labunix/cifs/[lsw]* |   for list in `xargs`;do \
    echo -n "$list," | sed s%".*/"%%g ; \
    sudo chroot "$list" dpkg -l | grep "wget\|w3m" | awk '{print $2","$3}' | xargs echo -n | sed s/" "/","/g;echo ; \
  done | awk -F\, '{printf "%-8s%5s%20s%5s%20s\n",$1,$2,$3,$4,$5}'
lenny     w3m      0.5.2-2+lenny1 wget     1.11.4-2+lenny2
sid       w3m             0.5.3-8 wget              1.14-1
squeeze   w3m             0.5.2-9 wget            1.12-2.1
wheezy    w3m             0.5.3-8 wget            1.13.4-3

■最小インストールでは含まれていない可能性もありますので、
 ご確認、インストールの上、参加しましょう。