[過去ログ] シェルスクリプト総合 その31 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(3): 2019/08/10(土)23:17 ID:L+B8OP2P(1/5) AAS
シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その30
2chスレ:tech
903: 2019/10/17(木)17:19 ID:z1/RyPhF(5/10) AAS
>>899
それだめ。 shellcheck使ってみ、エラーになる。
shellcheck において && || みたいな三項演算子風な使い方は
func && VALUE=ok || VALUE=ng
という書き方(変数代入)のみ認められる。
func && foo || bar
は認められない。
なぜかと言うと、
1. func が 正常終了して
2. foo が 異常終了すると
省8
904: 2019/10/17(木)17:21 ID:z1/RyPhF(6/10) AAS
もちろん、&& 単独、もしくは || 単独で 使うならば問題ない。
func && foo とか func || bar ならOK
905(1): 2019/10/17(木)17:26 ID:PM8kIYTO(5/6) AAS
今度は ls "$dir/tmp/*.txt"
みたいなことしたらアクセスできませんみたいなことを言われた
>>901
なるほど
>>902
多分"*.txt"ファイルにアクセスしようとしてできないって言われたことが原因?
でもなぜかls *.txtみたいに、ファイル直だとイケる
906: 2019/10/17(木)17:33 ID:z1/RyPhF(7/10) AAS
あー、やっぱりそうなんや
外部リンク:en.wikipedia.org
外部リンク:en.wikipedia.org
getoptは1980年頃つくられた。初期のgetoptは低機能
その改良として getopts が1986年にBourne shellに実装されたらしい。
その後、getopts (Solaris) と getopt (GNU) それぞれ違うコマンドで
ロングオプションがサポートされ
どちらでもないBSD(macOS含む)では、従来どおり
低機能な getopt と それを少し改良した getopts があるが
どちらもロングオプションはサポートしてないと
907(1): 2019/10/17(木)17:37 ID:z1/RyPhF(8/10) AAS
>>905
だからダブルクォートで括るからいかんのや
ls "$dir/tmp/" * ".txt"
これが正解(スペースは目立たせるために入れただけ)
この書き方ダサいよなw
ちなみに古いシェル(poshだっけ?)でこれがうまく行かない
バグがあるのだが、まあ誰も気にしないわなw
908: 2019/10/17(木)17:40 ID:z1/RyPhF(9/10) AAS
getopts (Solaris) でロングオプションがサポートされたってシェルなんだ?って思ったら、
Solarisでは/usr/bin/getoptsが存在するのか・・・
紛らわしいな
外部リンク[html]:docs.oracle.com
909: 2019/10/17(木)17:43 ID:z1/RyPhF(10/10) AAS
あ、いや /usr/bin/getopts もあるにはあるが、libcのgetopt()実装が拡張されたから
それを使ってるBourne Shellでも使えるようになったのか
> getopts (Solaris enhanced)
> As a result, this new feature was also available in the built-in command getopts of the Bourne Shell.
910: 2019/10/17(木)17:47 ID:PM8kIYTO(6/6) AAS
>>907
うおおできた!
ls "$dir/tmp/"*".txt" && echo "ok" || echo "ng"
みたいな感じにした
(txtファイルがひとつもないときエラー出るけど!無視)
?
911: 2019/10/17(木)19:06 ID:yPX5iNuE(1) AAS
ジェルスクリプトってバッドノウハウの塊なんだな…
912: 2019/10/17(木)21:18 ID:CFrrzXLD(1) AAS
TeXで書かれた人工知能みて,「バッドノウハウ」って言ってるみたいw
913: 2019/10/17(木)21:23 ID:1JFOpLrO(1) AAS
GLOB展開と""内での文字列展開は別物で""内での文字列展開にGLOBは含まれないというだけだけどな
914: 2019/10/17(木)22:15 ID:yIl6cqO6(1) AAS
マニュアルにかっちり書いてあるんだけどな
読み解くのは確かに能力が必要だが
915(2): 2019/10/18(金)00:25 ID:DhnYyybT(1/3) AAS
>>892-897
find . -type f -name "*.txt" | wc -l
-type f は、ファイルのみ。
wc -l は、行数を数える。無ければ、0
916: 2019/10/18(金)00:33 ID:l6dCA2lX(1) AAS
$ mkdir tmp && cd tmp
$ touch $'a\nb.txt'
$ find . -type f -name '*.txt' | wc -l
2
917: 915 2019/10/18(金)00:51 ID:DhnYyybT(2/3) AAS
相対パスなら、-path で、カレントディレクトリからの相対パスで指定する
find . -type f -path "./test/*.rb" | wc -l
918(1): 2019/10/18(金)02:59 ID:Shj9H2hw(1) AAS
なるほろ
bash によるオプション解析 - Qiita
外部リンク:qiita.com
bashのワイルドカード展開は該当するファイルが無いと*が展開されずに残る - Qiita
外部リンク:qiita.com
manはマニュアルだがman自体に取説が必要な皮肉
man manを読む時点で骨が折れるからしゃーない
919: 915 2019/10/18(金)04:58 ID:DhnYyybT(3/3) AAS
Ruby では、これでカレントディレクトリの該当ファイル数がわかる。
無ければ、0
ruby -e 'puts Dir.glob( "*.txt" ).length'
920: 2019/10/18(金)09:56 ID:dNt3vJtH(1) AAS
/bin/ls -1d *.txt 2> /dev/null | wc -l
921(1): 2019/10/18(金)11:02 ID:lmpJOwiE(1) AAS
find使うのは有りだと思うがmaxdepthとquitをつけたほうが良い
if test -n "$(find . -maxdepth 1 -name "*.txt" -print -quit)"; then
echo "OK"
else
echo "NG"
fi
922: 2019/10/18(金)11:55 ID:O8T9zLoM(1) AAS
>>921
ただしそれらは POSIX 準拠ではない
外部リンク[html]:pubs.opengroup.org
923: 2019/10/18(金)13:39 ID:+f5J2l87(1) AAS
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
924: 2019/10/18(金)14:04 ID:e+8RgQym(1) AAS
>>918
暇なときに man と bash の man をちゃんと読み込むことをお勧めする
全部理解するのは確かに大変だが、こんな機能があるということだけ
覚えておいて、現実の問題に直面した時に詳細を再検索するのが
実用的。bash だけの問題ではないが。
925: 2019/10/18(金)23:14 ID:m9M+BHHc(1) AAS
bashのmanはメンテされてないんじゃね?
926: 2019/10/18(金)23:19 ID:1h1F7NR4(1) AAS
日本語版がメンテナンスされてない(もしくは遅い)だけだよ
927: 2019/10/19(土)00:34 ID:+f1cBD8l(1) AAS
日本語版の記述が少なくて英語版の方だけびっしりとか実にマニュアルらしい
928: 2019/10/19(土)13:26 ID:9TTj0TwZ(1) AAS
近頃は無料で web 上で使える翻訳ソフトの質も上がっているし
頑張って読んでくれ。
929: 2019/10/19(土)19:06 ID:VYVT60v2(1) AAS
翻訳めっちゃハッテンしてきてるよね
930: 2019/10/19(土)20:14 ID:jibveSnU(1) AAS
ウホッ
じゃなくて
なんだ
infoとかそっちしかハッテンしてないとかあるじゃん
931: 2019/10/20(日)17:43 ID:Tm15VeOJ(1) AAS
まあ、確かに sed の s コマンドのオプションは man にも入れてほしかった。
オプション使えなくなったのかと思ったじゃないか…
932: 2019/10/20(日)23:14 ID:n5s+FSXq(1) AAS
日本語版だけスカスカと言えばlocate
933: 2019/10/21(月)17:13 ID:mT54cHzD(1) AAS
まあ裏を返せばそれだけ国際標準から離れていないってことよね。
ar.localeとか酷い……
934(2): 2019/10/21(月)21:16 ID:SCSOJkPH(1) AAS
あるユーザー(Aとする)が、他のユーザー(Bとする)にのみWrite権限があるファイルを削除するような作業を自動化したいです。
当然そのままでは削除できないので、AからRootに切り替わり、ファイルを削除した後、Rootを抜けてAに戻るというBashスクリプトを作成しようとしています。
AはSudoが実行できない環境で、Expectコマンドもありません。Rootのパスワードはわかっており、平文でシェルスクリプト内に書き込んでも構いません(使用者が数人で、かつ外部に接続できないため。なのでセキュリティの問題は今回は無視)。
このような状態で、どうにか目的を果たすスクリプトはかけますでしょうか。
OSはFedora10、新たにプログラムパッケージ等はインストールできません。
よろしくおねがいします。
935: 2019/10/21(月)21:41 ID:aSOXSPh+(1) AAS
すなおにrootで全部やれば良いんじゃね?
936(1): 2019/10/21(月)22:08 ID:/woRRfjw(1) AAS
>>934
そもそもAがファイルを消せるようにパーミッションが初めから設定されるようには出来ないの?
937(1): 2019/10/21(月)22:24 ID:Ol8k0rNq(1/2) AAS
>>934
ファイルを削除するだけの実行ファイルを作ってsetuidビット立てて所有者をBにするとかすればできないかな?
938: 2019/10/21(月)22:25 ID:Ol8k0rNq(2/2) AAS
追記。シェルスクリプト自体にはsetuidは使えない。
939(1): 2019/10/21(月)22:52 ID:pvaospDZ(1) AAS
Fedora10って10年前のかっ
su: must be run from a terminal
にならんのだったらsuでいいんじゃないの。パスワード流すのは exec ででも
940: 2019/10/22(火)00:44 ID:7OkeLCGH(1) AAS
ディレクトリにwが付いてればファイルは消せるけどなあ
941(1): 2019/10/22(火)02:43 ID:T9lP8zyy(1) AAS
>>936
パーミッションは変えない方針でいきたいですね
>>937
setuidという単語を初めて見たので、のちほど調べてみます。
>>939
su - <<EOF
password
EOF
は試しましたが、ttyを経由しろ的なメッセージで怒られました
調べたところttyなしを許可する設定がsudorsにあるらしいですが、sudoは設定したくないため、できなそうです
942: 2019/10/22(火)09:04 ID:xSNqVMSD(1) AAS
>>941
# mkdir /dir
# chown userA:groupA /dir
# chmod 700 /dir
# cp /bin/rm /dir/rmB
# chown userB:groupB /dir/rmB
# chmod 6755 /dir/rmB
userA $ /dir/rmB /home/userB/file
943: 2019/10/22(火)10:51 ID:p4xpj08d(1/3) AAS
こんな文字列野中に含まれる数字を
ゼロパディングしたいと思います
"何とかって講義 第5回 何とか特集.mp3"
まずは2桁でそろえてやりたいのですが
grep "第[1-9]回"
で一桁のものを引っ掛けて
前後をsedで除いて
省5
944: 2019/10/22(火)10:52 ID:p4xpj08d(2/3) AAS
なお最終的な文字列の組み立てなおしは
数字の前後も抽出して3つを連結するつもりです
945(1): 2019/10/22(火)11:04 ID:+cbyszgy(1) AAS
perl5 が使えるなら
echo "何とかって講義 第2345回 何とか特集.mp3" | perl -pe 's/第(\d+)回/ sprintf "第%06d回", $1/exm'
何とかって講義 第002345回 何とか特集.mp3
946(1): 2019/10/22(火)13:09 ID:QfoZv31s(1) AAS
$ echo "何とかって講義 第2345回 何とか特集.mp3" | sed -E 's/第([0-9]+)回/第000000\1回/; s/0*([0-9]{6})/\1/'
6桁揃えにしたければ最初に6個0を足して次に6桁のみ残す
$ rename -n 's/\d+/sprintf("%06d",$&)/e' *.mp3
rename utilityが使えるならsprintfが使える
947: 2019/10/22(火)15:10 ID:W8s8s9Eh(1) AAS
perlもrenameもPOSIX規格外
948: 2019/10/22(火)15:18 ID:AwOtA+WM(1/2) AAS
みんな真偽値ってどうしてる?
949: 2019/10/22(火)15:21 ID:p4xpj08d(3/3) AAS
>>945-946
ありがとうございます
perlは入っており期待通りに動作しました
perlの方が高機能なのですが
環境を移したときにperlがあるか保証できないため
sedでやろうと思います
950: 2019/10/22(火)15:23 ID:AwOtA+WM(2/2) AAS
FLAG=true or false ?
FLAG=1 or 0 ?
FLAG=1 or unset ?
FLAG=1 or "" ?
それ以外?
951: 2019/10/22(火)20:26 ID:2f71vpaR(1/2) AAS
alias FLAG true/alias FLAG false
if FLAG; then
952(1): 2019/10/22(火)20:27 ID:2f71vpaR(2/2) AAS
でもBashだとファイル内では既定で使えない。
953(1): 2019/10/22(火)21:23 ID:CciDAIxr(1) AAS
>>952
面白いけど、サブシェルの中で変えられないから
alias FLAG=true
(
alias FLAG=false
if FLAG; then
echo true
fi
)
出力
省1
954(2): 2019/10/23(水)10:43 ID:oiOUCahJ(1) AAS
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
FLAG=$TRUE or $FALSE
955: 2019/10/23(水)10:57 ID:jQcWWJt3(1) AAS
サイトによってrenameの構文が違うけどコマンド自体が違うのな
perl付属のprenameとutil-linux付属のrename.ulがあるとか
alternativesで書き換えられてるんだからそら気付かんわ
956(1): 2019/10/24(木)17:48 ID:mthfJT/n(1/3) AAS
>>953
知らんかった。恥ずかしいw
957(1): 2019/10/24(木)17:49 ID:mthfJT/n(2/3) AAS
>>954
それってTRUE=0とするのと何が違うの?
958(1): 2019/10/24(木)18:07 ID:lp1ZwQII(1) AAS
>>956
サブシェルは関係ない。俺もちゃんと仕様読んだわけじゃないけど、
aliasは実行時じゃなくて、1単位ごとに → パース → 実行 の
パース時に変換してる感じ
そして1単位というのは、
alias FLAG=true
alias FLAG=false; FLAG && echo true
↑これは一行で一単位、だからtrueと表示されてしまうし
関数とか、プロンプトから、func() { 改行 とかやると
} 改行 するまで、ずっと行頭に > って表示されるだろ?
省9
959: 793 2019/10/24(木)18:35 ID:n545jbBX(1) AAS
>>795-797
時間が経ってしまいましたが、ありがとうございました
"$()"の中の"はエスケープする必要があるのかどうか、とか、変数代入への挙動とか、そういう細かいところがよくわかってなかったです。
960: 2019/10/24(木)22:00 ID:mthfJT/n(3/3) AAS
>>958
あー。
aliasってたしか一つの構文解析のかなり初期段階で展開される筈だから,
その一つの解析対象の内部で定義されているaliasは(当然)それ自身の解析結果には反映されんな。
このへんだろうか??
外部リンク[html]:pubs.opengroup.org
961: 2019/10/25(金)00:11 ID:6btPTvif(1) AAS
次スレ
シェルスクリプト総合 その32
2chスレ:tech
962(1): 2019/10/25(金)07:59 ID:6Bcci7V7(1) AAS
>>957
真は0、偽は0以外という値を意識する必要が無い
(Cの真偽値は逆で紛らわしい)
true/falseコマンドが使えない環境でも使える
963(1): 2019/10/25(金)23:17 ID:TUsRGFSK(1) AAS
>>962
true/falseがビルトインじゃないシェルは存在しない
また、[ の結果はtrueなら0、falseなら1と決まっている
964(1): 2019/10/26(土)06:21 ID:0I+FrAtF(1/8) AAS
>>963
> true/falseがビルトインじゃないシェルは存在しない
今ならそう言えるだろうが、かつては存在した
外部コマンドのtrue/falseがその名残りだ
> また、[ の結果はtrueなら0、falseなら1と決まっている
0は数値の0であってtrueではない
trueを表現するのに0を使っているだけだ
まあ真偽値を扱うならtrue/falseを使えってことだな
965: 2019/10/26(土)09:53 ID:Q5pTtErv(1/8) AAS
trueを表現するのに0を使っているというより、真偽に成功不成功をそのまま使ってるというだけだろ
966: 2019/10/26(土)10:32 ID:a0V3mxKP(1) AAS
>>964
> 今ならそう言えるだろうが、かつては存在した
かつてとはいつで、どこの実装であるのか答えなさい
また、現存しない物の話をしても意味はない
そもそも [ が存在しない環境では使えない
外部コマンドの [ がその名残りだ
967: 2019/10/26(土)10:33 ID:swDBEFOl(1) AAS
成功/不成功は終了ステータスであって真偽値ではない
968(1): 2019/10/26(土)10:37 ID:3fttRo5u(1/9) AAS
え、まさか、
hoge && FLAG=$TRUE || FLAG=$FALSE
:
:
if [ "$FLAG" -eq "$TRUE" ] then ・・・
if [ "$FLAG" -eq "$FALSE" ] then ・・・
とか書くつもり・・・?
969(1): 2019/10/26(土)10:56 ID:0I+FrAtF(2/8) AAS
>>968
終了ステータスを真偽値で判断するのか
珍しいやつだなw
970: 2019/10/26(土)11:14 ID:3fttRo5u(2/9) AAS
>>969
変数に真偽値を入れるって話で
終了ステータスを入れる馬鹿を皮肉ってるだけだろw
971(1): 2019/10/26(土)11:16 ID:Q5pTtErv(2/8) AAS
while true
do
や、
FLAG=true
or
FLAG=false
if $FLAG; then
真偽に成功不成功をそのままは、なんて書きたかっただけだろ、そうの方が見た目がいいしな
なんでそんなに拘っているんだか
972: 2019/10/26(土)11:21 ID:3fttRo5u(3/9) AAS
つーか、いいかげんにしろよ。
真偽値の値を何にするかって話だろ
誰も真偽値をどうやって生成するかの話なんかしてねーよ
973: 2019/10/26(土)11:22 ID:3fttRo5u(4/9) AAS
AA省
974: 2019/10/26(土)11:23 ID:Q5pTtErv(3/8) AAS
FLAG=true or false
FLAG=1 or 0
etc
なんでも好きにすればいいだろ
true/falseコマンドを使った方が見た目簡潔じゃないかと思うがな、個人的に。使わんけど
お前がいいかげんにしろよw
975(3): 2019/10/26(土)11:29 ID:3fttRo5u(5/9) AAS
質問が出てる時点で、意図がわからないコードってことなんだがw
957 名前:デフォルトの名無しさん[sage] 投稿日:2019/10/24(木) 17:49:17.77 ID:mthfJT/n [2/3]
>>954
それってTRUE=0とするのと何が違うの?
それに>>954ののコードは、set -eで正しく動かない
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
意図が不明確なコードを書いて、バグを入れるのは
アホでしか無いよ
976(1): 2019/10/26(土)11:32 ID:Q5pTtErv(4/8) AAS
俺は他alias使ったのやのその話題は、なにをわざわざ凝ったことしようとしてるのか意図不明で趣味なんだろなとしか思ってない
977: 2019/10/26(土)11:33 ID:T/HAOzs9(1) AAS
やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
978: 2019/10/26(土)11:34 ID:3fttRo5u(6/9) AAS
>>976
趣味(実用的ではないネタコード)に、正当っぽい理由をつけるなって話だ
979: 2019/10/26(土)11:36 ID:Q5pTtErv(5/8) AAS
ただの雑談だろ
あれを強制するなりしているわけでもないのに、なにをそう否定してんだか
そんなヤツがリアルで一緒に仕事するなら思いっきりくそ叩くがなw
980: 2019/10/26(土)11:37 ID:3fttRo5u(7/9) AAS
あとC言語の世界しか知らんようだから言っておくと、rubyは0も1もtrueな
シェルスクリプトは反対で0がtrueで1がfalseなんだ、それ以外の回答はない!ってのは
ちょっと考えが浅いんじゃないですかねぇw
外部リンク:osishow3.hateblo.jp
nil is false
false is false
0 is true
1 is true
981: 2019/10/26(土)11:39 ID:Q5pTtErv(6/8) AAS
何をひとりで妄想に走っているんだか
だれか「いいかげんにしろ」とか言ってなかったか?w
982: 2019/10/26(土)11:42 ID:3fttRo5u(8/9) AAS
俺に突っかかってきてないで、シェルスクリプトの話題をしたら?
983: 2019/10/26(土)11:43 ID:Q5pTtErv(7/8) AAS
よくいうよw
984: 2019/10/26(土)11:47 ID:3fttRo5u(9/9) AAS
そりゃいうだろ、いきなりシェルスクリプトと関係ない
「俺」の話を始めるんだからw
985: 2019/10/26(土)11:50 ID:Q5pTtErv(8/8) AAS
言ったことに対してはそりゃ言うだろう。お前がわざわざ言ったんだから
そんなのが無くてもいいのに。お前だった元々のやつを「アホ」呼ばわりしてるじゃん
986: 2019/10/26(土)15:54 ID:0I+FrAtF(3/8) AAS
>>975
set +e
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
set -e
動かんと言ってる方がアホだと思う
987: 2019/10/26(土)16:04 ID:+M+pJ73c(1/9) AAS
set -eで正しく動かない
↓
set +eと書いて動くと主張。赤っ恥w
988: 2019/10/26(土)16:15 ID:0I+FrAtF(4/8) AAS
逃げ方がチョン臭くてキモい
989: 2019/10/26(土)16:17 ID:+M+pJ73c(2/9) AAS
しかも、最初の状態が set +e だったら
set -e に状態が変わってしまうというクソコード
汎用性がない
990: 2019/10/26(土)16:20 ID:+M+pJ73c(3/9) AAS
true / false を使えばいいのに、[ が入ってない環境を考慮せずに、
true / false が入ってないかもしれないから [ を使ったと言う無能ぶりw
991: 2019/10/26(土)16:22 ID:0I+FrAtF(5/8) AAS
最初にset -eするとルール化するだけ
いちゃもんつけるの得意だな
992(1): 2019/10/26(土)16:24 ID:0I+FrAtF(6/8) AAS
[]やtestが使えないシェル教えてくれよ
993: 2019/10/26(土)16:25 ID:+M+pJ73c(4/9) AAS
TRUEの反対だからfalseというが、
FALSEの反対もfalseになってると気づいてなくて
そもそもシェルスクリプトの仕様をわかってないw
[ 0 = 0 ]; echo $? # => 0
[ ! 0 ]; echo $? # => 1
[ ! 1 ]; echo $? # => 1
994(1): 2019/10/26(土)16:27 ID:+M+pJ73c(5/9) AAS
>>992
上の方で /bin/true, /bin/false コマンドがあるんだから
true, false が使えないシェルがあるはずだって主張していたぞw
その理屈で言えば [ コマンドもあるんだから、 [ が使えないシェルもあるってことになるんだがなw
995: 2019/10/26(土)16:28 ID:+M+pJ73c(6/9) AAS
更に言うなら
TRUE=$([ 0 = 0 ];echo $?)
FALSE=$([ ! $TRUE ];echo $?)
これにサブシェルを使うのもアホらしいw
996(2): 2019/10/26(土)16:29 ID:0I+FrAtF(7/8) AAS
>>994
cshのbuiltin調べてこい
分かったらすいませんって言えよw
997: 2019/10/26(土)16:29 ID:+M+pJ73c(7/9) AAS
>>1みろ
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
998(1): 2019/10/26(土)16:30 ID:0I+FrAtF(8/8) AAS
あーいつものマウントとらないと死ぬ病気のやつか
おだいじに
999: 2019/10/26(土)16:30 ID:+M+pJ73c(8/9) AAS
>>1じゃなくて>>2だったな
> ・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
1000: 2019/10/26(土)16:30 ID:+M+pJ73c(9/9) AAS
>>998
マウント取られて可愛そうwww
1001(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 76日 17時間 12分 59秒
1002(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
省4
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.249s*