UNIX/Linuxの部屋 uuencodeコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド uuencode バイナリファイルをプレインテキストに変換 このエントリーをはてなブックマークに追加

最終更新


UNIX/Linux の uuencode コマンドは、バイナリファイルをプレインテキストに変換するコマンドである。メールやネットニュースでバイナリファイルを送るときなどによく使われていた。また、巨大なテキストファイルを gzip で圧縮して uuencode する、という使い方もある。元に戻すには uudecode コマンドを使う。



uuencode コマンドの基本的な使い方
uuencode の使い方は下記のとおり。
% uuencode [展開先でのファイル名] < [エンコードしたいファイル名]
例えば以下のようにする。
% uuencode hoge.txt < ./foo/bar/hoge.txt
すると、標準出力に下記のようなエンコード後のファイルが出力される。
begin 644 hoge.txt
M(V-S:"`N8W-H<F,@9FEL90H*<V5T(&9R965B>V1?<&%T:"`]("@@7`H)?B][
M+&)I;BQI;G-T86QL+V)I;GT@+W5S>B]L;V-A;"]B:6XO5VYN-B`O=7-R+VQO
(略)
M4$]35$=215-?2$]-17TO;6%N"G-E=&5N=B!0051(("1[4$%42'TZ)'M03U-4
M+V)I;CHD>U!!5$A]"@H*(RTM+2TM+2TM+2TM+2TM"B,@<&]S=&=R97,*"G-E
/1U)%4U](3TU%?2]B:6X*
`
end

普通は、
% uuencode hoge.txt < /home/foo/bar/hoge.txt > hoge.txt.uuencode
などと結果をファイルにリダイレクトして、それをメール文中に挿入したり、
% uuencode hoge.txt < /home/foo/bar/hoge.txt | mail foo@example.com
と直接メールで送信したりする。

uudecode によるデコード
uuencode でエンコードしたファイルをデコードするには
% uudecode < hoge.txt.uuencode
とする。

すると、「begin 644 XXXXX」の部分に書かれたファイル名が作成される。uudecode は内容を解析し、begin〜end 間のみをデコード対象とする。よって、メールで uuencode のデータを受け取った場合、メールヘッダやシグネチャをわざわざ削除せずに uudecode でデコードすることができる。もっとも、最近のメーラーであれば、自動的に uuencode の部分を解析し、あたかも multipart メール (いわゆる添付ファイル) のように見せる機能を持っている。

uudecode オプションは以下の通り。
  • -p ファイルを生成するのではなく、標準出力に出力する。

エンコード結果中のファイル名について
エンコードしたいファイルの名前と展開先の名前を合わせる必要はないので、
% uuencode hoge < fuga
とすれば、fuga というファイルを展開するとカレントディレクトリに hoge というファイルが作成される。展開先ファイル名はフルパスを指定してもよく、
% uuencode /home/68user/fuga.txt < fuga.txt
とすると
begin 644 /home/68user/hoge.txt
(略)
というデータが生成される。これを uudecode したときの挙動は OS によって違うようだ。
  • FreeBSD 4.4-RELEASE の /usr/bin/uuencode は /home/68user/ の部分を無視し、カレントディレクトリに hoge.txt というファイルを生成する。ただし -s オプションを指定すると /home/68user/hoge.txt というファイルを生成する。
  • Solaris 2.6、Solaris 8 の /usr/bin/uuencode は、/home/68user/hoge.txt というファイルを生成する。

uuencode のエンコード方法
uuencode のエンコード方法は、3バイトを 4バイトに変換することである。よって、エンコード後のファイルサイズは元ファイルのサイズより 33% 程度 (4/3) 大きくなる。もしサイズを小さくしたいなら、
% gzip -c hoge.txt | uuencode hoge.txt.gz > hoge.txt.gz.uuencode
などと gzip や bzip2 で圧縮してから uuencode すればよい。

歴史
1995年頃までは、ソフトウェアの配布は uuencode されたものをネットニュースに投稿することが多かった。理由は下記が考えられる。
  • ソフトウェアの開発元が個人である場合、自身の Web サイトを持っていない
  • 所属元の Web サーバがあるとしても、負荷をかけることを避けたい
  • 海外からのダウンロードは、とてつもなく時間がかかる
いずれも 2000年頃には状況が改善したため、ソフトウェアの配布においては uuencode はほとんど使用されなくなっている。

また、2000年頃まではよりメールへのファイル添付に uuencode を使うことが多かった。その後は MIME 規格の普及により、uuencode の利用機会は減ってきている。
>> FreeBSDオンラインマニュアル(man) FreeBSD uuencode(1)
>> Linuxオンラインマニュアル(man) Linux uuencode(5)
>> Linuxオンラインマニュアル(man) Linux uuencode(1)