拡張 POSIX シェルスクリプト Advent Calendar 2013、25日目の記事です。 最終日です。ネタが尽きました。
本当にネタがないので、 最後は私の集大成…でもないですがそこそこ頑張って作ったシェルスクリプト、 「>突然の死<ジェネレーター」を紹介して締めたいと思います。 Twitter で私をフォローされている方はもうご存知ですね。 既に 2013年5月ごろにツイートした作品です。新ネタでなくすみません。
>突然の死<ジェネレーターとは?
あなたの端末に>突然の死<を提供するイカしたスクリプトです。
名前は echo-sd
と言います。
「echo」は echo
コマンドのそれです。「sd」は「sudden death」です。
そのまんまですね。
…何のことやらさっぱりですか? そうですね。実際にお見せしましょう。
$ echo-sd
_人人人人人人_
> 突然の死 <
 ̄Y^Y^Y^Y^Y^Y ̄
どうです? 便利でしょう? ツイート機能も付いてますよ!! CGI でも動きますよ!!!! ほかにも色々!!!!!!!!!
- 開発ページ
- ダウンロード
- CGI デモ
要件
- bash 4.0 以降、ksh 93u 以降、zsh 4.3 以降のいずれかが必要です。
- Mac OS X のように bash が古い環境であっても zsh がインストールされていれば自動でフォールバックします。
- Windows (Cygwin) にも対応しています。
- ツイートするには OpenSSL の
openssl
(1) コマンドが必要です。
インストール
適当にダウンロードして適当なディレクトリにインストールしてください。
$ wget -nv https://raw.githubusercontent.com/fumiyas/home-commands/master/echo-sd
$ sudo install -m 0755 echo-sd /usr/local/bin/echo-sd
$ rm echo-sd
Homebrew には tap、fumiyas/echo-sd
を用意してあります。
$ brew tap fumiyas/echo-sd
$ brew install echo-sd
セットアップ
ツイートしたい場合は事前にセットアップが必要です。 必要なければ飛ばしてください。
echo-sd --tweet
(または echo-sd -t
)
を実行すると、次のようなメッセージが表示されます。
適当な英語で何やら書かれていますが、要は「Twitter にアクセスするための OAuth
トークンが設定されていません。WWW ブラウザーを起動するので Twitter
にログインして PIN コードを取得してください。」ということです。
$ echo-sd --tweet
No OAuth access token and/or secret for Twitter access configured.
I'll open Twitter site by a WWW browser to get OAuth access token
and secret. Please authorize this application and get a PIN code
on Twitter site.
Press Enter key to open Twitter site...
Enter キーを押すと WWW ブラウザーが起動し、Twitter のページが開きます。
echo-sd
があなたの Twitter アカウントの利用を求めており、
それを許可すべきかを問う画面です。
内容をよく読み、よければ Twitter アカウントのユーザー名とパスワードを入力し、
「連携アプリを認証」ボタンを押してください。
「連携アプリを認証」ボタンを押すと PIN コード (数字の列) が表示されます。 これを控えてください。
echo-sd --tweet
を実行した画面に戻ります。
Enter PIN code:
(PIN コードを入力してください) と表示されていると思います。
ここに先ほどの PIN コードを入力して Enter キーを押します。
…
Press Enter key to open Twitter site...
Enter PIN code: PIN コードを入力して Enter キーを押す
Saving OAuth consumer key and secret into /home/fumiyas/.echo-sd.conf...
Saving OAuth access token and secret into /home/fumiyas/.echo-sd.conf...
これでセットアップは完了です。
ホームディレクトリ下の .echo-sd.conf
ファイルに秘密の情報が保存されます。
これが漏れるとあなたのアカウントでツイートしたり TL を覗けてしまうので、
取り扱いに注意してください。
$ cat ~/.echo-sd.conf
oauth_consumer_key='XXXXXXXXXXXX'
oauth_consumer_secret='XXXXXXXXXXXXXXXXXXXXXXXXXX'
oauth_access_token='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
oauth_access_token_secret='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
使い方
$ echo-sd [オプション]... [台詞]...
適当に台詞(せりふ)を与えるとそれを表示します。これだけ。簡単ですね!
オプション
--help
- 使い方を表示します。
-v
(--vertical
)- 台詞を縦書きにします。既定値は横書きです。
-t
(--tweet
)- ツイートします。
- 140文字を超える場合はエラーになりツイートしません。
-h ヘッダー
(--header ヘッダー
)-f フッター
(--footer フッター
)- 指定されたヘッダー/フッターを表示します。
-s
(--read-stdin
)- 台詞を標準入力から取得します。
--tanzaku
- 短冊を表示します。
--stress
- ストレスが発生する過程を表示します。
--stream
- ストリームモード。標準入力を読み続け、一行ごとに表示します。
--center
- 台詞を中央寄せで表示します。
- 縦書きモードでは機能しません。
-R
(--no-round
)- 外枠の角を丸める処理を抑制します。
--square
- 外枠を四角形にします。
-p サイズ
(--padding サイズ
)--pt サイズ
(--padding-top サイズ
)--pb サイズ
(--padding-bottom サイズ
)--pl サイズ
(--padding-left サイズ
)--pr サイズ
(--padding-right サイズ
)- 外枠と台詞との隙間のサイズを指定します。
使用例
気軽に実行しましょう!
$ echo-sd --help
...
$ echo-sd
_人人人人人人_
> 突然の死 <
 ̄Y^Y^Y^Y^Y^Y ̄
$ echo-sd -t
(表示はされません。あなたの Twitter アカウントでツイートされます!)
$ echo-sd ぬるぽっ!!
_人人人人人人人_
> ぬるぽっ!! <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
$ echo-sd -v ガッ!
_人人_
> ガ <
> ッ <
> ! <
 ̄Y^Y ̄
$ echo-sd -p1 ズキュウウゥン!!
_人人人人人人人人人人_
> <
> ズキュウウゥン!! <
> <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
$ echo-sd -vp1 ゴゴゴゴゴゴゴゴ 「世界」ッ! 時よ止まれ!
_人人人人人_
> <
> 時 ┐ ゴ <
> よ 世 ゴ <
> 止 界 ゴ <
> ま └ ゴ <
> れ ッ ゴ <
> ! ! ゴ <
> ゴ <
> ゴ <
> <
 ̄Y^Y^Y^Y^Y ̄
ストレスモード!
$ echo-sd --stress 仕事のストレス echo-sdを改造 ストレス解消 仕事のストレス echo-sdを改造
仕事のストレス
↘
echo-sdを改造
↙
ストレス解消
↘
仕事のストレス
↙
_人人人人人人人人_
> echo-sdを改造 <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄
勝訴!(手元のブラウザーで見ると表示ずれているが気にしない…)
$ echo-sd -v --square '勝 訴'
┌──┐
│ 勝 │
│ │
│ 訴 │
└──┘
短冊で星に願いを!(手元のブラウザーで見ると表示ずれているが気にしない…)
$ echo-sd --tanzaku '死にたい(訳:生きたい)'
┏-┷-┓
┃ 死 ┃
┃ に ┃
┃ た ┃
┃ い ┃
┃ ⏜ ┃
┃ 訳 ┃
┃ ‥ ┃
┃ 生 ┃
┃ き ┃
┃ た ┃
┃ い ┃
┃ ⏝ ┃
┗━━┛
一時間ごとに進捗確認!
$ while :; do sleep 3600; notify-send "`echo-sd 進捗どうですか?`"; done &
シェルスクリプトでエラーを目立たせる! banner
(1) の代替!!
#!/bin/sh
error() {
echo-sd "ERROR: $*" 1>&2
}
# …
おしまい!
謝辞
最初の数日は書いているだけで楽しかったです。 久しぶりの執筆活動。 腹に溜め込んだまま誰にも疲労^H^H披露することなかったものを掃き出すだけでも喜びでした。 しかし、元来から書くのが遅いしアクセス数も少ないしネタも足りなそうだし、 だんだんと辛くなり、当初思っていたより大変な作業でした。 来年はやりません、たぶん、きっと、恐らく…。
そんな中、支えになってくれたのが読者と応援を下さった皆さんです。 もともと自己満足のために始めたとはいえ、 「毎日楽しみにしてます!」とか 「頑張って!」とか 「知らなかった」とか 「気が狂ってる」とか 「これはいいアイデア!」とか、 やっぱり人の反応が得られるのが楽しくて嬉しくて書いた甲斐があるってものですね。
スペシャルサンクス!
- @yoshikawさん
- 毎日記事をツイート & はてブしていただきました。 よい励み & プレッシャーになりました!
- しかもプレゼントもいただきました。3つですよ、三つ!!みっつもー!!!! 何を考えているのでしょうか? (失礼) 私はどうしたらいいんでしょうか? いままで通り、OSS 方面やらネタツイートで地味に薄く還元していけばいいですか? いいですよね!?
- @hirose31さん
- ネタを提供していただきました。2つも! 1つしか記事にできなくてすみません…。 気力が湧いたらもう一つも考えます(半分弱書いて放置中)。
- プレゼントまでいただいてます。あー、幸せ。幸せですが恐縮です。 慣れないことしてもらうと本当困ります…。あああーーー。
- @koieさん、@tnozakiさん
- TL に流れたネタを勝手に採用させていただきました。 これがなかったら足りませんでした。
- @p_ck_さん
- Blog の記事をネタにさせてくださいとお願いしたのに実現できませんでした。 ごめんなさい。
- @tamura__246さん
完全匿名の方もう一人どなたか存じませんが、プレゼントいただきました。ありがとうございます。 大事に使います!
- 无名氏さん(?)
- どなたか存じませんが、Amazon ギフト券ただきました。ありがとうございます。 中国かどちらかの方でしょうか?? お名前読めません。すみません。
- そのほか大勢(?)の皆さん
- 興味を持って/読んでいただいてありがとうございます。 私にとって書き物は読者がいないと辛いことがよーくわかりました。 ウケてナンボですわ…。
- (忘れている人がいたらすみません。頭回ってません)
拡張 POSIX シェルスクリプト Advent Calendar 2013 はこれにておしまいです。 本当にありがとうございました。
追伸: 40歳になりました。
追伸2: もう一個何か来そうな気がするんですがががが。数が減っているような気がする。