[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
特定のオプションは,以下のすべてのプログラムで利用可能です.それぞれの プログラムで同一の記述を書く代わりに以下で記述します.(実際,すべての GNUプログラムが,これらのオプションを受け入れる(あるいは受け入れ るべき)です.)
通常,オプションとオペランドは任意の順序で書くことが可能で,プログラムは
すべてのオプションがあらゆるオペランドの前に書かれているかのように動作し
ます.例えば,`sort -r passwd -t :'は`sort -r -t : passwd'のよ
うに動作し,それは`:'が`-t'のオプション引数であるためです.
しかし,POSIXLY_CORRECT
環境変数が設定されている場合,特定のコマン
ドで指定ない場合,オプションをオペランドの前に書く必要があります.
これらのプログラムには,`--help'と`--version'が単一のコ マンドライン引数のときだけ,それを認識するものもあります.
単一の`-'は,オプションのように見えても本当のオプションではありま
せん.状況から明らかな場合は,それは標準入力や標準出力を意味し,オペラ
ンドやオプション引数として使用可能です.例えば,`sort -o - -'は標
準出力に書き出し,標準入力から読み込み,そしてそれは単なる
sort
と等価です.他で指定されない限り,ファイル名が要求される
あらゆる状況で`-'を書くことが可能です.
2.1 終了ステータス | Indicating program success or failure. | |
2.2 バックアップオプション | -b -S -V, in some programs. | |
2.3 ブロックサイズ | BLOCK_SIZE and --block-size, in some programs. | |
2.4 ターゲットディレクトリ | --target-directory, in some programs. | |
2.5 末尾のスラッシュ | --strip-trailing-slashes, in some programs. | |
2.6 標準への準拠 | Conformance to the POSIX standard. |
ほとんどすべてのコマンドの呼び出しは,他のコマンドの動作を変更するため
にしよう可能な,正規の終了ステータス(exit status)を生成します.
コマンドの大半は,ゼロの終了ステータスは成功を示し,`1'の値は失敗
を示します.しかし,以下で説明されているプログラムには,それ以外の終了
ステータスの値を生成するものや,`0'と`1'の値に異なる意味を割
り当てているものもあります.例外は以下の通りです.expr
,
false
,nohup
,printenv
,sort
,
test
,true
,tty
,uniq
.
GNUプログラムには(少なくとも,cp
,install
,
ln
,そしてmv
には)オプションで,新しいバージョンの
ファイルを書き出す前に,ファイルのバックアップを作成するものもあります.
以下のオプションは,これらのバックアップを細かく制御します.オプション
は,特定のプログラムの説明でも簡単に記述します.
VERSION_CONTROL
環境変数の値
が使用されます.そしてVERSION_CONTROL
が設定されていない場合は,
デフォルトのバックアップ形式は`existing'になります.
このオプションの短い形式`-b'は,引数を全く受け入れないことに注 意してください.`-b'の使用は,`--backup=existing'の使用 と等価です.
このオプションは,Emacs変数の`version-control'に対応します. methodに対する値は,Emacsで使用されるものと同じです.このオプショ ンも,より記述的な名前を受け入れます.有効なmethodは以下の通りで す(ユニークに識別できる省略も受け入れます).
SIMPLE_BACKUP_SUFFIX
環境変数の値が使用されます.そして
SIMPLE_BACKUP_SUFFIX
が設定されていない場合,デフォルトで`~'
となり,それはちょうどEmacsと同じです.
GNUプログラム(少なくとも,df
,du
,そして
ls
)には,ファイルサイズを"ブロック"で表示するものもありま
す.ファイルサイズをより読みやすくするため,ブロックサイズを調整するこ
とが可能です.表示で使用するブロックサイズは,あらゆるファイルシステム
のブロックサイズから独立しています.分数のブロック数は最も近い整数に切
り上げられます.
デフォルトのブロックサイズは,以下の環境変数を順番に調べることで選択さ れます.最初に設定されていたものでブロックサイズを決定します.
DF_BLOCK_SIZE
df
コマンドに対するデフォルトのブロックサイズを指定し
ます.同様に,DU_BLOCK_SIZE
はdu
に対するデフォルト,そ
してLS_BLOCK_SIZE
はls
に対するデフォルトを指定します.
BLOCK_SIZE
POSIXLY_CORRECT
command_BLOCK_SIZE
もBLOCK_SIZE
変数も設定されておらず,
この変数が設定されている場合,ブロックサイズのデフォルトは512になりま
す.
上記の環境変数がどれも設定されていない場合,ほとんどの状況でブロックサ
イズは現在のデフォルトの1024バイトですが,この数は将来変更されるかもし
れません.ls
のファイルサイズに対して,ブロックサイズのデフォ
ルトは1バイトです.
ブロックサイズの指定は,ブロックごとのバイト数の指定で正の整数にしたり,
人間が可読な書式を選択してhuman-readable
やsi
にしたりする
ことが可能です.整数には,十進数の倍数となる
SI prefixesの上
位互換の接尾子を続けたり,
IEC 60027-2
prefixes for binary multiplesが続けてもかまいません.
人間が可読な書式を用いると,出力サイズにはメガバイトに対する`M'の
ような大きさを示す文字が続きます.BLOCK_SIZE=human-readable
は
1024乗を使用します.`M'は1,048,576バイトを意味します.
BLOCK_SIZE=si
は似ていますが,それは1000乗を使用し`B'が後置
されます.`MB'は1,000,000を意味します.
`''が前置されているブロックサイズの指定で,千単位で区切られた大き
さを表示するようになります.LC_NUMERIC
ロケールは,千の分離子とグ
ループ分けを指定します.例えば,アメリカ英語のロケールでは,
`--block-size="'1kB"'で1234000バイトの大きさを`1,234'と表示
するようになるでしょう.デフォルトのCロケールでは,千単位の区切りが無
いので,`''には効果がありません.
整数のブロックサイズは,そのサイズの倍数を指定する接尾子を続けることが 可能です.そのままの大きさを示す文字や`iB'が続くものは,1024倍を 指定します.`B'が続く大きさを示す文字は,代わりに1000倍を指定しま す.例えば,`1M'と`1MiB'は`1048576'と等価で,`1MB' は`1000000'と等価です.
前置する整数が無い普通のサフィックスでは,`1'が前置されているかの ように動作しますが,大きさを示す文字が出力に後置されます.例えば, `--block-size="kB"'は3000を`3kB'と表示します.
以下の大きさを示す文字が定義されています.1Y
のような大きなサイ
ズは,その計算の限界のためコンピュータに拒絶されるかもしれません.
ブロックサイズのデフォルトは,`--block-size=size'オプショ
ンを明示することで優先することが可能です.`-k'オプションは,
`--block-size=1k'と等価で,それはPOSIXLY_CORRECT
環境変数
が指定されていない場合のデフォルトです.`-h'や
`--human-readable'オプションは,
`--block-size=human-readable'と等価です.`--si'オプショ
ンは,`--block-size=si'と等価です.
GNUプログラム(少なくともcp
,install
,
ln
,そしてmv
)には,このオプションでターゲットディ
レクトリの指定を可能にするものもあります.
ほとんどのプログラムのインターフェースは,オプションと有限数の(おそら
くゼロの)固定した位置の引数を処理した後,残りの引数リストは空である,
または同じように処理される(通常ファイルとなる)項目のリストになっている
ことが期待されています.xargs
プログラムは,この慣習を用いて
より良く動作するように設計されています.
様々な数の引数の最後に特例(すなわち,ターゲットディレクトリ)が
あるため,mv
の類のコマンドは普通のものとは言えません.例えば
"全てのファイルをここから`../d/'に移動する"ような処理を実行する
ために,mv * ../d/
では引数の空間を使い果すかもしれませんし,
ls | xargs ...
では,それぞれの従属コマンドの呼び出しへの特別な
最後の引数を指定する方法がないため,明確ではなくなります.(それは,シェ
ルコマンドで動作させることが可能ですが,人間の労働と能力が余分に必要と
なります.)
--target-directoryオプションによって,cp
,
install
,ln
,そしてmv
プログラムで,
xargs
を用いて便利に使用することが可能になります.例えば,現
在のディレクトリから同じ階層のディレクトリ,ここではd
に,ファイ
ルを移動することが可能です.(しかし,これは`.'で始まる名前のファ
イルを移動しません.)
ls |xargs mv --target-directory=../d |
GNU find
プログラムを使用している場合,以下のコマンドで
全てのファイルを移動することが可能です.
find . -mindepth 1 -maxdepth 1 \ | xargs mv --target-directory=../d |
しかし,現在のディレクトリにファイルがない場合や,改行文字を含む名前の
ファイルがある場合,それは失敗するでしょう.以下の例は,これらの制限を
取り除きますが,GNU find
とGNU xargs
の両
方を必要とします.
find . -mindepth 1 -maxdepth 1 -print0 \ | xargs --null --no-run-if-empty \ mv --target-directory=../d |
GNUプログラム(少なくともcp
とmv
)には,それぞれ
のsource引数を処理する前に末尾のスラッシュを取り除くことが可能な
ものもあります.--strip-trailing-slashesオプションはこの動作
を可能にします.
source引数の末尾にスラッシュがあり,ディレクトリへのシンボリック
リンクを指定しているとき,これは役に立ちます.シェルにはシンボリックリ
ンクのようなものに対してファイル名の補完を実行しているとき,末尾のスラッ
シュを自動的に追加することが可能なものもあるので,このシナリオは現実と
なります.このオプションがない場合,例えば(システムの名前変更機能のた
め)mv
は,末尾のスラッシュをシンボリックリンク先を参照しない
ように要求するよう解釈する必要があり,そして,そのためシンボリックリン
クではなく,間接的に参照されるディレクトリの名前を変更するはず
です.そのような動作がデフォルトということにびっくりするかもしれません
が,それはPOSIXで要求されていて,その標準のそれ以外の部分と
一貫しています.
状況によっては,GNUのユーティリティのデフォルトの動作は
POSIXの標準と互換性がありません.これらの非互換性を抑制する
ため,POSIXLY_CORRECT
環境変数を定義してください.POSIX
準拠を調査していない限り,POSIXLY_CORRECT
を定義する必要はありま
せん.
新しいバージョンのPOSIXには,古いバージョンのものと互換性が 無いものもあります.例えば,古いバージョンのPOSIXでは,それ ぞれの入力ファイルの二番目とそれ以降のフィールドをもとにソートするコマ ンド`sort +1'を要求していますが,POSIX 1003.1-2001から は同じコマンドで`+1'という名前のファイルをソートすることを要求し ていて,フィールドをもとにしたソートを行なうため,コマンド`sort -k 2'を代わりに使用する必要があります.
GNUのユーティリティは通常,システム標準のPOSIXのバージョ
ンに準拠しています.異なるPOSIXのバージョンに準拠させるため,
適用させる標準の年月を指定するyyyymmの形式の値に
_POSIX2_VERSION
環境変数を設定してください.現在,
_POSIX2_VERSION
に対して二つの値がサポートされています.
`199209'はPOSIX 1003.2-1992を意味し,`200112'は
POSIX 1003.1-2001を意味します.例えば,古いバージョンの
POSIXを仮定する古いソフトウェアを実行し,`sort +1'を使
用している場合,環境変数で`_POSIX2_VERSION=199209'を設定すること
で,互換性の問題を回避することが可能です.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |