GNUを使用すると、ls
「人間が読める」ファイルサイズを取得できます(K、M、G、...などのサフィックスを追加してキロバイト、メガバイト、ギガバイトなどを意味し、数字は1024以下に保たれます) )-h
。もしいいえと一緒に使用してください。ただし、-l
でのみ使用してください-s
。
ls
FreeBSDに付属のソフトウェアでこれらの動作をどのように取得しますか?つまり、ls -sh
FreeBSDでどのように機能しますか?
答え1
この質問に答える方法は、ソースコードを読むことです。
- FreeBSDは複数の場所で
ls
このオプションを使用します。-h
最初にこれを行うときファイル統計が必要です。 - これを行うには統計が必要です。"longform"(
-l
)、inode(-i
)、または size(-s
) オプションは、最大数の幅を計算します。 - これらのオプションのいずれも設定されていない場合、このオプションは使用しません
-h
。 - これは結合
-h
および-i
/または-s
長いリストを作成するとき(-l
)、特にそのとき印刷サイズ。それ以外の場合は無視されます。
-h
これらのオプションのいずれかが提供されていない場合、エラーは報告されません。
FreeBSDは2001年にこのオプションを追加しました。、OSXの(かなり古い)Userlandよりも先です。 FreeBSD と OSX のマニュアルページには同じ説明があります-h
(そして、「ls -lh」は両方に対して機能します)。ただし、以下でのみ機能します-l
。
新しいロゴを追加し、
-h
いつ-l
オプションを使用すると、ファイルサイズがバイト、キロバイト、メガバイト、ギガバイト、テラバイト、およびペタバイト単位で表示され、桁数を3つ以下に減らすことができます。
答え2
FreeBSdでGNU ls機能を使用するには、以下をインストールしてください。gnulsパッケージそしてエイリアスls
はgnuls
。
基本ソフトウェアを引き続き使用するには、ls
次のようにスクリプトを再公開します。du出力をサイズでソートする方法は?)これはすべてのPOSIXシステムに適用されます。
CLICOLOR_FORCE=1 ls | awk '
function human(x) {
s="kMGTEPYZ";
while (x>=1000 && length(s)>1)
{x/=1024; s=substr(s,2)}
return int(x+0.5) substr(s,1,1)
}
{gsub(/^[0-9]+/, human($1)); print}'
CLICOLOR_FORCE
ls
端末に書き込まなくてもBSDに色を使用させます。一方、ls
端末に書き込むのではなく、列の代わりに1行に1つのファイルを受け取ります。 FreeBSDではこのオプションを使用して-C
列を取得できますが、行の途中でサイズを見つける必要があるため、後処理スクリプトはより複雑になります。これを試してみてください(テストされていません):
CLICOLOR_FORCE=1 ls -C | awk '
function human(x) {
s="kMGTEPYZ";
while (x>=1000 && length(s)>1)
{x/=1024; s=substr(s,2)}
return int(x+0.5) substr(s,1,1)
}
{gsub(/(^| )[0-9]+/, human($1)); print}'