Mais conteúdo relacionado
Semelhante a シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」 (20)
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
- 3. 自己紹介
「日本 GNU AWK ユーザー会」会長
http://gauc.no-ip.org/awk-users-jp/
hi_saito@yk.rim.or.jp
@hi_saito
USP Magazine, Codezine に連載中
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 3 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
2 日間、よろしくお願いします
- 4. 勉強会で重要なこと
質問しよう
積極的に質問をしてください
振り返ろう
手を動かして実際に試そう
大したことないことを分かろう
自分もいつかは講師をしよう
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 4 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
特に難しいことは話しません
- 5. 他の講義とダブる?
それは基本だからです
それは重要だからです
それは間違えやすいからです
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 5 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
単に整合が取れていない言い訳かもしれません
- 7. シェル芸とは?
シェル芸とは、現代においてもっとも過激と
目される CLI ワンライナー原理主義の一派。
武田久美子を教祖とし、夏になると信者は女
も男も老いも若きも貝がらビキニで海辺を
ホーミタイする危険な思想である。
アンサイクロペディア
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 7 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
ネタが古くて 30 代後半でないと分からない上、違います!
- 10. 今回のテーマはファイル
ファイルを拡張子で判断しない
file コマンドが便利です
ファイルのコピーや移動はどうすれば良いか
実行前に確認できるようにする
ファイルから必要な部分だけを抜き出す
HTML, XML の扱いはどうすれば良いか
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 10 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
今までのシェル芸勉強会にないネタです
- 11. 重要なこと
できなくても構いません
得意、不得意があります
答えが違っても構いません
TIMTOWTDI の精神でやりましょう
手を動かしてください
頭ではなく手を動かしてください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 11 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
頭もフル活用してください
- 13. 問題のツリー
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 13 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
できれば、CLI でお願いします
jus_sample/
+--- all/
| +--- test_01.jpg
| +--- test_02.jpg
| +--- test_01.png
| +--- test_02.png
| +--- test_01.txt
| +--- test_02.txt
| +--- test_01.html
| +--- test_02.html
+--- images/
+--- text/
+--- thumbnail/
List: 問題のディレクトリ構造
確認してください
- 15. 問題 1
画像ファイルだけを images/ ディレクトリに
移動してください
拡張子だけで判断しないでください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 15 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
- 16. 解答例 1
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 16 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find -type f |
xargs file |
grep 'image' |
awk -F':' '{print $1, $1}' |
awk '{sub(/all/, "images", $2); print $0}' |
awk '{print "mv " $0}' |
sh
List: 解答例 1
xargs コマンドの使い方を知ろう
file コマンドでファイル種類を判別
確認後に最後に Shell に渡して実行
Demo
- 17. 問題 2
テキストファイルだけを text/ ディレクトリ
にコピーしてください
拡張子だけで判断しないでください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 17 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
- 18. 解答例 2
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 18 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find -type f |
xargs file |
grep 'text' |
awk -F':' '{print $1, $1}' |
awk '{sub(/all/, "text", $2); print $0}' |
awk '{print "cp " $0}' |
sh
List: 解答例 2
xargs コマンドの使い方を知ろう
file コマンドでファイル種類を判別
確認後に最後に Shell に渡して実行
Demo
- 19. 問題 3
画像を 32 x 32 ピクセル PNG 形式に変換して
thumbnail/ ディレクトリに作成してくださ
い
拡張子だけで判断しないでください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 19 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
- 20. 解答例 3
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 20 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find images/ -type f |
awk '{print $1, $1}' |
sed 's: images: thumbnail:' |
sed 's:^:convert -geometry 32x32! :' |
sed 's:$:.png:' |
sh
List: 解答例 3
sed の区切りは "/" ではなく、":" が便利
確認後に最後に Shell に渡して実行
Demo
- 21. 問題 4
test_01.html, test_02.html のタイトルを
抜き出してください
改行の有無をどうするかがポイントです
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 21 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
- 22. 解答例 4
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 22 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find text/ -type f |
xargs file |
grep 'HTML' |
awk -F':' '{print $1}' |
xargs -n 1 cat |
tr -d 'n' |
grep -Eoi '<title>[^<]+</title>' |
sed -r 's:</?[^>]+>::g'
List: 解答例 4
XML, HTML は一旦改行を正しく付け直す
sed の区切りは "/" ではなく、":" が便利
Demo
- 23. 問題 5
test_01.html, test_02.html の HTML タ
グを削除してください
改行の有無をどうするかがポイントです
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 23 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
- 24. 解答例 5
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 24 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find text/ -type f |
xargs file |
grep 'HTML' |
awk -F':' '{print $1}' |
xargs sed -r 's:</?[^>]+>::g' |
awk 'NF'
List: 解答例 5
sed での最小一致を学ぼう
sed の区切りは "/" ではなく、":" が便利
余計な改行は AWK で削除
Demo
- 25. 問題 6
できあがった階層構造をツリー表示してくだ
さい
tree コマンドは使用禁止です
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 25 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
- 26. 解答例 6
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 26 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ find |
sort |
tr '/' ' ' |
sed -r 's:[^ ]+[ ]: +--- :g' |
sed -r 's:--- : :g' |
sed -r 's:[ ]+[ ]: | :g'
List: 解答例 6
sed は GNU 拡張が便利
Demo
- 27. 問題 X
以下の住所を横書きで TTF 化してください
鳥取県鳥取市,若葉台北1-1-1,鳥取環境大学
いわゆる宛名書きです
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 27 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
- 28. 解答例 X
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 28 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ echo '鳥取県鳥取市,若葉台北1-1-1,鳥取環境 大学' |
sed 's:$:様:' |
tr ',' 'n' |
convert -pointsize 40 -font aoyagikouzanfont2.ttf
label:@- jusyo.png
List: 解答例 X
覚える必要はありません。
Demo
- 29. 問題 XX
以下の住所を縦書きで TTF 化してください
鳥取県鳥取市,若葉台北1-1-1,鳥取環境大学
いわゆる宛名書きです
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 29 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
- 30. 解答例 XX
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWK ユーザー会 斉藤 @hi_saito - 30 -
2014 年 12 月 13, 14 日
シェルスクリプトワークショップ
@鳥取環境大学
$ echo '鳥取県鳥取市,若葉台北1-1-1,鳥取環境 大学' |
sed 's:$:様:' |
tr ',' 'n' |
tac |
xargs -n1 -I% sh -c '
echo "%" |
grep -o '.' |
convert -pointsize 40 -font sazanami-mincho.ttf
label:@- miff:-'
|
convert - +append jusyo.png
List: 解答例 XX
覚える必要はありません。
Demo