লিনাক্স কমান্ড সমস্ত উপলভ্য কমান্ড এবং উপকরণ তালিকা করতে


280

এখানে কি একটি লিনাক্স কমান্ড রয়েছে যা এই টার্মিনাল সেশনের জন্য সমস্ত উপলব্ধ কমান্ড এবং উপাত্ত তালিকাভুক্ত করবে?

যেন আপনি 'a' টাইপ করেছেন এবং ট্যাব টিপেছেন তবে বর্ণমালার প্রতিটি অক্ষরের জন্য। অথবা 'ওরফে' চালাচ্ছি তবে কমান্ডও ফেরত যাচ্ছে।

কেন? আমি নিম্নলিখিতটি চালাতে চাই এবং একটি কমান্ড উপলব্ধ কিনা তা দেখতে চাই:

ListAllCommands | grep searchstr

পরিবেশের সাথে উপলভ্য সমস্ত কমান্ডের তালিকা করতে
দুটিবার টিএবি

উত্তর:


599

আপনি অন্তর্নির্মিত ব্যাশ (1) ব্যবহার করতে পারেন compgen

  • compgen -c আপনি চালাতে পারেন এমন সমস্ত আদেশের তালিকা তৈরি করবে।
  • compgen -a আপনি চালাতে পারেন এমন সমস্ত উপকরণের তালিকা দেবে।
  • compgen -b আপনি চালাতে পারেন এমন সমস্ত বিল্ট-ইন তালিকাভুক্ত করবে।
  • compgen -k আপনি চালাতে পারে এমন সমস্ত কীওয়ার্ড তালিকাভুক্ত করবে।
  • compgen -A function আপনি চালাতে পারেন এমন সমস্ত কার্যকারিতা তালিকাভুক্ত করে।
  • compgen -A function -abck উপরের সমস্তগুলি একবারে তালিকাবদ্ধ করবে।

আপনি তৈরি করতে পারেন এমন অন্যান্য পরিপূর্ণতার জন্য ম্যান পৃষ্ঠাটি দেখুন।

আপনার প্রশ্নের সরাসরি উত্তর দিতে:

compgen -ac | grep searchstr

আপনি যা চান তা করা উচিত


1
Csh / tcsh এর সমতুল্য কি আছে? এই টার্মিনালগুলিতে ট্যাবটিতে কিছু ধরণের অটোমোপলটিং ফাংশন ব্যবহৃত হয়, তাই সম্ভবত কিছু উপস্থিত রয়েছে?
krb686

2
পরিবর্তে compgen | grep, স্ট্রিংটি compgenনিজের পক্ষে যুক্তি হিসাবে প্রেরণ করা আরও দক্ষ হতে পারে (যদি এটি প্রশ্নের উপস্থাপিত হিসাবে এটি একটি উপসর্গ হিসাবে পরিচিত)। এই ক্ষেত্রে, যে হবে compgen -ac searchstr
টবি স্পিড 9

আসলে, উবুন্টু শো 'কিছুই appropiate' উপর whatis compgenএবং জন্য 'না ম্যানুয়ালি প্রবেশ করানোর' man compgen
MarAvFe

1
@ মারআভএফ: কারণ এটি একটি bashঅন্তর্নির্মিত, নিজস্ব ম্যান পেজ সহ একটি পৃথক কমান্ড নয়। আপনি পড়তে হবে bash(1)man পৃষ্ঠা, বা রান help compgenএকটি এ bashকমান্ড লাইন।
ক্যামহ

এক্সটেনশান দ্বারা, করা compgen -c | sort | uniq | lessহ'ল ডুপ্লিকেটড লাইন ছাড়াই উপলব্ধ সমস্ত কমান্ড মুদ্রণ করবে এবং বর্ণানুক্রমিকভাবে বাছাই করা হবে।
ফাবিয়েন

39

.Bashrc এ যুক্ত করুন

function ListAllCommands
{
    echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \
        -executable -type f -printf '%P\n' | sort -u
}

আপনি যদি এলিয়াসও চান, তবে:

function ListAllCommands
{
    COMMANDS=`echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 \
        -executable -type f -printf '%P\n'`
    ALIASES=`alias | cut -d '=' -f 1`
    echo "$COMMANDS"$'\n'"$ALIASES" | sort -u
}

এটি খুব কাছাকাছি তবে এটি এলিয়াসগুলি সহ অন্তর্ভুক্ত নয়। আমি কীভাবে ওরফে যুক্ত করতে পারি | ফলাফল কাটা -1 কিন্তু সাজানোর আগে?
ack

1
বাছাই কেন বিরক্ত করবেন যদি একমাত্র উদ্দেশ্য হ'ল গ্রেপ মাধ্যমে আউটপুট রাখা হয়? ইউনিক্স দর্শন হল সহজ সরঞ্জামগুলি তৈরি করা এবং তারপরে প্রয়োজনে তাদের একসাথে চেইন করা, সুতরাং তালিকাগুলি কম্যান্ডগুলির বাইরে বাছাই করুন এবং যদি ব্যবহারকারী আউটপুটটি বাছাই করতে চায় তবে তারা এটি করতে পারে।
ড্যানিও

4
সাজানো হ'ল সদৃশ অপসারণ।
এন্টস আসমা

1
এটি কমান্ডগুলি খুঁজে পায় না যা এক্সিকিউটেবলের প্রতিলিপি are -Lতাদের গন্তব্যগুলিতে সিমলিঙ্কগুলি অনুসরণ করতে বিকল্পটি ব্যবহার করুন । দ্রষ্টব্য: -Lএটি একটি বিকল্প এবং মেলানো অভিব্যক্তির অংশ নয়, যেমন এটি কমান্ড লাইনের পথের আগে রাখতে হবে। এই ক্ষেত্রেfind -L {}
আডাইফোন

1
অস্তিত্বহীন ডিরেক্টরি সতর্কতাগুলি দমন করতে STDERR কে / dev / null এ পুনঃনির্দেশিত করতে পারে। echo -n $PATH | xargs -d : -I {} find {} -maxdepth 1 -executable -type f -printf '%P\n' 2> /dev/null | sort -u(
Zsh

27

সেখানে

type -a mycommand

কমান্ড যা al PATH- এ মাইকম্যান্ড ব্যবহৃত হয় সেখানে সমস্ত উপাত্ত এবং কমান্ডের তালিকা করে । কমান্ডটি বেশ কয়েকটি ভেরিয়েন্টে বিদ্যমান কিনা তা পরীক্ষা করতে ব্যবহার করা যেতে পারে। এগুলি ছাড়াও ... সম্ভবত এখানে কিছু স্ক্রিপ্ট রয়েছে $ প্যাথ এবং সমস্ত উপাধি বিশ্লেষণ করে তবে এ জাতীয় কোনও স্ক্রিপ্ট সম্পর্কে জানেন না।


1
এমনকি যদি এটি প্রশ্নের উত্তর নাও হয় তবে আমি মনে করি এটি সমস্যার আরও ভাল সমাধান তবে কলটি গ্রেপ করতে হবে। সুতরাং আপনি টাইপ করতে পারেন - একটি foo এবং যদি foo উপলব্ধ না হয় এটি ফিরে পাওয়া কমান্ড পাওয়া যায় না বা এর মতো কিছু দেয়। সুতরাং আপনি কমান্ড নিজেই কল না করে একটি কমান্ডের জন্য পরীক্ষা করতে সক্ষম হন।
জানুস

1
আসলে এটি প্রশ্নের উত্তর, যেমন ওপি জিজ্ঞাসা করেছিল যে "আমি নিম্নলিখিতটি চালাতে চাইছি এবং একটি আদেশ কমান্ড পাওয়া যায় কিনা তা দেখতে চাই", সুতরাং উদ্দেশ্যটি হ'ল কোনও আদেশ পাওয়া যায় কিনা এবং এই উত্তরটি পরিষ্কারভাবে কাজ করে works
লোথার

2
@ ওঠার, আপনি যে আদেশটি সন্ধান করছেন তা হ'ল, আহ, কী ছিল, "স্টার্টসার্ভার" ?, "সার্ভারস্টার্ট" ?, "সার্ভার-কিছু-বা অন্য" ?. আমি জানি, আমি সার্ভারের জন্য কেবল "গ্রেপ -i" যাব এবং এটি সেখানে আছে কিনা তা দেখতে পাবেন। উফ। Bzzz, এই সমাধানের সাথে নয়। মেটে :-) আমি এই উত্তরটি নীচে ভোট দিতে যাচ্ছি না (যেহেতু এটি সীমিত উপায়ে হলেও কার্যকর) তবে একটি সম্পূর্ণ বিকাশযুক্ত সমাধান অ্যাকাউন্টে বিবেচনা করবে যে গ্রেপ কেবল নির্দিষ্ট স্ট্রিং নয়, নিয়মিত প্রকাশের জন্য ।
প্যাক্সিডিয়াবলো

6

"যা অনুসন্ধানের" ব্যবহার করুন। বাইনারি বা আলিফ সেটআপটি যদি কোনও উপাধ হয় তবে তা ফেরত দেয়

সম্পাদনা করুন: আপনি যদি এলিয়াসগুলির একটি তালিকা খুঁজছেন তবে আপনি এটি ব্যবহার করতে পারেন:

alias -p | cut -d= -f1 | cut -d' ' -f2

আপনার পছন্দ অনুযায়ী যে কোনও PATH অনুসন্ধানের উত্তরটিতে এটি যুক্ত করুন। ধরে নিন আপনি বাশ ব্যবহার করছেন ..


6

অন্যদের কমান্ড এম্বেড থাকা সিস্টেমে আমার পক্ষে কাজ করে নি, কারণ তাদের বাশ বা xargs এর আরও সম্পূর্ণ সংস্করণ প্রয়োজন (ব্যস্তবক্সটি সীমাবদ্ধ ছিল)।

নিম্নলিখিত কমান্ডগুলি কোনও ইউনিক্স-মতো সিস্টেমে কাজ করা উচিত।

ফোল্ডার দ্বারা তালিকা:

ls $(echo $PATH | tr ':' ' ')

নাম অনুসারে সমস্ত কমান্ড তালিকাভুক্ত করুন

ls $(echo $PATH | tr ':' ' ') | grep -v '/' | grep . | sort

এটি এখনও নির্ভর করে tr। কেন সহজভাবে নয় ls $(echo ${PATH//:/ })?
মিসচিলি

5

এই স্ক্রিপ্ট চেষ্টা করুন:

#!/bin/bash
echo $PATH  | tr : '\n' | 
while read e; do 
    for i in $e/*; do
        if [[ -x "$i" && -f "$i" ]]; then     
            echo $i
        fi
    done
done

এটি এখন পর্যন্ত একমাত্র কোড সমাধান যা এটি সমস্ত কমান্ডের জন্য করে, কেবলমাত্র প্রদত্ত পরিচিত কমান্ড বিদ্যমান কিনা তা দেখার জন্য নয়। +1 টি।
প্যাক্সিডিয়াবলো

3

ম্যাক ব্যবহারকারীরা (জন্য খোঁজ -executable নেই এবং xargs -d নেই):

echo $PATH | tr ':' '\n' | xargs -I {} find {} -maxdepth 1 -type f -perm '++x'

এর জন্য ধন্যবাদ. আমি আসলে একটি নন-ম্যাক ইউনিক্স ব্যবহার করছি যেখানে @ আন্টসআসমা উত্তর কাজ করে না। এটি ম্যাক এবং আমার ইউনিক্সেও আমার জন্য কাজ করে। আমি যে ইউনিক্স সংস্করণে রয়েছি তা নির্ধারণ করার জন্য আমি কোন আদেশটি টাইপ করতে পারি, তাই আমার সমস্যাটি নিয়ে অন্যের সহায়তা করতে আমি এখানে উত্তর দিতে পারি?
prismaticorb

লিনাক্স <করপোর্টে_পরিষেধর্মী_সৌধিক_ইনফো_এইখানে> সোমবার 12 ডিসেম্বর 13:34:16 ইএসটি 2011 x86_64 x86_64 x86_64 জিএনইউ / লিনাক্স
prismaticorb

3

কমান্ডের সাথে যুক্ত কীওয়ার্ডগুলির উপর ভিত্তি করে কমান্ডগুলি তালিকাভুক্ত করা দরকারী।

ব্যবহার করুন: man -k "your keyword"

একত্রিত করতে নির্দ্বিধায়:| grep "another word"

উদাহরণস্বরূপ, একটি পাঠ্য সম্পাদক খুঁজতে: man -k editor | grep text


2

ALT- টিপতে চেষ্টা করবেন? (একই সময়ে Alt এবং প্রশ্ন চিহ্ন)। তালিকাটি তৈরি করতে এটি একটি বা দুটি দিন। এটি বাশ কাজ করা উচিত।


3
বা ফাঁকা লাইনের শুরুতে চারবার এস্কে আঘাত করার চেষ্টা করুন।
প্রথম দিন

এটি আশ্চর্যজনকভাবে দরকারী, এবং আমি এটি ইতিমধ্যে জানতাম না ধন্যবাদ :-)
ক্রিস হুয়াং-লিভার

2

এখানে একটি সমাধান যা আপনাকে সমস্ত এক্সিকিউটেবল এবং উপাধিকারের একটি তালিকা দেয় । এটি xargs -d(যেমন ম্যাক ওএস এক্স) ছাড়াই সিস্টেমেও বহনযোগ্য এবং এগুলির মধ্যে ফাঁকা স্থানগুলি সঠিকভাবে পরিচালনা করে।

#!/bin/bash
(echo -n $PATH | tr : '\0' | xargs -0 -n 1 ls; alias | sed 's/alias \([^=]*\)=.*/\1/') | sort -u | grep "$@"

ব্যবহার: myscript.sh [grep-options] patternউদাহরণস্বরূপ, যে সমস্ত কমান্ডগুলি শুরু হয় ls, কেস-সংবেদনশীল না থেকে শুরু করুন:

myscript -i ^ls

2

শর্টকাট পদ্ধতি সমস্ত কমান্ড তালিকাভুক্ত। টার্মিনালটি খুলুন এবং দুটি বার "ট্যাব" বোতাম টিপুন। এটি টার্মিনালে সমস্ত কমান্ড প্রদর্শন করে


1
এবং আপনি পাইপ যে grepঠিক কিভাবে?
টবি স্পিড 9

2

বিকল্পভাবে, আপনি দ্রুত বিবরণ সহ কমান্ডগুলির একটি সুবিধাজনক তালিকা পেতে পারেন (যতক্ষণ না কমান্ডটির ম্যান পৃষ্ঠা রয়েছে, যতক্ষণ না সর্বাধিক থাকে):

apropos -s 1 ''

-s 1 returns only "section 1" manpages which are entries for executable programs.

'' is a search for anything. (If you use an asterisk, on my system, bash throws in a search for all the files and folders in your current working directory.)

তারপরে আপনি যেমন চান ঠিক তেমন গ্রেপ করুন।

apropos -s 1 '' | grep xdg

উৎপাদনের:

xdg-desktop-icon (1) - command line tool for (un)installing icons to the desktop
xdg-desktop-menu (1) - command line tool for (un)installing desktop menu items
xdg-email (1)        - command line tool for sending mail using the user's preferred e-mail composer
xdg-icon-resource (1) - command line tool for (un)installing icon resources
xdg-mime (1)         - command line tool for querying information about file type handling and adding descriptions for new file types
xdg-open (1)         - opens a file or URL in the user's preferred application
xdg-screensaver (1)  - command line tool for controlling the screensaver
xdg-settings (1)     - get various settings from the desktop environment
xdg-user-dir (1)     - Find an XDG user dir
xdg-user-dirs-update (1) - Update XDG user dir configuration

ফলাফলগুলি সাজানো বলে মনে হচ্ছে না, তাই যদি আপনি একটি দীর্ঘ তালিকার সন্ধান করেন তবে আপনি একটি নিক্ষেপ করতে পারেন সাজানো | মাঝখানে এবং তারপরে পাইপটি কম / বেশি / সর্বাধিকের মতো পেজারে। Ala:

apropos -s 1 '' | sort | grep zip | less

যা তাদের নাম বা তাদের সংক্ষিপ্ত বিবরণে "জিপ" রয়েছে এমন সমস্ত কমান্ডের একটি বাছাই করা তালিকা প্রদান করে এবং "কম" পেজারকে পাম্প করে। (আপনি "কম" প্রতিস্থাপন করতে পারেন $ PAGER এর সাথে এবং ডিফল্ট পেজার ব্যবহার করতে পারেন))


1

আপনি সর্বদা নিম্নলিখিতটি করতে পারেন:

1. Hold the $PATH environment variable value.
2. Split by ":"
3. For earch entry: 
    ls * $entry 
4. grep your command in that output.

শেলটি কমান্ডটি কেবল তখনই চালিত করবে যদি সেগুলি যাইহোক পথে এনভ ভারে তালিকাভুক্ত হয়।


1

এটি নির্ভর করে, এর অর্থ এই যে আপনি কী শেল ব্যবহার করছেন তার উপর নির্ভর করে। আমি যে সীমাবদ্ধতাগুলি দেখছি তা এখানে:

  1. আপনার শেলের মতো একই প্রক্রিয়াতে চলতে হবে, আপনার যে কমান্ডগুলি খুঁজে পেতে পারে তার উপর প্রভাব ফেলতে পারে এমন এলিয়াস এবং ফাংশন এবং ভেরিয়েবলগুলি ধরে ফেলতে হবে, মনে করুন পাথ বা এডিটোর যদিও এডিটরের সুযোগের বাইরে রয়েছে। আপনার অপরিবর্তিত ভেরিয়েবল থাকতে পারে যা জিনিসগুলিকে প্রভাবিত করতে পারে।
  2. এটি শেল নির্দিষ্ট বা আপনার কার্নেল থেকে চলে যাওয়া, / proc / pid / viর্ষা এবং বন্ধুদের কাছে পর্যাপ্ত তথ্য নেই

আমি জেডএসএইচ ব্যবহার করি তাই এখানে একটি zsh উত্তর, এটি নিম্নলিখিত 3 টি জিনিস করে:

  1. ময়লা পথ
  2. ডাম্প ওরফে নাম
  3. env মধ্যে ফাংশন ডাম্প
  4. তাদের বাছাই

এটা এখানে:

feed_me() {
    (alias | cut -f1 -d= ; hash -f; hash -v | cut -f 1 -d= ; typeset +f) | sort
}

আপনি zsh ব্যবহার করলে এটি করা উচিত।


0

সমস্যাটি হ'ল ট্যাব-সমাপ্তি আপনার পথ সন্ধান করছে তবে সমস্ত আদেশ আপনার পথে নেই your

বাশ ব্যবহার করে আপনার পথে কমান্ডগুলি সন্ধান করতে আপনি এর মতো কিছু করতে পারেন:

এক্স ইন জন্য echo $PATH | cut -d":" -f1; ls $ x; সম্পন্ন


0

এখানে আপনি আপনার বাশার্ক ফাইলটিতে রাখতে পারেন এমন একটি ফাংশন:

ফাংশন কমান্ড-অনুসন্ধান
{
   oldIFS = $ {IFS}
   IFS = ":"

   for AT পথ} এর জন্য পি
   করা
      ls $ p | গ্রেপ $ 1
   সম্পন্ন

   আইএফএস = $ {oldIFS export রফতানি করুন
}

ব্যবহারের উদাহরণ:

$ কমান্ড-অনুসন্ধান জিনোম
জিনোম-অডিও প্রোফাইলের-বৈশিষ্ট্য *
জিনোম-বের করে নিন @
জিনোম-কি-রিং *
gnome-keyring-ডেমন *
জিনোম-মাউন্ট *
GNOME খুলুন *
জিনোম-শব্দ-রেকর্ডার *
GNOME টেক্সট-সম্পাদক @
জিনোম-আনমাউন্ট @
জিনোম-ভলিউম-নিয়ন্ত্রণ *
polkit-জিনোম-অনুমোদন *
vim.gnome *
$

এফওয়াইআই: আইএফএস হ'ল একটি পরিবর্তনশীল যা ব্যাশ স্ট্রিংগুলিকে বিভক্ত করতে ব্যবহার করে।

অবশ্যই এটি করার আরও কিছু ভাল উপায় থাকতে পারে।


-1

হতে পারে আমি ভুল বোঝাবুঝি করছি কিন্তু আপনি যদি সমস্ত এক্স সম্ভাবনা প্রদর্শন না করে আপনি এস্কেপ চাপেন তবে কী হবে?


-2
compgen -c > list.txt && wc list.txt

1
এটি কী করে বা এটি কীভাবে কাজ করবে বলে মনে করা হচ্ছে তার একটি সংক্ষিপ্ত বিবরণ যোগ করার বিষয়ে বিবেচনা করুন। খুব কমপক্ষে, প্রস্তাবিত সমাধানটি অনুসরণ এবং বোঝার জন্য একটি রেফারেন্স লিঙ্ক (সাধারণত প্রাসঙ্গিক ম্যান পৃষ্ঠা) নির্দিষ্ট করুন।
TheCodeArtist

একটি ফাইল ব্যবহার করা সবসময় একটি ভাল বিকল্প নয়। আপনার যদি প্রয়োজন হয় তবে কমপক্ষে এটি একটি টেম্প ফাইল করুন (যদি সুরক্ষা কোনও সমস্যা না হয়))compgen -c > /tmp/list.txt && /tmp/wc list.txt
গ্যারি

-3

আপনি কেবল টাইপ করবেন না কেন:

seachstr

টার্মিনালে।

শেলটি কিছুটা বলবে

seacrhstr: command not found 

সম্পাদনা করুন:

ঠিক আছে, আমি ডাউনটোটটি নিই, কারণ উত্তরটি বোকা, আমি কেবল জানতে চাই: এই উত্তরটিতে কী দোষ আছে !!! প্রশ্নকারী বলেছেন:

এবং দেখুন একটি কমান্ড উপলব্ধ কিনা।

কমান্ডটি টাইপ করা আপনাকে জানায় যে এটি উপলব্ধ কিনা !.

সম্ভবত তিনি / তিনি বোঝাতে চেয়েছিলেন "কমান্ডটি কার্যকর করে" বা "এটি কোনও স্ক্রিপ্টে অন্তর্ভুক্ত করার জন্য" তবে আমি তার মনটি পড়তে পারি না (এটি আমি নিয়মিত করতে পারি না এটি কেবল যে তিনি মন পড়ার মত ডিফ্লেক্টর পরেছেন )


4
formathddকমান্ড বিদ্যমান কিনা তা জানতে চাই I ওহ অপেক্ষা করুন, আমি শুধু এটি চালাতে এবং দেখতে। ঘি। ধন্যবাদ :)
জেফরি জোস

5
এটি করতে 'কোন' ব্যবহার করা সম্ভবত নিরাপদ।
ড্যানিও

এটি প্রদত্ত যে স্ট্যাক ওভারফ্লো , সুপার ব্যবহারকারী নয় , একটি প্রোগ্রামেটিক উত্তর আরও উপযুক্ত হবে।
টবি স্পিড 9

-5

ডিবিয়ান ইন: এলএস / বিন / | গ্রেপ "হোয়াট আই এমস অনুসন্ধানের জন্য"


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