回答:
を使用し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
-fstatファイルの代わりにファイルシステムに関する情報を提供するように指示し-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
dffromにcoreutilsは--output=、次のような特定のフィールドのみを印刷する同様のオプションがありますfstype。
df --output=fstype /path/to/file
ただし、ヘッダーを削除するオプションはないため、出力をパイプして、たとえば | sed 1d
findmnt線画TUI出力でもかわいいツール。ありがとう!