シェル関数のlinux duコマンドは、1行の出力のみを生成します。

シェル関数のlinux duコマンドは、1行の出力のみを生成します。

du私はファイル使用量を表示するために次のコマンドを使用しました。

$ sudo du -hsx /* | sort -rh | head -n 40
16G     /home
5.3G    /var
2.6G    /usr
840M    /run
...

繰り返しの作業を防ぐための関数を作成したいと思います。

show_disk() {
    sudo du -hsx "$1" | sort -rh | head -n 40
}

ただし、この関数を実行すると、du以下のように1行の出力のみが表示されます。

$ show_disk() /*
0   /bin

私の例では、コマンドがシェル関数で異なる動作をしているようですdu。どこが間違っていますか?どんな助けでも大変感謝します。

ベストアンサー1

$1最初のパラメータです。アプリケーションではなくワイルドカードを拡張するシェルなので、1つ*のファイル/ディレクトリと一致または一致しない限り、単一の引数ではありません。

"$@"すべてのパラメータを受け入れるには、スクリプトに二重引用符を使用する必要があります。 ($*スペースを含むファイル名が破損する可能性があるため、使用しないでください。)

おすすめ記事