ある特定のオプションはこれらのプログラムの全てで利用可能です(実際,全て のGNUプログラムはそれらを受け入れるべきです).それぞれのプログラム の個別の記述で書くのではなく,ここで記述します.
GNUプログラムには(少なくとも,cp
,install
,ln
とmv
は)追加で,新しいバージョンを書く前に,ファイルのバックアップ
を作成するものもあります.これらのオプションは,これらのバックアップを詳
細に制御します.オプションは,特定のプログラムでも簡単に記述します.
SIMPLE_BACKUP_SUFFIX
環
境変数の値が使用されます.また,SIMPLE_BACKUP_SUFFIX
が設定されて
いない場合,デフォルトで`~'となり,それはちょうどEmacsと同じです.
GNUプログラム(少なくとも,df
,du
と,ls
)には,
ファイルサイズを"ブロック"で表示するものもあります.ファイルサイズをよ
り読みやすくするため,ブロックサイズを調整できます.表示で使用するブロッ
クサイズは,あらゆるファイルシステムのブロックサイズから独立しています.
通常,ディスク使用のサイズは切り上げ,ディスクフリーサイズは切り捨て,そ して,それ以外は,偶数に丸めたときの最も近いブロックで丸められます.
デフォルトブロックサイズは,以下の環境変数を順番に調べることで選択されま す.最初のものはブロックサイズを決定します.
DF_BLOCK_SIZE
df
コマンドに対するデフォルトのブロックサイズを指定します.
同様に,@env{DU_BLOCK_SIZE}はdu
に対するデフォルト,
@env{LS_BLOCK_SIZE}はls
に対するデフォルトを指定します.
BLOCK_SIZE
POSIXLY_CORRECT
上記の環境変数がどれも設定されていない場合,ブロックサイズは現在のデフォ ルトの1024バイトですが,この数は将来変更されるかもしれません.
ブロックサイズの指定は,ブロック毎のバイト数を指定することで,正の整数に
したり,人間が可読な書式を選択することで,human-readable
や
si
にしたりできます.
人間が可読な書式を用いた場合,出力サイズは,メガバイトに対する`M'の
ような大きさを示す文字が続きます.BLOCK_SIZE=human-readable
は1024
乗を使用します.`M'は1,048,576バイトを意味します.
BLOCK_SIZE=si
は似ていますが,1000乗を使用します.`M'は
1,000,000を意味します.(SI,国際単位系は,これらの1000乗の前置を定義しま
す.)
整数のブロックサイズは,そのサイズの倍数を指定する大きさを示す文字を続け
ることができます.この注釈が用いられた場合,大きさを示す文字は,通常1024
倍を意味し,オプションで"バイト"に対する`B'を続けることができます.
しかし,("10進バイト"に対する)`D'が続く場合,それらは1000倍を意味
します.例えば,BLOCK_SIZE=4MB
はBLOCK_SIZE=4194304
と同じで,
BLOCK_SIZE=4MD
はBLOCK_SIZE=4000000
と同じです.
以下の大きさを示す文字は定義されています.1Y
のような大きなサイズ
は,その計算の限界のためコンピュータで拒絶されるかもしれません.
human-readable
に対する2^10 = 1024,または,si
に対する10^3 = 1000.
ブロックサイズのデフォルトは,`--block-size=size'オプションを 明示することで優先できます.`-k'や`--kilobytes'オプションは, `--block-size=1k'と同じで,それは@env{POSIXLY_CORRECT}環境変数が指 定されていない場合デフォルトです.`-h'や`--human-readable'オプ ションは,`--block-size=human-readable'と同じです.`--si'オプ ションは,`--block-size=si'と同じです.
GNUプログラム(少なくともcp
,install
,ln
,そし
てmv
)には,このオプションによってターゲットディレクトリを指定する
ことが可能なものもあります.
xargs
プログラムは,この慣習を用いてより良く動作
するように設計されています.
終りに特例で様々な数の引数(すなわち,ターゲットディレクトリ)を持
つため,mv
の類のコマンドは普通ではありません.これはmv *
../d/
が引数の空間を使い果たし,ls | xargs ...
は,それぞれの従属
するコマンドの呼び出しのために,特別な最終的な引数を指定するための明確な
方法ではないため,例えば"全てのファイルをここから../d/に移動する" のよ
うないくつかの処理を実行するときに,これは明確ではなくなります.(それは,
シェルコマンドを通じて動作可能ですが,それはそうするより人間の労働と能力
を必要とします.)
--target-directoryオプションは,cp
,install
,
ln
,そしてmv
プログラムが,xargs
を用いて便利に使用す
ることを可能にします.例えば,現在のディレクトリから同胞のディレクトリ,
ここではd
にファイルを移動することが可能です.(しかし,これは
`.'で始まる名前のファイルを移動しません.)
ls |xargs mv --target-directory=../dGNU
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.2で要求されていて,その標準のそれ以外の部分と一貫しています.
Go to the first, previous, next, last section, table of contents.