回答:
次のこと-Pを保証するオプションを使用すると、出力を少し簡単に解析できます。
- 各ファイルシステムに関する情報は、常に正確に1行で印刷されます。マウントデバイスが単独で行に配置されることはありません。これは、マウントデバイス名の長さが20文字を超える場合(たとえば、一部のネットワークマウントの場合)、列の位置がずれることを意味します。
これにより、使用可能な空き領域だけを取得することがはるかに簡単になります。
$ df -Ph . | tail -1 | awk '{print $4}'
(-hメガバイト、ギガバイトなどを使用します。システムにない場合は-k、キロバイトのみに使用してください。)
dfパスを渡すと、ヘッダー行と、パスを含むファイルシステムに関するデータの2行のみが返されます。tailを使用して、2行目だけを取得できます。使用可能なスペースが4列目にあることがわかっているため、で取得しawkます。これはすべてで行うことができますawk:
$ df -Ph . | awk 'NR==2 {print $4}'
またはフィルターの他の多くのセット。
$PWDコマンド置換を使用する代わりに環境変数を使用してテールの必要性を削除すること により、コマンドを最適化できますdf -Ph $PWD | awk 'NR==2{print $4}'
awkはそれをすべてやる方が良いことに同意します。より複雑なことを行うために単純なコマンドのチェーンを構築する方法の例を示したいので、長いコマンドを含めました。回答を更新して、改善点を含めました。
-P標準です(これPはPOSIX用です)。ただし-h、GNU拡張機能です(他のシステムにも存在しますが、たとえばOpenBSDでは互換性がありません-P)。
df -h --output=avail . | tail -1
time { I=0; while [ $I -lt 10000 ]; do df -Ph . | awk 'NR==2 {print $4}' > /dev/null; ((I++)); done })速度に有意な差はありませんが、驚くほどではありません-呼び出しtailは高価ではなくawk、入力の最後までスキップしても問題ありません... PDP-11 ...
du -hですか?