স্পষ্টতই এটি আরও সহজভাবে করা 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 উল্লেখ করে, ব্লক / চর ধরণের ডিভাইসগুলি মাজ: মিনিট সংমিশ্রণগুলি ভাগ করতে পারে এবং তাই এটি কল প্রতি একাধিক পাথ মুদ্রণ করতে পারে।