Enviar búsqueda
Cargar
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
•
Descargar como ODP, PDF
•
2 recomendaciones
•
4,514 vistas
University of Tsukuba Linux User Group
Seguir
筑波大学 Linux User Group (つくらぐ) http://www.tsukuba-linux.org/
Leer menos
Leer más
Educación
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 36
Descargar ahora
Recomendados
NetBSD/evbarm (APC9750) への道
NetBSD/evbarm (APC9750) への道
tokudahiroshi
Skype4 pyで遊んでみた
Skype4 pyで遊んでみた
Daijirou Yamada
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
5mingame2
『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆
5mingame2
ac-mozc (kansai-emacs #x09)
ac-mozc (kansai-emacs #x09)
igjit
文字コード基礎論A
文字コード基礎論A
京大 マイコンクラブ
HSPでおいしいスープを飲む方法
HSPでおいしいスープを飲む方法
Hiroaki Murayama
IMのはなし
IMのはなし
stibear (stibear1996)
Recomendados
NetBSD/evbarm (APC9750) への道
NetBSD/evbarm (APC9750) への道
tokudahiroshi
Skype4 pyで遊んでみた
Skype4 pyで遊んでみた
Daijirou Yamada
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
5mingame2
『こなへん』ができるまで ☆リリース直前編☆
『こなへん』ができるまで ☆リリース直前編☆
5mingame2
ac-mozc (kansai-emacs #x09)
ac-mozc (kansai-emacs #x09)
igjit
文字コード基礎論A
文字コード基礎論A
京大 マイコンクラブ
HSPでおいしいスープを飲む方法
HSPでおいしいスープを飲む方法
Hiroaki Murayama
IMのはなし
IMのはなし
stibear (stibear1996)
CUIのツールを1行で Web GUI化する ライブラリを作ってみた
CUIのツールを1行で Web GUI化する ライブラリを作ってみた
xiidec
ac-mozc (kantou-emacs #x01)
ac-mozc (kantou-emacs #x01)
igjit
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
やさしい画像認識教室 ~ゲーム編~
やさしい画像認識教室 ~ゲーム編~
YSRKEN
CD-ROMドライブを身につけよう
CD-ROMドライブを身につけよう
Akira Ouchi
タイル型ウィンドウマネージャのススメ
タイル型ウィンドウマネージャのススメ
Takuto Matsuu
ac-mozc
ac-mozc
igjit
Play frameworkをエヴァンジェる
Play frameworkをエヴァンジェる
ke-m kamekoopa
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
Kazuhito Miura
シェルスクリプトを使って日々の作業を 効率アップする方法と UNIX 文化のあれこれ。
シェルスクリプトを使って日々の作業を 効率アップする方法と UNIX 文化のあれこれ。
Hiromasa Tanaka
資料
資料
Bob_Mk2
終わりを出力するコマンドつくった
終わりを出力するコマンドつくった
xztaityozx
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)
佑 小田垣佑
ハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶ
Yuta Kitagami
Gentoo Linuxの紹介
Gentoo Linuxの紹介
University of Tsukuba Linux User Group
C言語の課題を(エクストリームに)解こう #1
C言語の課題を(エクストリームに)解こう #1
University of Tsukuba Linux User Group
monoqloの麻雀講座
monoqloの麻雀講座
University of Tsukuba Linux User Group
Hello,World Crazy!!
Hello,World Crazy!!
University of Tsukuba Linux User Group
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
University of Tsukuba Linux User Group
linuxで動画キャプチャ。 - 第4回つくらぐ勉強会
linuxで動画キャプチャ。 - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
うぶんちゅ! - 第4回つくらぐ勉強会
うぶんちゅ! - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
Más contenido relacionado
La actualidad más candente
CUIのツールを1行で Web GUI化する ライブラリを作ってみた
CUIのツールを1行で Web GUI化する ライブラリを作ってみた
xiidec
ac-mozc (kantou-emacs #x01)
ac-mozc (kantou-emacs #x01)
igjit
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
Yasumasa Suenaga
やさしい画像認識教室 ~ゲーム編~
やさしい画像認識教室 ~ゲーム編~
YSRKEN
CD-ROMドライブを身につけよう
CD-ROMドライブを身につけよう
Akira Ouchi
タイル型ウィンドウマネージャのススメ
タイル型ウィンドウマネージャのススメ
Takuto Matsuu
ac-mozc
ac-mozc
igjit
La actualidad más candente
(7)
CUIのツールを1行で Web GUI化する ライブラリを作ってみた
CUIのツールを1行で Web GUI化する ライブラリを作ってみた
ac-mozc (kantou-emacs #x01)
ac-mozc (kantou-emacs #x01)
もしも… Javaでヘテロジニアスコアが使えたら…
もしも… Javaでヘテロジニアスコアが使えたら…
やさしい画像認識教室 ~ゲーム編~
やさしい画像認識教室 ~ゲーム編~
CD-ROMドライブを身につけよう
CD-ROMドライブを身につけよう
タイル型ウィンドウマネージャのススメ
タイル型ウィンドウマネージャのススメ
ac-mozc
ac-mozc
Similar a 楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
Play frameworkをエヴァンジェる
Play frameworkをエヴァンジェる
ke-m kamekoopa
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
Kazuhito Miura
シェルスクリプトを使って日々の作業を 効率アップする方法と UNIX 文化のあれこれ。
シェルスクリプトを使って日々の作業を 効率アップする方法と UNIX 文化のあれこれ。
Hiromasa Tanaka
資料
資料
Bob_Mk2
終わりを出力するコマンドつくった
終わりを出力するコマンドつくった
xztaityozx
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)
佑 小田垣佑
ハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶ
Yuta Kitagami
Similar a 楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
(7)
Play frameworkをエヴァンジェる
Play frameworkをエヴァンジェる
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
しゃべれて回れる「小人の執事さん」ったら地獄耳でもあるみたいですよ?(前編)
シェルスクリプトを使って日々の作業を 効率アップする方法と UNIX 文化のあれこれ。
シェルスクリプトを使って日々の作業を 効率アップする方法と UNIX 文化のあれこれ。
資料
資料
終わりを出力するコマンドつくった
終わりを出力するコマンドつくった
デザイナーのためのPHP講座 for WordPress (初級)
デザイナーのためのPHP講座 for WordPress (初級)
ハードウェアを用いてPythonを学ぶ
ハードウェアを用いてPythonを学ぶ
Más de University of Tsukuba Linux User Group
Gentoo Linuxの紹介
Gentoo Linuxの紹介
University of Tsukuba Linux User Group
C言語の課題を(エクストリームに)解こう #1
C言語の課題を(エクストリームに)解こう #1
University of Tsukuba Linux User Group
monoqloの麻雀講座
monoqloの麻雀講座
University of Tsukuba Linux User Group
Hello,World Crazy!!
Hello,World Crazy!!
University of Tsukuba Linux User Group
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
University of Tsukuba Linux User Group
linuxで動画キャプチャ。 - 第4回つくらぐ勉強会
linuxで動画キャプチャ。 - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
うぶんちゅ! - 第4回つくらぐ勉強会
うぶんちゅ! - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
Debug Hacks - 第4回つくらぐ勉強会
Debug Hacks - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
ばっしゅ! (LT) - 第4回つくらぐ勉強会
ばっしゅ! (LT) - 第4回つくらぐ勉強会
University of Tsukuba Linux User Group
Más de University of Tsukuba Linux User Group
(12)
Gentoo Linuxの紹介
Gentoo Linuxの紹介
C言語の課題を(エクストリームに)解こう #1
C言語の課題を(エクストリームに)解こう #1
monoqloの麻雀講座
monoqloの麻雀講座
Hello,World Crazy!!
Hello,World Crazy!!
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
linuxで動画キャプチャ。 - 第4回つくらぐ勉強会
linuxで動画キャプチャ。 - 第4回つくらぐ勉強会
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
うぶんちゅ! - 第4回つくらぐ勉強会
うぶんちゅ! - 第4回つくらぐ勉強会
Debug Hacks - 第4回つくらぐ勉強会
Debug Hacks - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会
ばっしゅ! (LT) - 第4回つくらぐ勉強会
ばっしゅ! (LT) - 第4回つくらぐ勉強会
Último
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
Tokyo Institute of Technology
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ssusere0a682
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ssusere0a682
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
yuitoakatsukijp
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
Takayuki Itoh
Último
(7)
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
1.
楽しいぁゃ ι ぃシェルスクリプト
情報科学 類 1年 中森 亮介
2.
3.
筑波大学情報科学類1年
4.
かつては自称「普通の人」だったが、セキュキャンに参加してハッテンしてしまった人
5.
解析学Ⅰを落とした人orz
6.
Web系。Adobe大好き。りなっくすなんて(ry
7.
コンピュータの面白さをぁゃιく伝える闇の伝道師w
8.
技術?は楽しく!!!!!
9.
時間があればもう少し凝ったプレゼンテーション作りたかった。。。。。。。。
10.
11.
「 Python チュートリアル」を読んでみた。
12.
するとあるところにこんな一文を発見。
13.
” UNIXシェルスクリプトや Windows
バッチファイルを書けば、そうしたタスクの一部はこなせるだろうが、シェルスクリプトはファイルの一部を動き回ってテキストデータを変更するのに適しているのであり、GUIアプリケーションやゲームには、あまり向いていない。”
14.
でも、「あまり向いていない」って「不可能」ではないよね・・・・・
15.
ちょうど opentaka に
しつこく つくらぐに出るようにいわれた
16.
ならそれをネタにしようかな?シェルスクリプトなんてあまりいじらないけど・・・・・・。
17.
18.
制限なしならお好きな言語で作ったプログラムを実行して終わり!なんてことになりかねない
19.
20.
シェルによって動作が異なるものがあるため互換性を考慮しなければならない。どのシェルでも動くようにすることは可能だが面倒。説明する時間もあまりなさそう。
21.
22.
23.
24.
1つ1つのコマンドが組み込みコマンドであるかどうかを知りたいときには、typeコマンドを使えばいい。bashなら。
25.
シェル組み込みコマンド $ type
echo echo is a shell builtin ← 組み込みコマンド $ type lv lv is /usr/bin/lv ← /usr/bin にあるコマンド
26.
27.
*nixといえばやっぱ「アレ」は欠かせないでしょう。しゅしゅぽっぽー。
28.
29.
#!/bin/bash
30.
echo 'Hello'
31.
何か感じませんか?もっとやってみましょう。
32.
33.
全画面表示はできないのかな?
34.
35.
Clear しちゃえばいい
36.
37.
38.
39.
となると画面表示がクリアされるのは「画面表示を消すための命令」が標準出力として端末エミュレータに出力されているからでは?
40.
コマンドライン環境で画面クリアやカーソル移動や文字色変更などの画面操作を行うにはASCIIコードのESC(16進数で0x1bのコード)とそれに続く決められた文字列によるエスケープシーケンスが用いられる
41.
42.
Linuxについてるものは「DEC VT100」とよばれる端末(遠隔操作専用のコンピュータ?大昔は実機を使っていたらしい)とおなじような動きをエミュレーションするようになっている。画面操作につかうエスケープシーケンスも同じ。VT100で検索すればエスケープシーケンス一覧がでてくる。
43.
DEC VT100(VT180)の写真 ウィキペディア日本語版(VT100)より引用
44.
45.
オプションには -a (文字の名前で出力)を使う。
46.
47.
標準出力->odコマンド->端末(これならどんなものが出力されているか見える!)
48.
49.
50.
ESCはbash組み込みのechoでは(バックスラッシュe)であらわせる。
51.
echo '[H[2J'(最後のは余計な改行コードをつけさせないため)と入れてやると、クリアができます。
52.
53.
なぜか文字がそのまま出力された!
54.
Bashのechoはオプションなしではそのまんま出力するようになっている。
55.
-eオプションが必要。これでOK.
56.
57.
アニメができる
58.
実際にやってみた。
59.
60.
sleepコマンド(GNU sleep)を使用している
61.
sleepのかわりにシェル組み込みコマンドで無理やりやる解決法が存在するらしい。
62.
63.
echo "unk" >/dev/null
64.
done
65.
時間のかかる無駄な処理をわざと組み込んで間隔をあける方法。ほかにもバリエーションがたくさん存在する。無理やりすぎる。
66.
67.
カーソル移動をtputで。。。。でもechoもしたいよね?
68.
また od -aを使ってエスケープシーケンスを見つけ出す・・・といいたいところだけど時間的にきついのでVT100のエスケープシーケンス表を使う
69.
終了すると画面が実行前の状態に戻っていない。
70.
->emacsやvimは終了すると元の画面に戻る
71.
72.
x y は画面の左上を基準とした数字を入れる。ただし0から数えるので注意
73.
1行目の3文字目なら
74.
tput cup 0
2でできる。
75.
echo でやるなら
76.
echo -e '[
y ; x H' でできる
77.
echoなら1から数える。そしてxyが逆になっている。これをミスると表示がとんでもないことになる。
78.
79.
スクリーンの中にスクリーンを開くエスケープシーケンスが存在する。それを使えばいい。当然閉じるものもある。あと、スクリーンを閉じたときに元の位置にカーソルを戻さなければならない。カーソル位置を記憶するエスケープシーケンスがあるのでそれを使う。
80.
81.
スクリーンを閉じる ESC [
? 4 7 L
82.
カーソル記憶 ESC 7
83.
記憶した位置に戻す ESC 8
84.
カーソル記憶->スクリーンを開く->スクリーンを閉じる->記憶した位置にカーソルを戻す。
85.
86.
やっぱテ○リス!!!(テトリスは登録商標です)
87.
88.
でもいちいち打つのは面倒
89.
プログラムの最初にシェル関数を定義しておいて、あとのプログラムではそれを使う
90.
91.
でも、ゲームの操作ではエンターなしで受け付けられないと話にならない。
92.
また、シェル上でのキー入力は基本的に画面に出力される(エコーバック)。
93.
しかし、移動したりするたびに移動に割り当てられたキーの文字(例:WASDとか HJKL )が出力されるとやっていられない
94.
よって、エコーバックをオフにする!
95.
あと、カーソルキーでも移動したいよね。
96.
97.
-s -n 1
オプションをつけるだけ。
98.
何度もいうけどBashじゃないとだめです
99.
ちなみにBash以外ではsttyコマンドとddコマンドを組み合わせるらしい。ddコマンドってw
100.
101.
stty echo
でエコーバックをオンにできる
102.
エコーバックをオフにして遊んだ後は必ずオンに戻さないと大変なことになりますwwwwww
103.
sttyコマンドをいたずらには使わないでね。計算機室にログインしっぱなしのマシンがあったりしても触らないように。
104.
105.
「rm -rf *」なんかを無意識に入力していたりしていたりして。当然見た目にはわからないから気づかない。いたずらには使わないでね。
106.
終了シェル関数を作ってちゃんと終了処理を実装してやれば問題ない。と、いいたいところだけどCtrl-Cされたらどうなることやら・・・・・・・・。
107.
108.
trap ’’ INT で無視できる。bashなら。ほかのも同じようにできる。’’にコマンドを入れればその中のコマンドを実行させることもできる。何も入れなければ何もしない。まとめて指定することもできる。
109.
ただし「KILLシグナル」は無効化できないので。どういうときにKILLが使われるかはご想像のとおりです。強制終了を無効化するとまずい。
110.
111.
↑ ESC
[ A
112.
↓ ESC
[ B
113.
-> ESC
[ C
114.
← ESC
[ D
115.
エスケープシーケンス全部を判別に使う方法もあるけど、違うのは最後の1文字だけ。ABCDだけで判別できそう。その方法を使うとWASD移動との両立ができなくなっちゃうけど・・・。まーいっか。簡単に済むし。
116.
117.
でもほかのコマンドを組み合わせて使いやすくする本来の使い方をするときに無味乾燥な端末に彩を添えることができるかも知れません。
118.
でもわざわざシェルスクリプトを使う意味はあるの?
119.
多分ない。でも、シェルスクリプトが使えない環境はまず存在しないのでどこでもぁゃιぃものを表示することができる。
120.
ご清聴ありがとうございました。
Notas del editor
Sh ボーンシェル Echoがちがう ランダムな数値を出すのも
slコマンド
AAはkim.shを起動
Clear | od-a