shar - コマンド (プログラム) の説明 - Linux コマンド集 一覧表
名前
shar - シェルアーカイブを作成する
書式
shar [ options ] file ... shar -S [ options ]
説明
shar は「シェルアーカイブ (shar ファイル)」を作成する。 これはテキスト形式なので、メールで送ることができる。 これらのファイルをほどくには、 /bin/sh を使って実行すればよい。 作成されたアーカイブは、2-o1 オプションで指示されない限り、 標準出力に送られる。 shar には様々な機能があるので、 shar ファイルの作成や shar の「賢さ (smartness)」の指定は、非常に柔軟に行うことができる。 アーカイブは、「簡潔 (vanilla)」にも詳細にもできる。
オプション
オプションには、- で始まる 1 文字のバージョンと、 -- で始まる長いバージョンがある。 2--help1, 2--version1, 2--no-i18n1, 2--print-text-domain-dir1 は例外で、 短いバージョンがない。 長いオプションに必須の引き数は、短いオプションでも必須である。 オプションはどのような順番でも与えることができる。 互いに依存しているオプションもある。たとえば、
2-l1 や 2-L1 オプションを使う場合、2-o1 オプションが必要である。 2-a1 オプションを使う場合、2-n1 オプションが必要である。 下記の 2-V1 オプションも参照すること。
フィードバックを与える:
ヘルプを標準出力に表示し、すぐに終了する。
プログラムのバージョン番号を標準出力に表示し、すぐに終了する。
アーカイブを作成するとき、詳細なメッセージを出力しない。
ファイルの選択:
指定位置に依存するパラメーターオプションの使用を許す。
2-B1, 2-T1, 2-z1, 2-Z1 オプションを
(ファイルリストに) 入れてよい。
このオプションの後ろのファイルはすべて、指示されたモードで処理される。
コマンドラインからではなく、標準入力からパックするファイルの一覧を読み込む。
入力は find コマンドで生成される形式と同じく、
1 行に 1 つのファイル名でなければならない。
パックするファイルの一覧をコマンドラインに書けない場合に、
このオプションは非常に役立つ。たとえば、
2-p1 が指定された場合、 2-B1, 2-T1, 2-z1, 2-Z1 オプションを 標準入力に入れることができる (行はファイル名で区切られる)。 標準入力の行数、ファイル名、オプションは最大 1024 を越えてはならない。
find . -type f -print | sort | shar -S -Z -L50 -o /tmp/big
出力の分割:
アーカイブを標準出力に送らず、ファイル XXX.01 から XXX.nn に保存する。
2-l1 または 2-L1 オプションを使う場合、
このオプションを使うこと。
出力ファイルのサイズを XX キロバイトに制限しようとする
(このサイズより小さくなる場合は、
複数の入力ファイルをまとめた出力ファイルを作成する)。
しかし、(1 つの入力ファイルをアーカイブしたサイズが
これより大きくなる場合でも) 入力ファイルを途中で分割しない。
出力ファイルのサイズを XX キロバイトに制限し、必要ならば分割する。
このオプションで作られた、分割形式のアーカイブファイルは、
正しい順番でファイルを取り出さなければならない。
shar ヘッダーの制御:
shar ファイルのヘッダーにアーカイブ名を入れる。
2-a1 オプションを参照すること。
自動的に決定される作成者名を上書きする。
次のようなヘッダーを自動生成する。
Submitted-by: who@where Archive-name: <name>/part##<name> は 2-n1 オプションで指示しなければならない。 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 がデフォルトでは不適切な場合、2-s1 オプションを使って明示的に宣言できる。 who@where は本来 `whoami`@`uname` で作られる。
shar ファイルを cut line で始める。'Cut here' と書かれた行が、 各出力ファイルの先頭に置かれる。
ファイルの格納法の選択:
混合モード。ファイルがテキストなのかバイナリなのかを決定し、
正しくアーカイブを作る (デフォルトである)。
バイナリであるとわかったファイルは、パックする前に uuencode される
(ネットワーク上の多くの人に、uuencode の使用は煙たがられる)。
すべてのファイルをテキストとして扱う。
すべてのファイルをバイナリとして扱い、パックする前に uuencode する。
このオプションは、アーカイブのサイズを増大させる。
受信者は、ファイルを取り出すために uudecode を持っていなければならない
(ネットワーク上の多くの人に、uuencode の使用は煙たがられる)。
パックする前に、すべてのファイルを gzip して uuencode する。
受信者は、ファイルを取り出すために uudecode と gzip を持っていなければならない
(ネットワーク上の多くの人に、uuencode と gzip の
使用は煙たがられる)。
圧縮するとき、'-LEVEL' を gzip のパラメーターとして使う。
デフォルトは 9 である。
2-g1 オプションは、デフォルトで 2-z1 オプションをオンにする。
パックする前に、すべてのファイルを compress して uuencode する。
受信者は、ファイルを取り出すために
uudecode と compress を持っていなければならない
(ネットワーク上の多くの人に、uuencode と compress の
使用は煙たがられる)。
2-C1 オプションは、2-Z1 と同義であるが、推奨されない。
圧縮するとき、'-bBITS' を compress のパラメーターとして使う。
2-B1 オプションは、デフォルトで 2-Z1 オプションをオンにする。
デフォルトの値は 12 である。
転送エラーに対する保護:
ファイルを取り出すした後、'wc -c' を使って各ファイルをチェックしない。
デフォルトではチェックする。
取り出したファイルを検査するために 'md5sum' ダイジェストを使わない。
デフォルトでは、チェックする。
必要がない場合でも、強制的にプレフィックス文字
(2-d1 オプションの引き数が 'X' で始まっていない限り、通常は 'X') を
すべての行の行頭におく。
特に 2-B1 や 2-Z1 が使われる場合、
このオプションはアーカイブのサイズを少し増加させる。
SHAR_EOF のかわりに XXX を shar アーカイブの中のファイルの境界に使う。
このオプションは、shar ファイルをその人独自のものにしたい人のためにある。
何種類かの shar ファイルの作成:
unshar をする環境に sed と echo だけがあれば良いような、
「簡潔な (vanilla)」shar ファイルを生成する。
さらに、2-x1 オプションを使わないときは、
"if test" をサポートしなければならない。
2-V1 オプションは、"network cop" (または、"brown shirt"
(訳註:やたらと検閲したがる人)) が
不快に感じるオプションを暗黙のうちに不可にする。
しかし、2-B1, 2-z1, 2-Z1, 2-p1, 2-M1
オプションと同時に指定されると、警告を発する
(これらのオプションは、unshar をする環境に
uudecode, gzip, compress を必要とする)。
shar ファイル (の展開) にパイプではなく一時ファイルを使う。
チェックせずに、既に存在するファイルを上書きする。
2-x1 も 2-X1 も指定されない場合は、
アーカイブからファイルを取り出すときに、
既に存在するファイルをチェックして上書きしない。
ファイルを取り出すとき、
sh archive -c
というように、2-c1 がスクリプトへの引き数として渡されると、
既に存在するファイルが無条件に上書きされる。
ファイルを取り出すとき、ファイルの上書きをユーザーに対話的に尋ねる。
(ネットワーク上に送信する shar ファイルに使ってはならない)。
アーカイブからファイルを取り出すときに 'touch' コマンドを生成しない。
ファイル修正日時は復元されない。
詳細出力をしない。
ファイルを取り出すときに出力されるコメントをアーカイブに含めない。
パスを考慮せず、ファイル名だけで復元をする。
このオプションはファイル名だけが使われるようにする。
shar ファイルが複数のディレクトリから作られる場合に役立つ。
ディレクトリ名が shar に渡される場合、
2-f1 オプションが指定されているかどうかに関係なく、
そのディレクトリ以下の階層は復元されることに注意すること。
国際化:
国際化されたシェルアーカイブを作らず、デフォルトの英語メッセージを使う。
shar は通常、
アーカイブからファイルを取り出すときに
(環境変数 LANG/LC_MESSAGES で決定される) その人の好みの言語で
メッセージを出力することができるアーカイブを作る。
ファイルを取り出すとき、その人の言語のメッセージファイルがない場合は、
メッセージは英語になる。
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 にディレクトリを渡すときは、 出力ファイルをそのディレクトリ (もしくはそのサブディレクトリ) に 置かないように注意すること。
2-B1, 2-z1, 2-Z1, 特に 2-M1 を使うと、 ファイル数に応じてアーカイブプロセスが非常に遅くなる。
2-X1 オプションを使うと、多くの unshar プロセスで 2違いなく1 問題を引き起こす shar ファイルが作られる。 この機能を使うのは、合意の取れた集団内で受け渡されるアーカイブのみにすること。 もちろん、2-X1 は Usenet に発信される シェルアーカイブのためのものではない。 2-B1, 2-z1, 2-Z1 をネットワーク上の shar ファイルに使うと、 非常に非難されるだろう。 2-m1 と 2-F1 を使わない場合も、時々苦情を言われるだろう。
関連項目
unshar(1)
返り値
不正なオプション・矛盾するオプション、 一般でないファイル・見つからないファイル・アクセスできないファイル、 (有り得ない) メモリ割り当ての失敗、に対するエラーメッセージ。
著者
shar と unshar プログラムは多くの著者の協同作品である。
多くの人々が、問題の報告・いろいろな改良の示唆・実際のコードの提供に
貢献してくれた。
これらの人々は sharutils ディストリビューションの
THANKS というファイルにリストされている。