読者です 読者をやめる 読者になる 読者になる

へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

これでMackerなきみもsha1sumとかwgetで詰める!にっくき改行コードとぼく

Java

Eclipse downloads - mirror selection
Javaをやろうと思い立ち、Eclipseをダウンロードしようと思いました。

SHA1SUMってなんだよ

ハッシュ求めて、『このファイルは壊れてないよー』って確かめるやつ。
md5sumもある。

チェックしてみる

$ sha1sum -c ec.sha1

すると無限ループが……

なんだこれは

なんだこれはと思いながらなんとなく

$ cat ec.sha1 > new.sha1
$ sha1sum -c new.sha1

としてみる。

やはり無限ループが……

しかしechoするとできる

$ echo `cat ec.sha1` > new.sha1
$ sha1sum -c new.sha1
eclipse-jee-luna-SR2-macosx-cocoa-x86_64.tar.gz: OK

このへんで何かテキストエディタで見えないところで悪さをしているのだなとあたりをつける。

diffをとってみる。

$ diff ec.sha1 new.sha1
1c1
< 1c647a2bd83b727bd90aa6597c8cc015a45cc01c eclipse-jee-luna-SR2-macosx-cocoa-x86_64.tar.gz
\ No newline at end of file
---
> 1c647a2bd83b727bd90aa6597c8cc015a45cc01c eclipse-jee-luna-SR2-macosx-cocoa-x86_64.tar.gz

とすると改行コードが悪いことが判明

念のためdumpもしてみる

$ od -c ec.sha1
0000000 1 c 6 4 7 a 2 b d 8 3 b 7 2 7 b
0000020 d 9 0 a a 6 5 9 7 c 8 c c 0 1 5
0000040 a 4 5 c c 0 1 c e c l i p s e
0000060 - j e e - l u n a - S R 2 - m a
0000100 c o s x - c o c o a - x 8 6 _ 6
0000120 4 . t a r . g z \r
0000131
$ od -c new.sha1
0000000 1 c 6 4 7 a 2 b d 8 3 b 7 2 7 b
0000020 d 9 0 a a 6 5 9 7 c 8 c c 0 1 5
0000040 a 4 5 c c 0 1 c e c l i p s e
0000060 - j e e - l u n a - S R 2 - m a
0000100 c o s x - c o c o a - x 8 6 _ 6
0000120 4 . t a r . g z \n
0000131

やはり改行だった!

改行の違いについて

string - \r\n , \r , \n what is the difference between them? - Stack Overflow

\r = CR (Carriage Return) // Used as a new line character in Mac OS before X

\n = LF (Line Feed) // Used as a new line character in Unix/Mac OS X

\r\n = CR + LF // Used as a new line character in Windows

ひらいてー→保存してー→とじてー→なおらない

vimでこうするとなおる

vim - Replacing carriage return ^M with Enter - Stack Overflow

$ vim ec.sha1

:set ff=unix
:w

たぶんffはファイルフォーマットのことだと思う。のばら。

でもめんどくさくない?

これはこれだったから良かったけど
こんなの大きなプロジェクトでやったら間違いなく詰むだろ。
おそろしす
というかなんでMac OS X用のSHA1SUMなのに改行コード\rなんだEclipse

ちなみに

当然ですが

1c647a2bd83b727bd90aa6597c8cc015a45cc01c eclipse-jee-luna-SR2-macosx-cocoa-x86_64.tar.gz

をコピペしてファイルにペタッって貼り付けるとこれらの現象は起こりません
wgetcurlもいいことばっかじゃないんすね