回答:
を使用しdf
ます。パスを渡すと、そのパスのファイルシステム情報が得られます。ファイルシステムタイプが必要な場合は-T
、次のようにスイッチを使用します。
$ df -T test
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda2 ext4 182634676 32337180 141020160 19% /home
ファイルシステムのタイプを抽出するには、それを解析できます(デバイスの部分が長すぎる場合は、-P
スイッチを使用してdf
改行を避けます)。
$ df -PT test | awk 'NR==2 {print $2}'
ext4
したがって、次のif
ような構成でその値を使用できます。
if [ "$(df -PT "$path" | awk 'NR==2 {print $2}')" = "ext4" ] ; then
it is an ext4 filesystem
fi
デバイスの列にスペースが含まれる可能性があることに注意してください(ただし、まれです)。その場合、解析は失敗します。
GNU statコマンドがインストールされているシステムでは(標準のLinuxディストリビューションと同様に)、stat
コマンドを使用して解析することなく、特定のファイルのfsタイプを取得できます。
stat -f -c %T filename
-f
stat
ファイルの代わりにファイルシステムに関する情報を提供するように指示し-c %T
、人間が読めるファイルシステムタイプ(%T
)のみを含むように出力フォーマットを設定します。
だからあなたはそれを(bashで)次のように使うことができます:
if [[ $(stat -f -c %T filename) == ext4 ]]; then
# ext4 specific command
fi
man stat
詳細情報を提供します。
findmnt
(の一部util-linux
):
findmnt -no fstype -T /path/to/file
オプション使用時
-T、-ターゲットパスパスがマウントポイントファイルまたはディレクトリでない場合は
findmnt
、逆の順序でパス要素をチェックして、マウントポイントを取得します。他の2つのオプションは、ヘッダー行を抑制-n, --noheading
します。リストする列を選択します。-o, --output
df
fromにcoreutils
は--output=
、次のような特定のフィールドのみを印刷する同様のオプションがありますfstype
。
df --output=fstype /path/to/file
ただし、ヘッダーを削除するオプションはないため、出力をパイプして、たとえば | sed 1d
findmnt
線画TUI出力でもかわいいツール。ありがとう!