web-dev-qa-db-ja.com

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

df .を実行して、現在のディレクトリがあるマウントに関する情報の一部を取得できます。また、mountから必要なすべての情報を取得できます。しかし、私は多くの情報(他のマウントに関する情報)を取得します。私はそれをgrepできますが、もっと良い方法があるかどうか疑問に思っています。

mountinfo .が必要な情報を提供するようなコマンドmountinfoはありますか(df .と同様ですが、mountが提供する情報を使用します)。


私はDebian Gnu + Linuxを使用しています。

25
ctrl-alt-delor

Linux/Unixの方法は、小さなユーティリティのツールボックスを用意することです。これらのツールボックスを組み合わせると、思い通りの結果が得られます。

彼らはすべての機会のためのユーティリティを持っている傾向はありません。代わりに、パイプなどと組み合わされた小さな便利なユーティリティがたくさんあります。これの利点は、利用できるユーティリティがない場合でも、簡単に独自のユーティリティを作成できることです。

たとえば、あなたがしている情報を取得するには、次を使用できます。

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

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

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

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

mountinfo .

相互運用できないすべてのユーティリティを備えたシステムが必要な場合は、特定のMrs Gatesがお手伝いします;-)

1
garethTheRed

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

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

これはmountコマンドを実行し、出力をgrepに渡します。 grepdf -P "$1" | tail -n 1 | awk '{print $1}'の出力を探し、分解します。

  • df -P "$1"は、関数に渡された引数に対してdfを実行します。
  • tail -n 1は、2行目、partition情報を含む行のみを出力します。
  • awk '{print $1}'は、その行の最初の部分、たとえば/dev/sda5などのディスク/パーティション番号を出力します。これがgrepがmountコマンドで探して出力するものです。

.bashrcファイルを入手して変更を適用するか、ログアウトして再度ログインします。

これで、mountinfo .を実行すると、必要な出力が得られます。

1
Alaa Ali

マウントポイントに空白が含まれていると多少面倒になる可能性がありますが、マウントポイントに改行が含まれている場合を除いて、これは機能するはずです。

#!/bin/sh
mountpoint="$(df -P "$1" | awk '{
    if (NR==1)
        i=index($0,"Mounted on");
    else
        print substr($0,i);
    }')"
mount|grep " on ${mountpoint} type "

df -Pファイルシステムの1行を出力します。このオプションがないと、マウントポイントが長い場合、dfは2行を出力することがあります。マウントポイント名は、ヘッダー行の「Mounted on」ラベルと同じ列で始まります。

マウントポイントを取得したら、mountの出力でそれをgrepします。

1
Mark Plotnick

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にはモジュール Sys :: Filesystem :: MountPoint があり、必要な機能を提供します。

0
Charles Stewart