- 1 名前:名無しさん@お腹いっぱい。 [2012/11/15(木) 18:57:33.11 ]
- シェルスクリプトの総合スレです。
□お約束 ・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。 FreeBSDユーザは/bin/shの正体がashなので注意。 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。 src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/ heirloom.sourceforge.net/sh.html ・csh/tcshのシェルスクリプトは推奨されません。 (理由は「csh-whynot」でググれ) ・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。 manや参考リンクを見ましょう。 aproposないしはman -kでそれらしい単語による簡単な検索もできます。 ・シェルで使えるワイルドカード等は正規表現ではありません。 正規表現の話題はスレ違い(正規表現スレへ) ・シェルスクリプトのことをシェルってゆーな □初心者へのアドバイス: ・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも awkまたはperlの方が適した処理にはそちらを使いましょう。 ・知らないコマンドが出てきたらmanを引きましょう。 ・思い通りに動かないときは、まずは sh -x でトレースしましょう。 □回答者への注意事項: ・シェルスクリプトでの処理方法を質問しているのに、よくわからずに 「そういうのはperl使いましょう」と回答するのはやめましょう。 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。 前スレ シェルスクリプト総合 その20 toro.2ch.net/test/read.cgi/unix/1339083351/
- 82 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/13(木) 11:02:31.60 ]
- >>81
もともとbashのmanは英語で書かれていたんだよ
- 83 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/13(木) 23:00:47.57 ]
- わかる方がいたら教えてください。
引数で入力した値で、設定ファイル(~/test.conf)の置換文字列(%replace%)を置換することを考えています。 replace_str=%replace% input=$1 sed -e "s/${replace_str}/${input}/" ~/test.conf 上記のようなことを考えていますが、入力値に /(スラッシュ)があると、sedコマンドがエラーになってしまい、うまく置換ができません。 入力値に /(スラッシュ)がある場合でも正しく置換する方法はありますか? また、/(スラッシュ)以外でもNGになってしまう文字はありますか? その文字も正しく置換することは可能でしょうか。
- 84 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/13(木) 23:11:09.68 ]
- >>83
入力値に絶対入らない文字はある? あれば / のかわりにそれを使う。 sed -e "s,${replace_str},${input}," ~/test.conf みたいに。
- 85 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/13(木) 23:14:17.61 ]
- そんな文字を仮定できないなら、
$1中の / を \/ に置換してからinputに入れるしかないかな。 この置換がまたやっかいかもだが。
- 86 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/13(木) 23:29:11.48 ]
- replace_str=${replace_str//\//\\/}
たぶんこれでいけるでしょう
- 87 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/14(金) 12:41:31.89 ]
- >>83
\や&も特殊な意味を持つと思うよ 俺なら、sedを使わざるをえないなら$inputに使える文字に制限を付けるかな
- 88 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/14(金) 12:52:19.32 ]
- sed 's/%replace%/_replace_/g' | m4 -D_replace_="$input"
- 89 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/12/14(金) 20:54:59.74 ]
- >>87
相手がWebの先の人間だったりするとそういう制限は難しいんじゃ
- 90 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/03(木) 00:00:22.31 ]
- シェルスクリプトでHex値を書き換える事は出来ますか?
バイナリファイルAのHex値 00100000のようなものを01100000のように書き換えたいです。 駄目元で、 cat A | sed - e 's/00100000/01100000/' > A のようにやってみましたがダメでした。
- 91 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/03(木) 00:02:32.45 ]
- >>90
きみのsedは16進数値をかけるsedなのかい?
- 92 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/03(木) 00:23:12.33 ]
- >>91
やっぱり無理なんでしょうか。…
- 93 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/03(木) 01:02:55.97 ]
- bcかawkでも使っとけ
- 94 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/04(金) 01:11:51.48 ]
- シェルスクリプト バイナリファイル でぐぐると最初になかなか面白そうなのが出てきた
個人的にはperl使うのが楽だと思うけど
- 95 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/04(金) 10:22:05.55 ]
- >>94
これ? www.flat7th.org/~keizo/wiki/?page=%2B+%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E6%93%8D%E4%BD%9C
- 96 名前:名無しさん@お腹いっぱい。 [2013/01/05(土) 23:39:03.74 ]
- FreeBSDの/bin/shのソースって単体配布されてないのん?
- 97 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/06(日) 00:05:05.98 ]
- これを見る限り、それさえ既に魔改造版でしかないみたいw
ttp://www.in-ulm.de/~mascheck/various/ash/ash.png
- 98 名前:名無しさん@お腹いっぱい。 [2013/01/06(日) 00:25:20.45 ]
- shのソースV7のでおなかいっぱい
- 99 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/06(日) 04:34:44.00 ]
- >>96
基本的に全部まとめて配布なのが BSDの良い所の一つだよ。 でも単体取得する方法もある。
- 100 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/06(日) 09:24:06.28 ]
- その方法とは!?
- 101 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/06(日) 10:44:45.32 ]
- >>92
xxdで変換したの編集してからxxdで復元
- 102 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/07(月) 00:09:45.57 ]
- >>100
svnからゲッツ、じゃね svn.freebsd.org/base/head/bin/sh/
- 103 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/07(月) 13:31:44.54 ]
- >>91
うちのsedは書ける
- 104 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/07(月) 22:27:46.05 ]
- >>102
僕のケータイでも読めた。 でもインストールがわからない。 みんなどーやってインストールしてるの? 僕のケータイリナックスってやつらしいけど 客がシェル使えるよーになってないから これインストールしたら客もシェル使えるんだ。 でもインストールがわからない。
- 105 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/08(火) 11:07:30.16 ]
- >>104
configureしてmake install
- 106 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/08(火) 15:17:53.67 ]
- でもライブラリに分割されるとか魔改造されてて、あっさりとコンパイルできないのが常。
baseシステムに組み込まれてるのは取り出せないと思った方がいい。
- 107 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/08(火) 16:40:37.49 ]
- MINIX(86)のシェルを移植するのだ!
- 108 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/08(火) 18:03:08.60 ]
- フリーなの無いでしょ。
- 109 名前:名無しさん@お腹いっぱい。 [2013/01/12(土) 21:11:02.86 ]
- 2> /dev/null
を 2>&- って書くとまずいことあるの? おしえて先生!
- 110 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/12(土) 22:41:52.39 ]
- >>106
ほとんど手が入っていないであろう net2 のソース持ってくるってのは?
- 111 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/13(日) 14:15:52.18 ]
- >>109
writeの失敗を検出するようなコードが書いてあると困る
- 112 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/13(日) 14:36:10.22 ]
- どこにですか?
- 113 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/13(日) 15:03:28.37 ]
- #include <unistd.h>
int main(){ if(write(2,"hello",5) == -1){ return 1; } return 0; } こんな感じかな。
- 114 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/19(土) 01:07:47.55 ]
- >>109 &- ってどういう構文なの? htmlとか?
>>111 エラーを返さない方が困ります
- 115 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/19(土) 02:20:17.72 ]
- 仕様変更した2chと、
それに対応してない専ブラ使うやつと、 &が何かも知らずにつっこむやつ
- 116 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/19(土) 02:32:56.96 ]
- と、ドヤ顔で解説する奴と
ニヤニヤしながら傍観してるオレ。
- 117 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/19(土) 10:36:37.19 ]
- あー &ー なのか
失礼
- 118 名前:名無しさん@お腹いっぱい。 [2013/01/19(土) 18:28:47.20 ]
- 初心者だから使えるコマンドがlsとかなのは共通事項。
たまにネットがおかしいと聞くと言われて打った ifconfigは command not found になったりするんだよね。
- 119 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/19(土) 18:39:44.08 ]
- ifconfigは/usr/sbinにあったりするからな。
- 120 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/19(土) 18:50:09.03 ]
- 解決策を聞いてるんじゃないよ。(というか知ってるし)
そうそうと共感してくれればいいのに。 面倒臭い人ね。
- 121 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/19(土) 21:26:02.44 ]
- そういう大事なコマンドは/sbinだろ。
- 122 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 00:53:25.44 ]
- どこにシェルスクリプト要素があるんだ?
- 123 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 02:42:53.88 ]
- >>120
誰でも知ってるような事を書いて 共感しろとは、勘違いも甚だしい
- 124 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 03:42:08.87 ]
- さすがに生まれたての赤ん坊は知らねぇだろ
- 125 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 05:26:07.60 ]
- 赤ん坊が無知を装うのは大昔からの通例だろ
- 126 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 05:38:37.73 ]
- 会話できない以上知ってるかどうか確認する手段がないからな。
- 127 名前:名無しさん@お腹いっぱい。 [2013/01/20(日) 10:43:48.19 ]
- くだらない質問ですが、
次のシェルスクリプトで★マークに入る方法があれば教えてください。 ARG0="$0" while [ -h "$ARG0" ]; do ls=`ls -ld "$ARG0"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then ★ ARG0="$link" else ARG0="`dirname $ARG0`/$link" fi done 処理時代はシンボリックリンクの実体を辿る処理だという事は調べて、 なんとか分かったんですが、★の処理にはいる条件がどうしても分かりません。 別に入らなくてもいいのですが、気になってしまって・・・
- 128 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 10:50:31.37 ]
- 絶対パスへのリンク、じゃないの?
- 129 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 10:54:20.46 ]
- >>127
解答を聞いてるんじゃないよ。 そうそう、こういう構文だと条件がわかりにくいよねぇー、 って共感してくれればいいんだけど。
- 130 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 11:06:43.97 ]
- ってかreadlinkを自分で分かりにくく書いてみたってことでいいの?
- 131 名前:127 [2013/01/20(日) 11:12:54.89 ]
- >>128
ありがとうございます。 絶対パスで調べて、リンクを作りなおしたら通りました。
- 132 名前:127 [2013/01/20(日) 11:25:51.23 ]
- >>130
Linuxを使い始めたばかりで、 とりあえず適当なソフトをWebを見ながらインストールしていました。 その中でTomcatというソフトをインストールするのに、 シェルスクリプトの設置が必要と書かれており、そのサンプルが記載されていました。 しかし、サンプルの意味が全く分からなくて、そのまま使っていいのかも分からず 一から調べている最中でした。
- 133 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 13:47:00.29 ]
- >>130
svn.apache.org/repos/asf/commons/proper/daemon/tags/COMMONS_DAEMON_1_0_7/src/samples/Tomcat7.sh の事だな。特定の環境にしか存在しないreadlinkは使いたくなかったんだろ。 素人は黙ってなよ。
- 134 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/20(日) 14:49:14.74 ]
- リテラシ高いな
感心感心
- 135 名前:名無しさん@お腹いっぱい mailto:sage [2013/01/23(水) 14:41:17.73 ]
- もし、Aのディレクト内が空だったら、○○しなさい
の一番簡単なスクリプトは?
- 136 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 14:56:34.29 ]
- find A -empty | fgrep -x A >/dev/null && ○○
- 137 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 15:51:12.07 ]
- 解答を聞いてるんじゃないよ。
そうそう、ディレクトリが空かどうかの判断って簡単にできないよねぇー って共感してくれればいいんだけど。
- 138 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 16:51:23.23 ]
- 簡単にできるけど、回答知りたくないらしいから黙っておこう。
- 139 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 17:03:26.94 ]
- コピペやん
- 140 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 19:43:01.34 ]
- >>137
さぁ、お前のハードリンクを数えろ
- 141 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 20:37:43.99 ]
- それだと内部のディレクトリ数しかわかんねえよ
- 142 名前:名無しさん@お腹いっぱい。 [2013/01/23(水) 21:01:24.46 ]
- 141が何を主張しているのかエスパーお願い
- 143 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 21:27:00.12 ]
- エスパーしよう。
>>141 は、ディレクトリのハードリンク数が2かどうかで空ディレクトリを判断しても、 それは「サブディレクトリ数+2」の値でしかないから、 内部のディレクトリ数が0で通常ファイルだけ存在する場合まで 空ディレクトリと誤判定してしまう、と主張しているようだ。 要するに、空ディレクトリ≠葉(leaf)ディレクトリ
- 144 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 21:31:31.38 ]
- .と..が必ず存在するから、空ディレクトは存在しない。
ゆえに判定式は定数式。
- 145 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 21:56:03.02 ]
- エスパーってほどじゃないだろ
- 146 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 23:08:40.40 ]
- >>137
消してみればいいんだしね。
- 147 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/23(水) 23:09:52.41 ]
- 権限がなかったり
- 148 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 01:17:26.13 ]
- >>137
共感できない。
- 149 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 05:53:53.02 ]
- 教官!できない…
- 150 名前:名無しさん@お腹いっぱい。 [2013/01/24(木) 08:38:20.39 ]
- ようするに >>141 は . と .. がリンク数に含まれることを知らないってことかな
- 151 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 08:43:24.58 ]
- >>150
すでに>>143が解説済み。
- 152 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 09:15:47.01 ]
- 空ディレクトリが存在しないのであれば
rmdirはどのディレクトリも削除できないのでは?
- 153 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 09:35:00.86 ]
- こまけぇことは気にしないで消せばいいんだよ
- 154 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 11:20:22.52 ]
- >>152
空ディレクトリは.と..以外のファイル/ディレクトリが無いディレクトリのこと
- 155 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 18:41:29.19 ]
- /a.appを起動
プロセスを終了 を5秒ごとに繰り返すコマンド書いてくださいな
- 156 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 18:47:02.12 ]
- なんでそんな傲慢なの?
- 157 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 18:51:36.35 ]
- そうそう、アプリを起動してプロセスを終了を、
5秒ごとに繰り返したりしたいこと多いよね、共感します。
- 158 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 21:04:28.31 ]
- >>155
プロセスを終了 って、どのプロセスでもいい?
- 159 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/24(木) 21:33:59.04 ]
- >>155
while sleep 5;do pkill a.app;/a.app &;done ほんとはpid拾うべきか。$?だっけ。
- 160 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 01:43:15.60 ]
- $! な
- 161 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 11:02:15.89 ]
- .appって拡張子はMac OS Xのbundleか?
だとするとopen -a /a.appだろうけど、まあapplescriptで書いた方がいいよ。 ジェントルに終了させられるし。
- 162 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 11:31:59.01 ]
- applescriptって#がコメントにならないから
#!/usr/bin/osascriptって書けないんだよね…。
- 163 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 11:46:54.65 ]
- ファイルの一行目だけ特殊扱いしてくれればいいんだけどな。
そういうLisp系のインタープリタある。(そもそもLisp系は行頭の#がちと特殊だが)
- 164 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 13:38:52.29 ]
- >>162
2行目以降を使うスクリプトを書いてそれをシェバングにしたら?
- 165 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 14:09:28.74 ]
- >>164
残念。 シェバングに指定できるのはバイナリだけ。(スクリプトじゃ駄目)
- 166 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 16:53:20.52 ]
- >>165
じゃあperlかなんかで1行に凝縮させればおk
- 167 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 16:57:50.64 ]
- あれ?バイナリじゃなくても動くぞ?
うちの壊れたか?
- 168 名前:名無しさん@お腹いっぱい。 mailto:saeg [2013/01/25(金) 17:47:21.06 ]
- shellが実行する場合もある。
- 169 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 17:48:02.97 ]
- いずれにせよexecve(2)の中でやることだし、
最近は自分で処理するシェルもいるし。
- 170 名前:名無しさん@お腹いっぱい。 [2013/01/25(金) 21:06:05.27 ]
- osascript は Leopard 以降なら sh-bang を理解するお。
- 171 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/25(金) 22:24:03.73 ]
- うろ覚えだけどbashの挙動は
とりあえずexec*してみる -> 駄目だったら/bin/bashで実行してみる の2段構えだったような。
- 172 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/26(土) 13:02:07.76 ]
- FreeBSDだと #!インタプリタ にバイナリしか指定できないが、
Linuxだとインタプリタがスクリプトでも動くようだ。
- 173 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/26(土) 13:06:41.79 ]
- BSDはダメだな
ずいぶんと中途半端な意識だな
- 174 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/26(土) 17:08:04.37 ]
- >>172
だから、それはLinuxの機能じゃなくてbashの機能でしょ。
- 175 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/26(土) 17:11:06.38 ]
- _人人人人人人人_
> bashの機能 <  ̄Y^Y^Y^Y^Y^Y ̄
- 176 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/26(土) 17:39:24.66 ]
- >>174
bashの機能じゃなくてカーネル(システムコール)のexecve(2)の機能なんだけど。
- 177 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/26(土) 19:52:37.75 ]
- git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob;f=fs/binfmt_script.c
- 178 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/26(土) 23:23:34.63 ]
- BSD系って結構厳密みたいだね。
#!/usr/bin/env PATH=/bin:/usr/bin:/usr/local/bin sh のどこか適当なshを使ってという方法もできないような。
- 179 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/26(土) 23:31:57.82 ]
- それって厳密か?
- 180 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/27(日) 03:11:09.66 ]
- 何を厳密といってるのか知らないけど、#!行ではオプションは一つしか指定できない。
↓これはダメ #!/usr/bin/env PATH=/bin:/usr/bin:/usr/local/bin sh
- 181 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/27(日) 08:31:23.75 ]
- >>180
だから、それはFreeBSDの仕様じゃなくてashの仕様でしょ。
- 182 名前:名無しさん@お腹いっぱい。 mailto:sage [2013/01/27(日) 08:38:44.48 ]
- _人人人人人人人_
> ashの仕様 <  ̄Y^Y^Y^Y^Y^Y ̄
|

|