私が作業しているスクリプトでは、UUID変数を使用してデバイスが接続されている現在のマウントポイントを取得する必要があります。私が思いついた解決策はこんな感じです。
UUID='fc70ae3d-65e7-4437-a371-b237c8ca3f56h'
MNTPNT=$(lsblk -o +UUID | grep ${UUID} | tr -s ' ' | cut -d ' ' -f 7)
コマンドを実行した後、MNTPNT変数は現在のマウントポイントを期待どおりに保存します。。しかし、これは非常に広範なコマンドなので、同じ目標を達成するにはより効率的な方法が必要であるとは思わないかもしれません。
より良い解決策を考え出すことは可能ですか?これは主に最適化の問題です。どんな洞察力にもよろしくお願いします。
ベストアンサー1
findmnt -noTARGET "/dev/disk/by-uuid/$UUID"
grep "$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" /proc/self/mountinfo
awk -v dev="$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" '$3~dev{print$5}' /proc/self/mountinfo
バインディングのインストールをトリミングするには:
awk -v dev="$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" '$3~dev&&$4=="/"{print$5}' /proc/self/mountinfo
装置は複数の場所に設置できることに注意してください。
メジャー、マイナー数字を印刷できなくて残念です$(stat ... | xargs printf)
。stat(1)
少数。解析専用の出力がls -Hl
より良く、移植性が良いかもしれません。