এক্সিকিউটেবল ফাইল প্রদত্ত কমান্ডের সাথে কি মিল খুঁজে পায় তা জানতে ইউনিক্স কমান্ডটি কী?


22

উদাহরণস্বরূপ, যদি lsইনপুট হিসাবে পাস করা হয় তবে এটি আমাকে বলবে যে কমান্ড-লাইনে /bin/lsচালিত হলে চলবে ls

উত্তর:


25

কমান্ড শেল থেকে শেল পর্যন্ত পরিবর্তিত হয়।

কেবল একটি বিল্ট-ইন শেল একটি সঠিকভাবে জানায় যে প্রদত্ত কমান্ড নামটির জন্য শেলটি কী করবে, কেবল বিল্ট-ইনগুলিই কেবলমাত্র এলিয়াস, শেল ফাংশন, অন্যান্য বিল্ট-ইনগুলি এবং এগুলি সম্পর্কে পুরোপুরি জানতে পারে। মনে রাখবেন: সমস্ত কমান্ড প্রথম স্থানে এক্সিকিউটেবল ফাইলের সাথে মিল নয়।

  • বোর্ন আবার শেল জন্য bash, বিল্ট-ইন রয়েছে typeকমান্ড প্রয়োগ করুন:

    $ type '['
    [ is a shell builtin
    
  • মাছ শেল জন্যfish , typebuiltin ব্যাশ একইভাবে কাজ করে। কার্যকর করার যোগ্য মাত্র পথ পেতে, ব্যবহার করুন command -v:

    $ type cat
    cat is /bin/cat
    $ command -v cat
    /bin/cat
    
  • Korn থেকে শেল জন্য ksh, বিল্ট-ইন রয়েছে whenceকমান্ড - সঙ্গে typeপ্রাথমিকভাবে জন্য একজন সাধারণ ওরফে হিসাবে সেট আপ whence -vএবং commandবিল্ট-ইন সঙ্গে -vকরার বিকল্প সমতুল্য whence:

    $ whence -v ls
    ls is a tracked alias for /bin/ls
    
  • জেড শেল জন্য zsh, বিল্ট-ইন রয়েছে whenceকমান্ড দিয়ে commandবিল্ট-ইন সঙ্গে -vকরার বিকল্প সমতুল্য whenceআর অন্তর্নির্মিত ইনস type, whichএবং whereসমতুল্য whenceবিকল্প সহ -v, -cএবং -caযথাক্রমে।

    $ whence ls
    /bin/ls
    
  • টিসি শেল জন্য tcsh, বিল্ট-ইন রয়েছে whichকমান্ড - যে নামে কোন বাইরের আদেশের সঙ্গে বিভ্রান্ত করা যাবে না:

    > which ls
    ls: aliased to ls-F
    > which \ls
    /bin/ls
    

আরও পড়া


নোট করুন যে ksh এর অধীনে, "টাইপ" হ'ল "কোথাও-ভি" এর একটি ডিফল্ট উপন্যাস সুতরাং এটি ট্র্যাডিশনাল বোর্ন শেল এবং ব্যাশের মতো ব্যবহার করা যেতে পারে।
jlliagre

typeZsh যাও অন্তর্নির্মিত হয়?
হংকক্সু চেন

আরএইচইল 6 এর কোন আরপিএম (উদাঃ which-2.19-6.el6.x86_64) একটি স্টার্টআপ ফাইল রাখে /etc/profile.d/which2.sh। এটি zsh সহ নন-সিএস শেলগুলি পড়ে। এটি whichনিজের কাছে উপাধি দেয়। সুতরাং zsh ব্যবহারকারীদের জন্য বিশেষত এটি বিল্টিনকে ভেঙে দেয় which
ড্যান প্রিটস

14

আপনি এটির whichজন্য ব্যবহার করতে পারেন :

aix@aix:~$ which ls
/bin/ls

এটি PATHআর্গুমেন্টের নামের সাথে মিলে এক্সিকিউটেবল ফাইলগুলি অনুসন্ধান করে কাজ করে । নোটটি শেল এলিয়াসগুলির সাথে কাজ করে না:

aix@aix:~$ alias listdir=/bin/ls
aix@aix:~$ listdir /
bin    dev   initrd.img      lib32   media  proc  selinux  tmp  vmlinuz
...
aix@aix:~$ which listdir
aix@aix:~$

typeতবে, কাজ করে:

aix@aix:~$ type listdir
listdir is aliased to `/bin/ls'

3
সতর্কতা অবলম্বন করুন: যদি ls একটি ফাংশন হয় বা আলিয়াস হয় তবে আপনি 'কোন ls' এর চেয়ে 'ls টাইপ' করতে চান
উইলিয়াম পার্সেল

1
whichঅগত্যা তার নিজের পক্ষে যথেষ্ট নয়। এটা শুধুমাত্র ফেরৎ প্রথম পাওয়া নাম $ PATH- এ ... যে নাম একটি সিম্বলিক লিঙ্ক, এবং হতে পারে না প্রকৃত শেষ অফ শৃঙ্খল এক্সিকিউটেবল।
পিটার.ও

8

whichএক্সিকিউটেবল ফাইলটি (প্রয়োজনীয়ভাবে) ফেরত দেয় না । এটি matching PATH (বা ব্যবহারের সময় নামযুক্ত ফাইলগুলির মতো একাধিক ) -এ খুঁজে পাওয়া প্রথম মিলে যাওয়া ফাইলের নাম ফিরিয়ে দেয় which -a... প্রকৃত নির্বাহযোগ্য একাধিক লিঙ্ক দূরে থাকতে পারে।

  • which locate
    /usr/bin/locate
    `
  • file $(which locate)
    /usr/bin/locate: symbolic link to /etc/alternatives/locate'

কমান্ড যা খুঁজে বের করে প্রকৃত এক্সিকিউটেবল হয় readlink -e,
(সাথে which)

  • readlink -e $(which locate)
    /usr/bin/mlocate

সমস্ত মধ্যবর্তী লিঙ্ক দেখতে :

f="$(which locate)"             # find name in $PATH
printf "# %s\n" "$f"
while f="$(readlink "$f")" ;do  # follow links to executable
    printf "# %s\n" "$f"
done

# /usr/bin/locate
# /etc/alternatives/locate
# /usr/bin/mlocate

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.