現在のディレクトリのマウント情報

現在のディレクトリのマウント情報

現在のディレクトリがあるマウントポイントに関するいくつかの情報を取得し、df .ここから必要なすべての情報を取得できますmount。しかし、(他のマウントに関する)情報が多すぎます。私はそれを抑制することができますが、より良い方法があるかどうか疑問に思います。

mountinfo私が望む情報を提供できるコマンドはありますかmountinfo .(例:df .提供された情報を含むmount)?


私はDebian GNU / Linuxを使用しています。

答え1

私はあなたが次のようなことをしたいと思います:

findmnt -T .

このオプションを使用する場合

-T、-ターゲット
パスがマウントポイントファイルまたはディレクトリでない場合は、マウントfindmntポイントを取得するためにパス要素を逆の順序で確認します。特定のフィールドのみを印刷してこれを実行できます-o, --output [list]。利用可能なフィールドのリストについては、リソースを
参照してください。findmnt --help


または、以下を実行できます。

(until findmnt . ; do cd .. ; done)

問題は、すべてのルートが何かに関連しているので、ツリーに沿って歩くことです。毎回。

findmntこれはutil-linuxパッケージのメンバーであり、長年使用されてきました。これで、どのディストリビューションを使用しても、そのツールがあれば、mountLinuxシステムにすでにインストールされています。

man mount | grep findmnt -B1 -m1
For  more robust and customizable output use
findmnt(8),  especially  in  your   scripts.

findmntマウントポイントパラメータなしですべてのマウント情報を印刷し、マウントポイントパラメータを持つ情報のみを印刷します。-Dはいシミュレーションdfオプション。これを持たない出力は 's-Dと似ていますが、さらに設定可能です。自分でやって確認してみてください。mountfindmnt --help

現在のシェルの現在のディレクトリが変更されないように、サブシェルに入れました。

だから:

mkdir -p /tmp/1/2/3/4/5/6 && cd $_ 
(until findmnt . ; do cd .. ; done && findmnt -D .) && pwd

出力

TARGET SOURCE FSTYPE OPTIONS
/tmp   tmpfs  tmpfs  rw
SOURCE FSTYPE  SIZE   USED AVAIL USE% TARGET
tmpfs  tmpfs  11.8G 839.7M   11G   7% /tmp
/tmp/1/2/3/4/5/6

-D利用可能なオプションがない場合(以前のバージョンのutil-linuxでは機能しません)それでは心配することはありません。とにかく便利なスイッチに過ぎません。各呼び出しに対して生成される列ヘッダーを参照してください。-o出力スイッチを使用して、各呼び出しの列ヘッダーを含めたり除外したりできます。-Dたとえば、与えられたものと同じ出力を得ることができます。

 findmnt /tmp -o SOURCE,FSTYPE,SIZE,USED,AVAIL,USE%,TARGET

出力

SOURCE FSTYPE  SIZE  USED AVAIL USE% TARGET
tmpfs  tmpfs  11.8G  1.1G 10.6G  10% /tmp

答え2

コマンドはわかりませんが、関数を作成できます。に以下を追加できます.bashrc

mountinfo () {
  mount | grep $(df -P "$1" | tail -n 1 | awk '{print $1}')
}

その後、コマンドが実行され、mount出力がにパイプされますgrepgrep出力は次df -P "$1" | tail -n 1 | awk '{print $1}'のように区別されます。

  • df -P "$1"df関数に渡された引数に対して実行されます。
  • tail -n 1partition情報を含む2行目のみが出力されます。
  • awk '{print $1}'/dev/sda5ディスク/パーティション番号である行の最初の部分を印刷しますgrep

変更を適用するには、ファイルをインポートまたはログアウトして.bashrcから再度ログインしてください。

今実行すると、mountinfo .希望の結果を得ることができます。

答え3

Linux / Unixのアプローチは、結合時に望ましい結果を提供する小さなユーティリティのツールボックスを持つことです。

すべての場合に適していないことが多いです。代わりに、パイプなどにグループ化されている小さくて便利なユーティリティがたくさんあります。これの利点は、利用可能なユーティリティがない場合でも簡単に直接作成できることです。

たとえば、必要な情報を取得するには、次のようにします。

mount | grep $(df  --output=source . | tail -1)

上記の内容を別のディレクトリで再利用するには、スクリプトを作成します。

#!/bin/bash
mount | grep $(df  --output=source $1 | tail -1)

別の名前で保存mountinfoして実行可能にします(chmod +x mountinfo)。その後、次のように使用できます。

mountinfo .

すべての相互運用性のためのユーティリティを含むシステムが必要な場合は、Gates氏が助けることができます;-)

答え4

非常に古くないGNU coreutils dfバージョンを使用していてもecho $(df . --output=target | tail -n 1)大丈夫です。同様にstat -c '%m' .気づいたがhttps://linux.die.net/man/1/stat書式設定オプションがない文書%m

移植可能に行うことは迷惑です。上記のいずれもBSDまたはCygwinバージョンのstatまたはdfでは動作しません。マウントポイントのパスにスペースがない場合は良いですが、df -P . | tail -1 | awk '{ print $NF}'USBフラッシュドライブのボリューム名にスペースがあることがよくあります。これはマウントパスに表示され、この設定が中断される可能性があります。移植性のために、Perlはほぼどこにでもインストールでき、CPANにはモジュールがあります。システム::ファイルシステム::マウントポイント必要な機能を提供します。

関連情報