जाहिरा तौर पर यह अधिक बस के साथ किया जा सकता है 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 बताते हैं, ब्लॉक / चार प्रकार के डिवाइस, मेजर: मिन कॉम्बिनेशन साझा कर सकते हैं, और इसलिए यह संभवतः प्रति कॉल एक से अधिक पथ प्रिंट कर सकता है।