जाहिरा तौर पर यह अधिक बस के साथ किया जा सकता है udevadm
, और मुझे अभी पता चला है कि कैसे।
प्राप्त करने के लिए DEVNAME
से udevadm
आप केवल करने की ज़रूरत:
udevadm info -rq name $PATH
उदाहरण के लिए, यदि आप /dev
नाम जानना /sys/dev/char/5:1
चाहते हैं तो आप क्या करेंगे:
udevadm info -rq name /sys/dev/char/5:1
आउटपुट
/dev/console
-r
विकल्प के लिए एक निर्दिष्ट करने के लिए है --root
परिणाम यह बिना ऊपर केवल पढ़ने के लिए होगा - एड पथ console
। -q
विकल्प के लिए एक डेटाबेस निर्दिष्ट करता है --query
और यह संकार्य लेता है name
यहाँ - क्योंकि हम चाहते हैं DEVNAME
।
एक चार और / या ब्लॉक डिवाइस के लिए रास्ता खोजने का एक बहुत ही सरल साधन केवल दिए गए प्रमुख: मामूली संख्या की तरह लग सकता है:
mmdev() for d in /sys/dev/[cb]*/$1:$2
do [ -e "$d" ] || return
printf %c:%s: "${d#/*/*/}" "${d##*/}"
udevadm info -rq name "$d"
done
तो चल रहा है:
mmdev 8 0
प्रिंट ...
b:8:0:/dev/sda
यहाँ मैंने जो लिखा है वह पहला है।
majminpath() {
set -- ${1##*[!0-9]*} ${2##*[!0-9]*}
udevadm info --export-db |
sed 's|^[^=]*DEVNAME=||
\|^[^/]|!h;/MAJOR=/N
\|='"$1\n.*=${2?}"'$|!d;g'
}
यह सिर्फ udevadm info --export-db
मिलान संख्या के लिए आउटपुट स्कैन करता है । आउटपुट जैसा दिखता है:
P: /devices/virtual/vc/vcsa4
N: vcsa4
E: DEVNAME=/dev/vcsa4
E: DEVPATH=/devices/virtual/vc/vcsa4
E: MAJOR=7
E: MINOR=132
E: SUBSYSTEM=vc
P: /devices/virtual/vc/vcsa5
N: vcsa5
E: DEVNAME=/dev/vcsa5
E: DEVPATH=/devices/virtual/vc/vcsa5
E: MAJOR=7
E: MINOR=133
E: SUBSYSTEM=vc
#...and so on
वर्कफ़्लो इस तरह है:
[^=]*DEVNAME=
प्रत्येक पंक्ति के सिर से स्ट्रिंग पट्टी करने का प्रयास
यदि किसी पंक्ति में पहला वर्ण नहीं है या उसका पहला वर्ण /
उस पंक्ति को h
पुराने स्थान पर कॉपी करता है
एक पंक्ति से मेल खाती है, तो MAJOR=
संलग्न N
पैटर्न अंतरिक्ष के लिए ext इनपुट लाइन
अगर पैटर्न स्पेस में 2 लाइनें हैं जो मैच करती हैं =$1\n.*=$2$
तो h
पैटर्न स्पेस और ऑटो-प्रिंट पर पुरानी जगह को कॉपी करें ; और पैटर्न स्थान हटाएं
तो अगर मैं:
majminpath 7 133 ; majminpath 8 0 ; majminpath 8 1
आउटपुट
/dev/vcsa5
/dev/sda
/dev/sda1
लेकिन, जैसा कि @xae बताते हैं, ब्लॉक / चार प्रकार के डिवाइस, मेजर: मिन कॉम्बिनेशन साझा कर सकते हैं, और इसलिए यह संभवतः प्रति कॉल एक से अधिक पथ प्रिंट कर सकता है।