EN JA
SHAR(1)
SHAR(1) FreeBSD General Commands Manual SHAR(1)

名前

shar -シェルアーカイブを作成する

書式


shar [ options ] file ...
shar -S [ options ]

説明

shar は「シェルアーカイブ (shar ファイル)」を作成する。これはテキスト形式なので、メールで送ることができる。これらのファイルをほどくには、 /bin/sh を使って実行すればよい。作成されたアーカイブは、 -o オプションで指示されない限り、標準出力に送られる。 shar には様々な機能があるので、 shar ファイルの作成や shar の「賢さ (smartness)」の指定は、非常に柔軟に行うことができる。アーカイブは、「簡潔 (vanilla)」にも詳細にもできる。

オプション

オプションには、-で始まる 1 文字のバージョンと、--で始まる長いバージョンがある。 --help, --version, --no-i18n, --print-text-domain-dir は例外で、短いバージョンがない。長いオプションに必須の引き数は、短いオプションでも必須である。オプションはどのような順番でも与えることができる。互いに依存しているオプションもある。たとえば、
-l-L オプションを使う場合、 -o オプションが必要である。
-a オプションを使う場合、 -n オプションが必要である。
下記の -V オプションも参照すること。

フィードバックを与える:

--help
ヘルプを標準出力に表示し、すぐに終了する。
--version
プログラムのバージョン番号を標準出力に表示し、すぐに終了する。
-q --quiet --silent
アーカイブを作成するとき、詳細なメッセージを出力しない。

ファイルの選択:

-p --intermix-type
指定位置に依存するパラメーターオプションの使用を許す。 -B, -T, -z, -Z オプションを (ファイルリストに) 入れてよい。このオプションの後ろのファイルはすべて、指示されたモードで処理される。
-S --stdin-file-list
コマンドラインからではなく、標準入力からパックするファイルの一覧を読み込む。入力は find コマンドで生成される形式と同じく、 1 行に 1 つのファイル名でなければならない。パックするファイルの一覧をコマンドラインに書けない場合に、このオプションは非常に役立つ。たとえば、


find . -type f -print | sort | shar -S -Z -L50 -o /tmp/big


-p が指定された場合、 -B, -T, -z, -Z オプションを標準入力に入れることができる (行はファイル名で区切られる)。標準入力の行数、ファイル名、オプションは最大 1024 を越えてはならない。

出力の分割:

-o XXX --output-prefix=XXX
アーカイブを標準出力に送らず、ファイル XXX.01 から XXX.nn に保存する。 -l または -L オプションを使う場合、このオプションを使うこと。
-l XX --whole-size-limit=XX
出力ファイルのサイズを XX キロバイトに制限しようとする (このサイズより小さくなる場合は、複数の入力ファイルをまとめた出力ファイルを作成する)。しかし、(1 つの入力ファイルをアーカイブしたサイズがこれより大きくなる場合でも) 入力ファイルを途中で分割しない。
-L XX --split-size-limit=XX
出力ファイルのサイズを XX キロバイトに制限し、必要ならば分割する。このオプションで作られた、分割形式のアーカイブファイルは、正しい順番でファイルを取り出さなければならない。

shar ヘッダーの制御:

-n name --archive-name=name
shar ファイルのヘッダーにアーカイブ名を入れる。 -a オプションを参照すること。
-s who@where --submitter=who@where
自動的に決定される作成者名を上書きする。
-a --net-headers
次のようなヘッダーを自動生成する。
Submitted-by: who@where
Archive-name: <name>/part##
<name>は -n オプションで指示しなければならない。 name に '/' が含まれている場合、"/part"は使われない。つまり、
 

-n xyzzy の場合:
xyzzy/part01
xyzzy/part02


-n xyzzy/patch の場合:
xyzzy/patch01
xyzzy/patch02


-n xyzzy/patch01. の場合:
xyzzy/patch01.01
xyzzy/patch01.02


who@where がデフォルトでは不適切な場合、 -s オプションを使って明示的に宣言できる。 who@where は本来 `whoami`@`uname` で作られる。
-c --cut-mark
shar ファイルを cut line で始める。'Cut here' と書かれた行が、各出力ファイルの先頭に置かれる。

ファイルの格納法の選択:

-M --mixed-uuencode
混合モード。ファイルがテキストなのかバイナリなのかを決定し、正しくアーカイブを作る (デフォルトである)。バイナリであるとわかったファイルは、パックする前に uuencode される (ネットワーク上の多くの人に、uuencode の使用は煙たがられる)。
-T --text-files
すべてのファイルをテキストとして扱う。
-B --uuencode
すべてのファイルをバイナリとして扱い、パックする前に uuencode する。このオプションは、アーカイブのサイズを増大させる。受信者は、ファイルを取り出すために uudecode を持っていなければならない (ネットワーク上の多くの人に、uuencode の使用は煙たがられる)。
-z --gzip
パックする前に、すべてのファイルを gzip して uuencode する。受信者は、ファイルを取り出すために uudecode と gzip を持っていなければならない (ネットワーク上の多くの人に、uuencode と gzip の使用は煙たがられる)。
-g LEVEL --level-for-gzip=LEVEL
圧縮するとき、'-LEVEL' を gzip のパラメーターとして使う。デフォルトは 9 である。 -g オプションは、デフォルトで -z オプションをオンにする。
-Z --compress
パックする前に、すべてのファイルを compress して uuencode する。受信者は、ファイルを取り出すために uudecode と compress を持っていなければならない (ネットワーク上の多くの人に、uuencode と compress の使用は煙たがられる)。 -C オプションは、 -Z と同義であるが、推奨されない。
-b BITS --bits-per-code=BITS
圧縮するとき、'-bBITS' を compress のパラメーターとして使う。 -B オプションは、デフォルトで -Z オプションをオンにする。デフォルトの値は 12 である。

転送エラーに対する保護:

-w --no-character-count
ファイルを取り出すした後、'wc -c' を使って各ファイルをチェックしない。デフォルトではチェックする。
-D --no-md5-digest
取り出したファイルを検査するために 'md5sum' ダイジェストを使わない。デフォルトでは、チェックする。
-F --force-prefix
必要がない場合でも、強制的にプレフィックス文字 ( -d オプションの引き数が 'X' で始まっていない限り、通常は 'X') をすべての行の行頭におく。特に -B-Z が使われる場合、このオプションはアーカイブのサイズを少し増加させる。
-d XXX --here-delimiter=XXX
SHAR_EOF のかわりに XXX を shar アーカイブの中のファイルの境界に使う。このオプションは、shar ファイルをその人独自のものにしたい人のためにある。

何種類かの shar ファイルの作成:

-V --vanilla-operation
unshar をする環境に sed と echo だけがあれば良いような、「簡潔な (vanilla)」shar ファイルを生成する。さらに、 -x オプションを使わないときは、 "if test"をサポートしなければならない。 -V オプションは、"network cop" (または、"brown shirt" (訳註:やたらと検閲したがる人)) が不快に感じるオプションを暗黙のうちに不可にする。しかし、 -B, -z, -Z, -p, -M オプションと同時に指定されると、警告を発する (これらのオプションは、unshar をする環境に uudecode, gzip, compress を必要とする)。
-P --no-piping
shar ファイル (の展開) にパイプではなく一時ファイルを使う。
-x --no-check-existing
チェックせずに、既に存在するファイルを上書きする。 -x-X も指定されない場合は、アーカイブからファイルを取り出すときに、既に存在するファイルをチェックして上書きしない。ファイルを取り出すとき、
 
sh archive -c

というように、 -c がスクリプトへの引き数として渡されると、既に存在するファイルが無条件に上書きされる。
-X --query-user
ファイルを取り出すとき、ファイルの上書きをユーザーに対話的に尋ねる。 (ネットワーク上に送信する shar ファイルに使ってはならない)。
-m --no-timestamp
アーカイブからファイルを取り出すときに 'touch' コマンドを生成しない。ファイル修正日時は復元されない。
-Q --quiet-unshar
詳細出力をしない。ファイルを取り出すときに出力されるコメントをアーカイブに含めない。
-f --basename
パスを考慮せず、ファイル名だけで復元をする。このオプションはファイル名だけが使われるようにする。 shar ファイルが複数のディレクトリから作られる場合に役立つ。ディレクトリ名が shar に渡される場合、 -f オプションが指定されているかどうかに関係なく、そのディレクトリ以下の階層は復元されることに注意すること。

国際化:

--no-i18n
国際化されたシェルアーカイブを作らず、デフォルトの英語メッセージを使う。 shar は通常、アーカイブからファイルを取り出すときに (環境変数 LANG/LC_MESSAGES で決定される) その人の好みの言語でメッセージを出力することができるアーカイブを作る。ファイルを取り出すとき、その人の言語のメッセージファイルがない場合は、メッセージは英語になる。
--print-text-domain-dir
shar がいろいろな言語のメッセージファイルを見つけるためのディレクトリを表示し、すぐに終了する。


shar *.c > cprog.shar # すべての C プログラムソース
shar -Q *.[ch] > cprog.shar # 詳細出力なし。.c と .h ファイル
shar -B -l28 -oarc.sh *.arc # すべてのバイナリ .arc ファイルを、
# ファイル arc.sh.01 - arc.sh.NN へ
shar -f /lcl/src/u*.c > u.sh # ファイル名のみを使用

警告

ファイルを取り出すとき作られるディレクトリに対して、 chmod と touch が起動されることはない。よって、ディレクトリを shar でパックすると、取り出されたディレクトリのアクセス権・修正日時は、元のディレクトリのものと一致しない。

shar にディレクトリを渡すと、ディレクトリは 2 回以上スキャンされる。よって、shar が動作している間にディレクトリを変更しないように注意しなければならない。

出力ファイルが入力ファイルに含まれないように注意すること。さもないと、shar はディスクが溢れるまでループする。特に、shar にディレクトリを渡すときは、出力ファイルをそのディレクトリ (もしくはそのサブディレクトリ) に置かないように注意すること。

-B, -z, -Z, 特に -M を使うと、ファイル数に応じてアーカイブプロセスが非常に遅くなる。

-X オプションを使うと、多くの unshar プロセスで \[u9593]違いなく 問題を引き起こす shar ファイルが作られる。この機能を使うのは、合意の取れた集団内で受け渡されるアーカイブのみにすること。もちろん、 -X は Usenet に発信されるシェルアーカイブのためのものではない。 -B, -z, -Z をネットワーク上の shar ファイルに使うと、非常に非難されるだろう。 -m-F を使わない場合も、時々苦情を言われるだろう。

関連項目

unshar(1)

返り値

不正なオプション・矛盾するオプション、一般でないファイル・見つからないファイル・アクセスできないファイル、 (有り得ない) メモリ割り当ての失敗、に対するエラーメッセージ。

著者

shar と unshar プログラムは多くの著者の協同作品である。多くの人々が、問題の報告・いろいろな改良の示唆・実際のコードの提供に貢献してくれた。これらの人々は sharutils ディストリビューションの THANKS というファイルにリストされている。
 
 
 
 
September 10, 1995