アニメ『みつどもえ』(2010)
動画は、ドラマCDのPVです。まったく似てない三つ子三姉妹のギャクアニメ。引いてしまうところもあるのですが、慣れかなあと思います。
みつどもえと言えば、WindowsとMAC、それにLinux。
それぞれ別OSではありますが、コマンドラインの原点であるUNIXと全然縁がないわけではないんです。
LinuxはUNIXライクなOS、一方でMacは完全なUNIX。Windows10ではWSL(Windows Subsystem for Linux)を導入しました。
つまりこの3つのOS全てで、本ブログでさんざん勉強しているコマンドが使えるってことなります。
コマンドで処理したいことといえば、テキスト整形が第一に考え及びますが、テキストに関しては各OS注意が必要です。すこし前まで改行コードは、その昔、三OS三様でした。
LinuxはUNIXと同じく、改行コードはLF(0x0A)、WindowsはCRLF(0x0D,0x0A)、MacはCR(0x0D)。
でもでも今やMacはUNIXなので、改行コードもLF(0x0A)です。Mac/LinuxとWindowsとの改行の差を考えれば良いだけです。
では改行コードの変換コマンドdos2unixを使ってみます。
それぞれインストールしてみましょう。
Linuxの場合
takk~$ sudo apt install dos2unix
Linuxにてman dos2unixの冒頭部分。
dos2unix(1) 2017-10-10 dos2unix(1) NAME dos2unix - DOS/Mac to Unix and vice versa text file format converter SYNOPSIS dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...] unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...] DESCRIPTION The Dos2unix package includes utilities "dos2unix" and "unix2dos" to convert plain text files in DOS or Mac format to Unix format and vice versa. In DOS/Windows text files a line break, also known as newline, is a combination of two characters: a Carriage Return (CR) followed by a Line Feed (LF). In Unix text files a line break is a single character: the Line Feed (LF). In Mac text files, prior to Mac OS X, a line break was single Carriage Return (CR) character. Nowadays Mac OS uses Unix style (LF) line breaks.
Macの場合
takk~$ brew install dos2unix
Macでもman dos2unixの冒頭。
dos2unix(1) 2019-09-24 dos2unix(1) NAME dos2unix - DOS/Mac to Unix and vice versa text file format converter SYNOPSIS dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...] unix2dos [options] [FILE ...] [-n INFILE OUTFILE ...] DESCRIPTION The Dos2unix package includes utilities "dos2unix" and "unix2dos" to convert plain text files in DOS or Mac format to Unix format and vice versa. In DOS/Windows text files a line break, also known as newline, is a combination of two characters: a Carriage Return (CR) followed by a Line Feed (LF). In Unix text files a line break is a single character: the Line Feed (LF). In Mac text files, prior to Mac OS X, a line break was single Carriage Return (CR) character. Nowadays Mac OS uses Unix style (LF) line breaks. Besides line breaks Dos2unix can also convert the encoding of files. A 以下省略
あれ? Macのdos2unixのmanって、Linuxのと同じですね。
同じ名前ですし、同じコマンドなんですね。
使ってみましょう。
Linuxでこのようなテキストを作成。
takk~$ cat linux.txt abcdefg hijklmn opqrstu takk~$
Macでも同じテキストを作成。
takk@makku ~ % cat mac.txt abcdefg hijklmn opqrstu takk@makku ~ %
次に、同じ内容のテキストをWindowsで作成し、Linuxにもってきます。ファイル名はwin.txtとします。
両者をls表示して比較してみましょう。
takk~$ ls -l *.txt -rw-r--r-- 1 takk takk 24 Jun 2 21:08 linux.txt -rw-r--r-- 1 takk takk 24 Jun 2 21:08 mac.txt -rwxr-xr-x 1 takk takk 27 Jun 2 21:10 win.txt takk~$
Windowsは改行コードが異なるので、ファイルサイズも違いますね。3行のテキストファイルなので、3BYTE差があります。
odでのダンプでも比較してみましょう。
takk~$ od -tx1a -An linux.txt 61 62 63 64 65 66 67 0a 68 69 6a 6b 6c 6d 6e 0a a b c d e f g nl h i j k l m n nl 6f 70 71 72 73 74 75 0a o p q r s t u nl takk~$ takk~$ od -tx1a -An mac.txt 61 62 63 64 65 66 67 0a 68 69 6a 6b 6c 6d 6e 0a a b c d e f g nl h i j k l m n nl 6f 70 71 72 73 74 75 0a o p q r s t u nl takk~$ takk~$ od -tx1a -An win.txt 61 62 63 64 65 66 67 0d 0a 68 69 6a 6b 6c 6d 6e a b c d e f g cr nl h i j k l m n 0d 0a 6f 70 71 72 73 74 75 0d 0a cr nl o p q r s t u cr nl takk~$
MacとLinuxは完全一致です。
では、dos2unix、使ってみます。
Windowsの改行コードをlinux用に変換します。
dos2unixコマンドは、破壊的置換。つまりファイルをそのまま変換してしまうので、テンポラリファイルを作成し、そちらを変換するようにします。
takk~$ cp win.txt tmp.txt takk~$ dos2unix tmp.txt dos2unix: converting file tmp.txt to Unix format... takk~$ cmp tmp.txt linux.txt takk~$
変換後のWindowsのテキストが、Linuxのテキストと一致しました。
念のためサイズも見てみます。
takk~$ ls -l *.txt -rw-r--r-- 1 takk takk 24 Jun 2 21:08 linux.txt -rw-r--r-- 1 takk takk 24 Jun 2 21:08 mac.txt -rwxr-xr-x 1 takk takk 24 Jun 2 21:19 tmp.txt -rwxr-xr-x 1 takk takk 27 Jun 2 21:10 win.txt takk~$
tmp.txtは、サイズも24で一致してますね。
今度は、LinuxのテキストをWindowsの改行コードに変換します。同じようにtmp.txtを使います。
takk~$ cp linux.txt tmp.txt takk~$ unix2dos tmp.txt unix2dos: converting file tmp.txt to DOS format... takk~$ cmp tmp.txt win.txt takk~$ ls -l *.txt -rw-r--r-- 1 takk takk 24 Jun 2 21:08 linux.txt -rw-r--r-- 1 takk takk 24 Jun 2 21:08 mac.txt -rwxr-xr-x 1 takk takk 27 Jun 2 21:20 tmp.txt -rwxr-xr-x 1 takk takk 27 Jun 2 21:10 win.txt takk~$
こちらも一致しました。
コメント