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