cp - ファイルをコピーする
形式
- cp [–cfimMUv] [–p|F format|B|T|X] [-W seqparms=params] [–Z] [–O u | c=codeset] file1 file2
- cp [–ACcfimMUv] [–p|F format|B|T|X] [–S suffix] [–Z] [–O u | c=codeset] file …file … directory
- cp –R [-H|L|P] [–cfimp] [–Z] [–O u | c=codeset] source… directory
- cp –r [-H|L|P] [–cfimp] [–Z] [–O u | c=codeset] source… directory
- cp [–cfimMUv] [–p|F format|B|T|X] [–P params] [-W seqparms=params] [–Z] [–O u | c=codeset] file1 file2
- cp [–ACcfimMUv] [–p|F format|B|T|X] [–S suffix] [–Z] [–O u | c=codeset] file …file … directory
- cp –R [-H|L] [–cfimp] [–Z] [–O u | c=codeset] source… directory
- cp –r [-H|L] [–cfimp] [–Z] [–O u | c=codeset] source… directory
説明
cp は、ファイル (複数でもよい) をそのコマンド行の最後の引数で指定された ターゲットへコピーします。 ターゲットが既存のファイルの場合は、cp はそれを上書きします。ターゲットが存在しない場合は、cp はそれを作成します。ターゲット・ファイルが存在し ていて、書き込み許可がない場合は、cp はアクセスを拒否し、次のコピーを続行します。
3 つ以上のパス名を指定する場合は、最後のパス名 (すなわち、ターゲット) はディレクトリーでなければ なりません。ターゲットがディレクトリーの場合は、cp はソースをそのディレクトリーに コピーし、ソース・パス名の最後のコンポーネントによって与えられた名前を付けます。
cp を使用して、MVS™ データ・セットとの間でファイルをコピーす ることもできます。コピーするファイルを複数指定する場合には、ターゲット (コマンド行の最 後のパス名) はディレクトリーまたは区分データ・セットのいずれかでなけ ればなりません。ターゲットが MVS 区分データ・セットの場合、ソースを UNIX ディレクトリ ーにすることはできません。
cp は世代別データ・グループ (GDG) 間のコピーをサポートしていません。 これらの MVS データ・セットを使用するには、 実際のデータ・セット名を指定する必要があります。また、cp は一時 PDSE へのコピーもサポートしていません。
レコードをコピーするとき、ストリング " ¥n" はストリング "¥n" と同様にコピーさ れます。すなわち、両方とも "¥n" として読み戻されます。ここで、"¥n" は 、z/OS XL C++ が単一ブランクを含むレコードをファイルに書き込むことを示 します (z/OS XL C/C++ のデフォルトの動作です)。 出力内の他のブランクはすべてブランクとして読み戻され、空の (長さがゼ ロの) レコードは入力では無視されます。ただし、cp の呼び出し前に 環境変数 _EDC_ZERO_RECLEN が Y に 設定されていれば、空のレコードは単一改行文字として扱われ、無視されません。また、_EDC_ZERO_RECLEN が Y に設定されていれば、 単一改行文字は空のレコードしてファイルに書き込まれ、単一ブランクは "¥n" で表されます。
- あるファイルを作業ディレクトリーの別のファイルへ
- あるファイルを別のディレクトリーの新しいファイルへ
- ディレクトリーとファイルのセットをファイル・システムの別の場所へ
- UNIX ファイルを MVS データ・セットへ
- MVS データ・セットをファイル・システムへ
- MVS データ・セット間で
オプション
- –A
- すべての接尾部 (最初のピリオドからターゲットの終わりまで) を切 り捨てることを指定します。–A は、–M および –C オプションに優先しま す。–A が最後に指定されたオプションであると、–S は オフになります。
- –B
- コピーするデータにバイナリー・データが含まれていることを指定し ます。–B を指定すると、cp の操作で <改行> 文字または DBCS データの特性が考慮されません。(このタイプの動作は UNIX システム間でコピーする際に一般的に見られるものです。)–B は、–F、–X、および –T と互いに排他的であるため、これらのオプションを複数指定すると、エラーになります。
- –C
- MVS データ・セット・メンバーの制約に合わせてファイル名を 8 文字 で切り捨てることを指定します。
- –c (UNIX 間のみ)
- コピー操作を完了するための十分な空きがディスケットにないとき、その交換をうながします。このオプションは、ディスケット・ドライブのないシステムには影響ありません。規則: 親ディレクトリーが新しいターゲット・ディスケットに存在する必要があります。
- –F format
-
コピーするときにファイルをバイナリー、テキスト、またはレコード・ファイル・フォーマットのどちらで扱うかを指定します。 テキスト・ファイルの場合は行の終わり区切り文字を指定します。さらに、ターゲットが UNIX ファイルであれば、ファイル・フォーマットを format に設定します。テキスト・ファイルの場合、UNIX から MVS へのコピーでは、行の終わり区切り文字は取り除かれます。 MVS から UNIX へのコピーでは、 行の終わり区切り文字が追加されます。 (コード・ページ IBM-1047 は、行の終わり区切り文字の有無を調べるために使用されます。) レコード・ファイル・フォーマットのファイルは、バイナリー・ファイルのように扱われます。
UNIX 間のコピーの際に -F が使用された場合、cp はターゲット・ファイルのフォーマットだけを設定し、行末区切り文字を置換しません。
format の設定が失敗した場合は警告が表示されますが、cp は、 コピーするよう指定された残りのファイルのコピーを続けます。
–F は、–B、–X、–p、 および –T と互いに排他的です。–F と共にこれらのオプション の 1 つを指定すると、エラーになります。–F を 2 回以上指定すると、最後に指定された –F が使 用されます。
format には、以下を指定できます。- not
- 指定されていません
- bin
- バイナリー・データ
- rec
- レコード。(ファイル・データは、接頭部の付いたレコードから成ります。レコードの接頭部には、後に続くレコードの長さが含まれます。シェル・コマンドの観点からは、このフォーマットのファイルはバイナリー・ファイルのように扱われます。)
- nl
- 改行文字
- cr
- キャリッジ・リターン
- lf
- 改行 (LF)
- crlf
- キャリッジ・リターン改行
- lfcr
- 改行キャリッジ・リターン
- crnl
- キャリッジ・リターン改行
- –f
- 開くことができない UNIX 宛先ファイルの除去と置換を試みます。
- -H
- コマンド行でソース・オペランドとして指定されたシンボリック・リンクに従います。
ツリー横断中に検出されるシンボリック・リンクには従いません。これは、-R または -r オプションが指定され、-H、-L、または -P オプションのいずれも指定されない場合のデフォルトの動作です。制約事項: このオプションを使用できるのは、-R または -r オプションが指定される場合のみです。
- –i
- UNIX ターゲットにコピーするとき、–i は、ファ イルが読み取り専用かどうかにかかわらず、既存のファイルを上書きしたい かどうかを尋ねます。
- -L
- コマンド行でソース・オペランドとして指定されたシンボリック・リンクおよびツリー横断中に検出されたシンボリック・リンクに従います。
制約事項: このオプションを使用できるのは、-R または -r オプションが指定される場合のみです。
- –M
- UNIX ファイルと MVS データ・セット・メンバーの間でコピーすると
きに、ファイル名の特定の文字を変換するように指定します。文字は次のように変換されます。
- UNIX での _ (下線) は、MVS データ・セット・メンバーでは @ に変換されます。また 、その逆も同様です。
- . UNIX の . (ピリオド) は、 MVS データ・セット・メンバーでは # に変換されます。また、その逆も同様です。
- UNIX の – (ダッシュ) は、 MVS データ・セット・メンバーの $ に変換されます。 また、その逆も同様です。
- –m (UNIX 間のみ)
- 各宛先ファイルの変更時刻およびアクセス時刻を、対応するソース・ファイルのものに設定します。 通常は、cp は宛先ファイルの変更時刻を現在の時刻に設定します。
- –O u | c=codeset
- ソースおよびターゲット・ファイルに関する自動変換を可能にします。
- –O u
- ターゲットが存在していて、空でもすでにタグ付きでもない場合、cp は
ターゲットが自動変換の候補になるためにターゲットのタグを変更しません。
新規のターゲットと既存のタグ付けされていない空ファイルに対しては、このオプションは有効ではなく、cp はデフォルトと同様に機能します。 デフォルトの動作については、cp での自動変換とファイル・タグの動作を参照してください。
cp を使用して UNIX ファイルから MVS データ・セットにコピーする場合、ソースがタグ付きテキスト・ファイルであれば、そのファイルは自動変換の候補となります。
MVS からまたは MVS への実行可能ファイルのコピーの場合、ソースとターゲットの両方に対して自動変換が使用不可になります。
- –O c=codeset
- cp にこのオプションを指定したときの動作については、cp での自動変換とファイル・タグの動作を参照してください。
codeset は、システムに認識されているコード・セット名かコード化数字セット ID (CCSID) のいずれかです。コード・セット名が存在する場合、その名前に関連付けられている数値 CCSID が使用されます。コマンド iconv -l は、既存の CCSID とそれらに対応するコード・セット名をリストすることに留意してください。
cp はタグをテキストまたはコード・セットに設定できない場合、テキスト・ファイルの破壊を防止するために失敗します。
重要: 自動変換が 正しく設定されていないか、またはソースが正しくタグ付けされていない場合、ターゲットは そのファイルの内容に一致しないタグのコード・セットで終わる可能性があります。
- -P
- _UNIX03 が YES である場合、コマンド行でソース・オペランドとして指定されたシンボリック・リンクにも、ツリー横断中に検出されたシンボリック・リンクにも従いません。
制約事項: このオプションを使用できるのは、-R または -r オプションが指定される場合のみです。
- –P params
- _UNIX03 が設定されていないか、YES でない場合、-P オプションは、新規順次データ・セット (存在しない場合) を作成するために必要なパラメーターの指定として扱われます。RECFM、LRECL、BLKSIZE、および SPACE を、CRTL fopen() 関数が
使用する形式で指定することができます。SPACE=(units,(primary,secondary) ここで、units には、次の値を使用できます。
- BLKSIZE を示す任意の正の整数
- CYL (大文字小文字混合)
- TRK (大文字小文字混合)
例えば、次のとおりです。
SPACE=(500,(100,500)) units, primary, secondary SPACE=(500,100) units and primary only
これらのパラメーターの指定方法については、「z/OS XL C/C++ プログラミング・ガイド」を参照してください。
注: CRTL fopen() 引数: LRECL は、固定長レコードの場合は長さを、可変長レコードの場合は最大長を、バイト単位で指定します。BLKSIZE は、レコードの物理ブロックの最大長をバイト単位で指定します。 RECFM は、データ・セットのレコード・フォーマットを指し、SPACE は、MVS データ・ セットのスペース属性を示します。 - –p (UNIX 間のみ)
- 変更およびアクセス時刻を保存します (–m オプションが行う
のと同じです)。それに加えて、権限があれば、ファイル・モード、ファイル・フォーマット、所有者、およびグループ所有者を保存します。さらに、拡張属性も保存します。可能な場合は、ファイルとディレクトリーの ACL も保存します。ファイル・システムが ACL をサポートしない場合には、ACL は保存されません。
–p と –F は互いに排他的です。両方を指定すると、エラ ー・メッセージが表示されます。
- –R (UNIX 間のみ)
- ソース・ツリーの「クローン」を作成します。cp は、source… に よって指定されたすべてのファイルおよびサブディレクトリーを directory にコピーします。スペシャル・ファイル (FIFO、文字特殊) の複写には細心の配慮をします。cp は、コマンド行でソース・オペランドとして指定されたシンボリック・リンクのみに従います。
- –r (UNIX 間のみ)
- ソース・ツリーの「クローン」を作成しますが、スペシャル・ファイル (FIFO、文字特殊) については考慮しません。したがって、cp は スペシャル・ファイルをコピーするのではなく、デバイスから読み取ろうと試みます。これは、より望ましい –R に似ていますが、あまり有用ではありません。
- –S d=suffix|a=suffix
-
- d=suffix
指定された接尾部をファイルから除去します。
- a=suffix
指定された接尾部をファイルに追加します。
- d=suffix
- –T
- コピーするデータにテキスト・データが含まれていることを指定し
ます。テキスト・データの取り扱いについては、使用上の注意を参照してください。このオプションは、IBM–1047 行の終わり区切り文字を探すもので、–F、–X、および –B と互いに排他的です。つまり、これらのオプションを複数指定すると、エラーになります。
注: –T は、UNIX ファイル・システム間でのコピーのときは無 視されます。
- –U
- MVS データ・セット・メンバーから UNIX ファイルへコピーするとき 、ファイル名を大文字のまま保持します。デフォルトでは、ファイル名は小文字にされます。
- –v
- 詳細
- -W seqparms=params
- 順次データ・セット (存在しない場合) を作成するために必要な
パラメーターを指定します。RECFM、LRECL、BLKSIZE、および SPACE を、CRTL fopen() 関数が使用する形式で指定することができます。SPACE=(units,(primary,secondary) ここで、units には、次の値を使用できます。
- BLKSIZE を示す任意の正の整数
- CYL (大文字小文字混合)
- TRK (大文字小文字混合)
例えば、以下のとおりです。
SPACE=(500,(100,500)) units, primary, secondary SPACE=(500,100) units and primary only
これらのパラメーターの指定方法については、「z/OS XL C/C++ プログラミング・ガイド」を参照してください。
注: CRTL fopen() 引数: LRECL は、固定長レコードの場合は長さを、可変長レコードの場合は最大長を、バイト単位で指定します。BLKSIZE は、レコードの物理ブロックの最大長をバイト単位で指定します。 RECFM は、データ・セットのレコード・フォーマットを指し、SPACE は、MVS データ・ セットのスペース属性を示します。このオプションは、_UNIX03 が設定されていないか、YES でない場合の -P params と同じです。複数の -P params および -W を指定すると、コマンドで最後に示される値が指定されます。
- –X
- コピーするデータが実行可能であることを指定します。–F、–T、 または –B オプションと一緒に使用することはできません。
- -Z
- ターゲット上での ACL 設定時に、エラー・メッセージを表示しないことを 指定します。戻りコードはゼロとなります。デフォルトの動作を使用してファイル・タグが設定された場合、失敗は抑止されます。デフォルトの動作については、cp での自動変換とファイル・タグの動作を参照してください。
–F|B|T または X のいずれも指定されないと、cp はまず、示された MVS データ・セットのフォーマットを検 査してから、ファイルのタイプを判別しようと試みます。
cp 上の –p オプションはファイル・タグに影響しません。
cp での自動変換とファイル・タグの動作
S | ターゲット・ファイル・システムがファイル・タグの設定をサポートする場合… | ターゲット・ファイル・システムがファイル・タグの設定をサポートしない場合 (例: NFS)… | ||
---|---|---|---|---|
ファイル・タグ | ソース・ファイルと同じようにターゲット・ファイルがタグ付けされます。 | 既存ターゲットのタグは変更されません。 ファイル・システムの属性に従って新規ターゲットがタグ付きで作成されます (MOUNT パラメーターは TAG を指定できます)。 |
ターゲットのタグは変更されません。
(ソース・ファイルまたはターゲット・ファイルの TXTFLAG が TEXT でタグ付けされている場合、そのファイルは自動変換の候補になります。) |
ターゲットの TXTFLAG が TEXT に設定され、そのコード・セットは codeset に設定されます。 |
自動変換 | ソースとターゲット・ファイルで使用不可 | ソースとターゲット・ファイルで許可 |
デフォルト (-O オプションを指定しない場合) | -O u オプションを指定する場合 | -O c=codeset オプションを指定する場合 | ||
---|---|---|---|---|
ターゲット・ファイル・システムがファイル・タグの設定をサポートする場合… | ターゲット・ファイル・システムがファイル・タグの設定をサポートしない場合 (例: NFS)… | |||
ファイル・タグ | ソース・ファイルと同じようにターゲット・ファイルがタグ付けされます。 | 既存ターゲットのタグは変更されません。 ファイル・システムの属性に従って新規ターゲットがタグ付きで作成されます (MOUNT パラメーターは TAG を指定できます)。 |
ターゲットのタグは変更されません。
(ソース・ファイルまたはターゲット・ファイルの TXTFLAG が TEXT でタグ付けされている場合、そのファイルは自動変換の候補になります。) |
ターゲットの TXTFLAG が TEXT に設定され、そのコード・セットは codeset に設定されます。 |
自動変換 | ソースとターゲット・ファイルで使用不可 | ソースとターゲット・ファイルで許可 |
デフォルト (-O オプションを指定しない場合) | -O u オプションを指定する場合 | -O c=codeset オプションを指定する場合 | ||
---|---|---|---|---|
ターゲット・ファイル・システムがファイル・タグの設定をサポートする場合… | ターゲット・ファイル・システムがファイル・タグの設定をサポートしない場合 (例: NFS)… | |||
ソースがテキストの場合 | ||||
ファイル・タグ | ターゲットには UNTAG が設定されます | 既存ターゲットのタグは変更されません。 ファイル・システムの属性に従って新規ターゲットがタグ付きで作成されます (MOUNT パラメーターは TAG を指定できます)。 |
ターゲットのタグは変更されません | ターゲットの TXTFLAG が TEXT に設定され、そのコード・セットは codeset に設定されます。 |
自動変換 | ターゲット・ファイルで使用不可 | ターゲット・ファイルで許可
(ターゲット・ファイルの TXTFLAG が TEXT でタグ付けされている場合、そのターゲット・ファイルは自動変換の候補になります。) |
||
ソースがバイナリーまたは実行可能ファイルの場合 | ||||
ファイル・タグ | ターゲットには UNTAG が設定されます | ターゲットのタグは変更されません | ターゲットの TXTFLAG が BINARY に設定され、そのコード・セットは codeset に設定されます。 | |
自動変換 | ターゲット・ファイルで使用不可 |
デフォルト (-O オプションを指定しない場合) | -O u オプションを指定する場合 | -O c=codeset オプションを指定する場合 | |
---|---|---|---|
ソースがテキストまたはバイナリーの場合 | |||
ファイル・タグ | ターゲット・データ・セットには適用されません | ||
自動変換 | ソース・ファイルで使用不可 | ソース・ファイルで許可 (ソース・ファイルの TXTFLAG が TEXT でタグ付けされている場合、そのソース・ファイルは自動変換の候補になります。) |
ソース・ファイルで使用不可 |
ソースが実行可能ファイルの場合 | |||
ファイル・タグ | ターゲット・データ・セットには適用されません | ||
自動変換 | ソース・ファイルで使用不可 |
制約と要件
一般的には、以下のとおりです。
- MVS データ・セット名を指定するには、名前の前にダブルスラッシュ
(//) を付けます。例えば、完全修飾データ・セット名 'turbo.gammalib' および
'turbo.gammalib(pgm1)' を指定するには、次のように入力します。
完全修飾でないデータ・セット名にも、同じ要件が適用されます。"//'turbo.gammalib'" "//'turbo.gammalib(pgm1)'"
//turbo
- PDS (区分データ・セット) または PDSE (拡張区分データ・セッ
ト) の場合、シェルによって構文解析されないようにするためには、名前を引用符
で囲むか、または最小限、括弧をエスケープする必要があります。例えば、'turbo(pgm1)' を指定するには、次のように引用符で囲みます。
または、次のように括弧をエスケープすることができます。"//turbo(pgm1)"
//turbo¥(pgm1¥)
上記に示したように、完全修飾名は単一引用符で囲む必要があります (TSO 内で行われるのと同じです)。単一引用符がシェルによって解釈されないようにするためには、単一引用符 をエスケープするか、または名前を正規の引用符内に入れなければなりません。'turbo.gammalib' の例を参照してください。
- UNIX ファイルをソースとして指定したときに、MVS データ・セット (タ ーゲット) が存在しないと、順次データ・セットが作成されます。区分データ・セットが存在する場合は、UNIX ファイルは区分データ・セット・メンバーにコピーされます。
- ソースが MVS データ・セットで、ターゲットが UNIX ディレクトリーの 場合は、その UNIX ディレクトリーが存在していなければなりません。
- ターゲットが区分データ・セットである場合は、ソースとして、UNIX デ ィレクトリー、区分データ・セット、または順次データ・セットを使用する ことはできません。
- 区分データ・セットからすべてのメンバーをコピーするには、ソー スとしてその区分データ・セットを指定し、ターゲットとして UNIX ディレ クトリーを指定することができます。
- データ・セット名には英大文字 (A から Z) だけを含めることができま す。小文字は、MVS データ・セットへのコピー中に大文字に変換されます。
- データ・セット名には、数字 0 から 9 と特殊文字 @、#、および $ を含める ことができます。
- データ・セット名を数字で始めることはできません。
- データ・セット・メンバー名が 8 文字を超えてはなりません。ファイル名が 8 文字より長いか、または MVS データ・セット名に認められていない文字を使用している場合、ファイルはコピーされません。–C オプションを使用すれば、名前 を 8 文字に切り捨てることができます。
- 未定義レコード・フォーマットの順次 MVS データ・セットを指定すると、ファ イルはバイナリーとしてコピーされます。
- 未定義レコード・フォーマットの PDSE を指定した場合、ファイルがどのフォーマットでコピーされるかは、正常にコピーされた最初のファイルによって決まり ます。PDSE ではフォーマットの混合は許可されないことに注意してください。正常にコピーされた最初のファイルが実行可能であると、PDSE はプログラム・オブジェクトだけを持つことになり、他のファイルはすべて 失敗します。これに反して、最初のファイルがデータであれば、すべてのファイルはバイ ナリーとしてコピーされます。
- 未定義レコード・フォーマットの PDS を指定した場合、UNIX 実行可能 は PDS ロード・モジュールとして保管されます。他のすべてのファイルはバイナリーとしてコピーされます。
- 可変長または固定長レコードのいずれかの MVS データ・セットを指定し たときに、ファイル・フォーマットを設定していなければ、テキスト・ファイルはテキ ストとして、バイナリーはバイナリーとして、実行可能はバイナリーとして 、それぞれコピーされます。(IBM-1047 行の終わり区切り文字がデータ内で検出されます。)
- ファイル・フォーマットを設定した場合は、設定値を使用して、データが バイナリー、テキスト、またはレコード・ファイル・フォーマットかが判別されます。
- UNIX ファイルが存在しない場合は、コピーするデータがバイナリーまたはテキストであるか関係なく、次の 666 モード値を使用して UNIX ファイルが作成されます。
コピーするデータが PDS または PDSE に常駐する不定形式レコード・フォーマットのシェル・スクリプトまたは実行可能ファイルである場合、次の 777 モード値を使用して UNIX ファイルが作成されます。666 mode value: owner(rw-) group(rw-) other(rw-)
777 mode value: owner(rwx) group(rwx) other(rwx)
- UNIX ファイルが存在し、ファイル・フォーマットが設定されていると、cp はファイルをそのフォーマットでコピーします。その他の場合、次のようになります。
- ロード・モジュール (PDS) は UNIX 実行可能モジュールとして保管され、プログラ ム・オブジェクト (PDSE) は、実行可能モジュールと同じであるのでコピーされます。
- 未定義レコード・フォーマットのデータ・セット内のデータは、データがプログラム ・オブジェクトまたはロード・モジュールでなければ、バイナリーとしてコ ピーされます。
- 固定長または可変長レコードのデータ・セット内で見つかったデータは 、テキストとしてコピーされます。(IBM-1047 行の終わり区切り文字がデータ内で検出されます。)
- –A、–C、–f、 および –S オプションは無視されます。
- ターゲットとソースが未定義レコード・フォーマットである (どちらも順次データ ・セットでない) 場合、cp はデータをロード・モジュールとして コピーしようとします。失敗すると、cp はデータをバイナリーとしてコピーします。
- ターゲットとソースが未定義レコード・フォーマットであり、いずれか一方が順次デ ータ・セットであると、cp はデータをバイナリーとしてコピーし ます。
- ソースが固定長または可変長レコードであり、ターゲットが未定義レコード・フォーマットである場合、cp はデータをバイナリーとしてコピーしま す。
- ソースが未定義レコード・フォーマットであり、ターゲットが固定長または可変長レ コードである場合、cp はデータをバイナリーとしてコピーしま す。
- ソースとターゲットの両方が固定長または可変長レコードである場合は 、cp はデータをテキストとしてコピーします。
- PDS は、プログラム管理機能を組み込んだロード・モジュールを保管す ることができません。
- c89 は、デフォルトでは、最高レベルのプログラム管理を使用 してオブジェクトを作成します。
- ロード・モジュールを PDS にコピーする計画がある場合は、リンケージ ・エディターと互換性のある出力を作成するプリリンカーを使用することができます。 リンケージ・エディター生成の出力は PDS に保管することができます。
表 5 は、cp でオプションを正しく使用するための早見表です。
ソース/ターゲット | 許可されるオプション | 無視されるオプション | 失敗するオプション |
---|---|---|---|
UNIX ファイル/UNIX ファイル | Ffip | ABCMPSTUX | |
UNIX ファイル/順次データ・セット | BFiPT | ACfMpSU | X |
UNIX ファイル/PDS または PDSE メンバー | BFiTX | ACfMPpSU | |
順次データ・セット/UNIX ファイル | BFfiTU | ACMPpS | X |
順次データ・セット/順次データ・セット | BFiPT | ACfMpSU | X |
順次データ・セット/PDS または PDSE メンバー | BFiT | ACfMPpSU | X |
PDS または PDSE メンバー/UNIX ファイル | BFfiTUX | ACMPpS | |
PDS または PDSE メンバー/順次データ・セット | BFiPT | ACfMpSU | X |
PDS または PDSE メンバー/PDS または PDSE メンバー | BFiTX | ACfMPpSU | |
UNIX ファイル/UNIX ディレクトリー | ACFipS | BMPTUX | |
PDSE または PDSE メンバー/UNIX ディレクトリー | BFfiMSTUX | ACMPp | |
UNIX ファイル/区分データ・セット | ABCFiMSTX | fPpU | |
PDS または PDSE メンバー/区分データ・セット | BFiTX | ACfMPpSU | |
区分データ・セット/UNIX ディレクトリー | ABCFfiMSTUX | Pp |
次の表は、cp を使用して許可されるコピーの種類を示しています。
ソース | ターゲット | 許可 |
---|---|---|
UNIX ファイル、順次データ・セット、 または区分データ・セット・メンバー | UNIX ファイル、順次データ・セット、 または区分データ・セット・メンバー | Yes |
UNIX ディレクトリー | UNIX ディレクトリー | No (cp を –R または –r と共に使用する場合 を除く) |
区分データ・セット | UNIX ディレクトリー (dir) 注: データ・セットの各メンバーの結果は dir に移動されます。 | Yes |
UNIX ディレクトリー | 区分データ・セット | No |
区分データ・セット | 区分データ・セット | No |
UNIX ファイルまたは区分データ・セット・メンバー | UNIX ディレクトリー (存在する必要がある) または区分データ・セット | Yes |
区分データ・セット・メンバー | 区分データ・セット | Yes |
ソース | ターゲット | 許可 |
---|---|---|
UNIX ファイルまたは区分データ・セット・メンバーの任意の組み合わせ | UNIX ディレクトリーまたは区分データ・セット | Yes |
UNIX ディレクトリーまたは順次データ・セットの任意の組み合わせ | 区分データ・セットまたは UNIX ディレクトリー | No |
区分データ・セット | UNIX ディレクトリー | Yes |
区分データ・セット | 区分データ・セット | No |
使用上の注意
- UNIX から区分データ・セットにコピーするためには、cp を行 う前に、そのデータ・セットを割り当てておかなければなりません。
- MVS データ・セットが存在しない場合、cp は、可変長レコード・フォーマットの新しい順次データ・セットを割り当てます。
- テキスト・ファイルの場合、すべての <改行> 文字はコピー中に取り
除かれます。<改行> 文字で終わるファイルの中の各行は、MVS データ・セットのレコ
ードにコピーされます。ソース・ファイルに対してテキスト・ファイル・フォーマットを指定したか、またはテ
キスト・ファイル・フォーマットがすでに存在する場合は、<改行> ではなく、その
ファイル・フォーマットが行の終わり区切り文字として使用されます。cp はデータ内で IBM-1047 という行の終わり区切り文字を探すことに注意してください。
テキスト・ファイルを、未定義レコード・フォーマットの MVS データ・セットにコピーす ることはできません。
- 固定長レコード・フォーマットの MVS データ・セットの場合、レコード・サイズを 超えるいずれかの行がコピーされると、cp は失敗し、エラー・メ ッセージとエラー・コードを表示します。行がレコード・サイズより短い場合、レコードにはブランクが埋め込まれます。
- 可変長レコード・フォーマットの MVS データ・セットの場合は、最大レコード・サ イズを超える行がコピーされると、cp は失敗し、エラー・メッセ ージとエラー・コードを表示します。レコード長は、その行の長さに設定されます。
- バイナリー・ファイルでは、コピーされたデータはすべて保存されます。
- 固定長レコード・フォーマットの MVS データ・セットの場合、データはレコード長 に等しいサイズのチャンクに分割されます。それぞれのチャンクは、1 つのレコードに入ります。最後のレコードにはブ ランクが埋め込まれます。
- 可変長レコード・フォーマットの MVS データ・セットの場合、データは最大レコー ド長に等しいサイズのチャンクに分割されます。それぞれのチャンクは、1 つのレコードに入ります。最後のレコードの長さは、残されたデータの長さに等しくなります。
- 未定義レコード・フォーマットの MVS データ・セットの場合、データはブロック・サ イズに等しいサイズのチャンクに分割されます。それぞれのチャンクは、1 つのレコードに入ります。最後のレコードの長さは、残されたデータの長さに等しくなります。
- ロード・モジュールの場合、指定する区分データ・セットは未定義レコード・フォーマットでなければなりません。さもないと、実行可能モジュールはコピーされません。
- 複数のファイル名が同じ場合、ファイルは以降のコピーごとに上書きされます。
- UNIX ファイル名に MVS データ・セットでは許可されない文字が含まれ ていると、そのファイルはコピーされません。UNIX ファイル名が 8 文字を超えている場合、そのファイルを MVS データ・ セット・メンバーにコピーすることはできません。(ファイル名の変換については、 –ACMS オプションを参照してください)
- ファイルを、スパン・レコードを持つデータ・セットにコピーすること はできません。
- PDSE に、プログラム・オブジェクトとデータ・メンバーを混合させては なりません。PDS では混合は許可されますが、お勧めできません。
- 外部リンクおよび FIFO などの特殊ファイルは、 MVS データ・セットにコピーされません。 ただし、文字特殊ファイルは MVS データ・セットにコピーできます。
- ファイルがシンボリック・リンクの場合、cp は、リンクその ものではなく、解決されたファイルをコピーします。
- UNIX ファイル属性は、MVS にコピーすると失われます。ファイル属性を保持したい場合は、pax ユーティリティーを使用 する必要があります。
- ターゲット UNIX ファイルが存在する場合、既存のデータは新 しいデータで上書きされます。ファイルのモードは変更されません (S_ISUID および S_ISGID ビットがオフになっている場合を除く)。
- 指定された UNIX ファイルが存在しない場合は、バイナリーまたはテキストであれば、666 モード値を使用して作成されます (これは umask に左右されます)。コピーするデータがシェル・スクリプトまたは実行可能ファイルである場合は、777 モード値を使用して UNIX ファイルが作成されます (umask に左右されます)。
- 可変長レコード・フォーマット RECFM(VB) または未定義レコード・フォーマット RECFM(U) の MVS データ・セットの場合、MVS から UNIX へのコピー時に末尾ブランクが保存されます。固定長レコード・フォーマットの MVS データ・セットの場合、MVS から UNIX へのコピー時に末尾ブランクは保存されません。
- MVS データ・セットを z/OS® UNIX ファイル・システムのテキスト・ファイルにコピーすると、 <改行> 文字が各レコードの終わりに追加されます。レコードに末尾ブランクがある場合、<newline> 文字は末尾ブランクの後に追加されます。ファイル・フォーマット・オプションが指定された場合、またはターゲット・ファイルの ファイル・フォーマットが設定されている場合には、<改行> では なく、そのファイル・フォーマットが行の終わり区切り文字として使用されます。
- MVS データ・セットを UNIX バイナリー・ファイルにコピーした場合、<改行> 文字はレコードに追加されません。
- cp を使用して、スパン・レコード長を持つデータ・セット をコピーすることはできません。
- XL C/C++ ランタイムでの制限のために、同じ名前と大/小文字を持つ MVS 順次データ・セットにファイル・システムからファイルをコピーする場合は、ファイル・システム内のファイルの前に「./」を付ける必要があります。以下に例を示します。
cp ./SMPL.DATA "//'SMPL.DATA'"
例
- _UNIX03 が設定されていないか、YES でない場合、存在しない順次ターゲットのために –P params を指定するには、次のように入力します。
上記の cp コマンドは、以下と同等です。cp -P "RECFM=U,space=(500,100)" file "//'turbo.gammalib'"
cp -W "seqparms='RECFM=U,space=(500,100)'" file "//'turbo.gammalib'"
- ファイル f1 を完全修飾順次データ・セット 'turbo.gammalib' にコピーし、それをバイナリーとして扱うには、次
のように入力します。
cp -F bin f1 "//'turbo.gammalib'"
- 完全修飾 PDS 'turbo.gammalib' のすべてのメンバーを既存
の UNIX ディレクトリー dir にコピーするには、次のように入
力します。
cp "//'turbo.gammalib'" dir
- UNIX ディレクトリー dir のすべてのファイルを既存の
PDS 'turbo.gammalib' にコピーする前に .c 接尾部を取り除く
には、次のように入力します。
cp -S d=.c dir/* "//'turbo.gammalib'"
ローカライズ
- LANG
- LC_ALL
- LC_COLLATE
- LC_CTYPE
- LC_MESSAGES
- LC_SYNTAX
- NLSPATH
TZ 環境変数のフォーマットに、TZ 環境変数を使用してローカル・タイム・ゾーンを設定する方法が説明されています。
環境変数
- _EDC_ZERO_RECLEN
- cp を呼び出す前にこれが Y に設定されていると、空のレコード (長さゼロ) は単一改行文字として扱われ、無視されません。また、単一改行文字は空のレコ ードとしてファイルに書き込まれ、単一ブランクは " ¥n" で表されます。レコードをコピーするときにこの環境変数を設定しない場合、 ストリング " ¥n" はストリング "¥n" と同様にコピーされます。すなわち、 両方とも "¥n"として読み取りと書き込みが行われます。ここで "¥n" は、z/OS XL C/C++ が、 単一ブランクが入っているレコードをファイルに書き込むことを意味します (z/OS XL C/C++ のデフォルトの動作)。出力内の他のブランクは すべてブランクとして読み戻され、空のレコードは無視されます。
- _UNIX03
- このコマンドでの _UNIX03 の効果について詳しくは、UNIX03 用に変更されたシェル・コマンドを参照してください。
終了値
- 0
- 正常終了
- 1
- 以下のいずれかによる失敗。
- 引数の末尾にスラッシュ (/) があるが、ディレクトリーではなかった
- ファイルが見つからない
- 入力ファイルを読み取るために開くことができない
- 出力ファイルを作成または開くことができない
- 入力ファイルで読み取りエラーが発生した
- 出力ファイルで書き込みエラーが発生した
- 入力ファイルと出力ファイルが同一である
- –r または –R を使用しているときに、
リカバリー不能エラーが発生した。以下のリカバリー不能な –r または –R エラーの可能性がある。
- ファイルにアクセスできない
- ターゲット・ファイルの許可を変更できない
- ディレクトリーを読み取れない
- ディレクトリーを作成できない
- ターゲットがディレクトリーではない
- ソースおよび宛先ディレクトリーが同一である
- 2
- 以下のいずれかによる失敗。
- コマンド行のオプションが正しくない
- コマンド行の引数が少なすぎる
- ターゲットはディレクトリーでなければならないが、そうでない
- ターゲット・デバイスにスペースがない
- コピーするデータを保持するためのメモリーが不足
- ターゲット・ファイルを保持するためのディレクトリーを作成できない
メッセージ
- cannot allocate target string
- cp には、ターゲット・ファイルの名前を保持するための スペースがありません。cp にもっとスペースを与えるために、メモリーをいくらか解放してください。
- name is a directory (not copied)
- –r または –R が指定されていませんが、コピーしようとした名前の中にディレクトリーの名前があります。
- target name?
- –i オプションを指定してファイルをコピーしようと していますが、ターゲット名のファイルはすでに存在しています。–f を指定した場合は、y と入力し、<Enter> を押すことによって、既存のファイルに上書きすることができます。既存のファイルに上書きしたくない場合は、n と入力し 、<Enter> を押します。–f を指定していなくて、ファイルが読み取り専用の場合は、それに上書きする機会は与えられません。
- source name and target name are identical
- ソースとターゲットが実際には同一のファイルです (例えば、リンクのために)。この場合は、cp は何もしません。
- unreadable directory name
- cp は指定されたディレクトリーを読み取ることができません。例えば、適切な許可を持っていないためです。
移植性
POSIX.2、X/Open 移植性ガイド、UNIX システム。
–f および –m オプションは、POSIX 標準の拡張です。
関連情報
cat、cpio、ln、mv、rm