শেল বিল্টিন কমান্ড এবং কীওয়ার্ডগুলির জন্য কীভাবে `man` কে কাজ করবেন?


56

আমি manযখন সুনির্দিষ্ট কমান্ড সম্পর্কে তথ্য পেতে চাই তখন আমি সমস্ত সময় কমান্ডটি ব্যবহার করি। কিন্তু যখন সুনির্দিষ্ট কমান্ডটি শেল অন্তর্নির্মিত হয় তখন এটি আমাকে খুব বেশি সহায়তা করে না। উদাহরণ স্বরূপ:

man cd

আয়:

No manual entry for cd

আমার প্রশ্ন হচ্ছে: এটা করা সম্ভব manএছাড়াও কাজ সব শেল builtin কমান্ড (মত cd, alias, history, ইত্যাদি), এবং কীওয়ার্ড (যেমন if, while, [[, {, ইত্যাদি)?


এবং কিভাবে echoএকটি বিল্টিন কমান্ড আসে তবে একটি ম্যান পেজ রয়েছে?
পার্টো

5
@ অবতারপার্টো echoএকটি সিস্টেম কমান্ড (এক্সিকিউটেবল) এর মধ্যে অবস্থিত /bin। আপনি এটি ব্যবহার করে পরীক্ষা করতে পারেন type -a echo। একই জিনিস timeএবং অন্যদের সাথে ঘটে ।
রাদু রেডানু

আপনি কি info bashএখনও অনুসন্ধান করেছেন ?
bbaassssiiee

আপনি সর্বদা নিজের ম্যান পেজ লিখতে পারেন।
এলিয়ট ফ্রিচ

উত্তর:


66

helpকমান্ড যখন সঙ্গে ব্যবহার করা হয় -mবিকল্প সিউডো-র manpage বিন্যাসে builtin কমান্ড সম্পর্কে তথ্য প্রদর্শন করতে পারেন। উদাহরণ স্বরূপ:

help -m cd | less

cdকমান্ড সম্পর্কে তথ্য একটি ম্যানুয়াল পৃষ্ঠার মতো ঠিক বিন্যাসে প্রদর্শন করবে ।

এই আদেশটি থেকে শুরু manকরে আপনি নিজের .bashrcফাইলের একটি ফাংশনে কমান্ডটি নিম্নরূপে মোড়ানো করতে পারেন :

man () {
    case "$(type -t -- "$1")" in
    builtin|keyword)
        help -m "$1" | sensible-pager
        ;;
    *)
        command man "$@"
        ;;
    esac
}

এর পরে manসমস্ত শেল বিল্টিন কমান্ড এবং কীওয়ার্ডগুলির জন্যও কাজ করবে। উদাহরণ স্বরূপ:

man :

প্রদর্শিত হবে:

NAME
    : - Null command.

SYNOPSIS
    :

DESCRIPTION
    Null command.

    No effect; the command does nothing.

    Exit Status:
    Always succeeds.

SEE ALSO
    bash(1)

IMPLEMENTATION
    GNU bash, version 4.2.45(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2011 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

খুব চালাক পদ্ধতির! +1
ফটসকাত

5
যদি বিল্টিনগুলির দ্বারা মুখোশযুক্ত এক্সিকিউটেবল থাকে তবে আপনি বিভাগটি নির্দিষ্ট করতে পারেন। man timeবনামman 1 time
হান্মিং মনিকার থামান 27'14 14

1
... নোট করুন যদিও আপনি যদি zshব্যবহারকারী হন তবে আপনার এত ভাগ্যবান নয়: বাগস.লাঞ্চপ্যাড.এন.বুন্টু /+ সোর্স / জ্যাশ /+ বাগ / 1242108 (কোনও ম্যান পেজ ইনস্টল করা হয়নি)
Rmano

info, help -mআজকাল কেন আমরা কেবল ভাল ম্যান পেজ রাখতে পারি না? যাইহোক ধন্যবাদ!
টোর ক্লিংবার্গ

+1 ... দুর্দান্ত! Yr ফাংশনের আচরণটি কিছুটা সাদৃশ্যপূর্ণ যা সি / সি ++ এ ফাংশন ওভারলোডিংয়ের মাধ্যমে ঘটে ... কেবল man typeকৌতূহলীভাবে উবুন্টু 14.04.4-এ "-a" বা "-t" বিকল্পগুলির বর্ণনা উত্পন্ন করে না .... এবং এখনও, তারা 'সেখানে পুনরায় !
সিবিহে

28
man bash-builtins

এটি বিল্টিন কমান্ডগুলির জন্য সহায়তা স্নিপেটগুলি ধারণ করে, helpসমতুল্য থেকে কিছুটা বেশি ঘনীভূত ফর্ম্যাটে হলেও ।


জানা ভাল! এটি ম্যানুয়ালটির সেকশন 7 থেকে এসেছে। আমি এখন পর্যন্ত এই ম্যানুয়াল পৃষ্ঠাটি সম্পর্কে শুনিনি। +1, তবে আমি এই উত্তরটি গ্রহণ করতে পারি না কারণ এটি আমি যা চেয়েছিলাম ঠিক তা নয়।
রাদু রেদেনু

ম্যাকোস হাই সিয়েরায় সেই কমান্ডটি কেবল "ম্যান বিল্টইনস"
টনি বারগানস্কি

13

আপনি উন্নয়নের জন্য একটি পসিক্স সিস্টেম ব্যবহার সম্পর্কে ম্যানুয়াল পৃষ্ঠাগুলি ইনস্টল করতে পারেন ,

sudo apt-get install manpages-posix-dev

এটি শেল বিল্টিনগুলির জন্য ম্যান পেজ সরবরাহ করবে।

$ type cd
cd is a shell builtin

এখন চেষ্টা করুন,

$ man cd
CD(P)                      POSIX Programmer's Manual                      CD(P)

NAME
   cd - change the working directory

SYNOPSIS
   cd [-L | -P] [directory]


...

3
আমি অপেক্ষা করছিলাম কেউ এই উত্তরটি নিয়ে আসবে। তবে সমস্যাটি হ'ল এটি কেবল কয়েকটি বিল্টিনের জন্য কাজ করবে - পসিক্স দ্বারা নির্দিষ্ট করা
রাদু রেডানু

3
পশিক্স মোডে চালিত না হওয়া পর্যন্ত ব্যাশ কঠোরভাবে পোসিক্সের সাথে মান্য করে না, সুতরাং এই ম্যান পেজগুলি বিস্তৃত নাও হতে পারে এবং কিছু পরিস্থিতিতে ভুল হতে পারে, বিশেষত কিছু বৈশিষ্ট্যের আচরণের বর্ণনা দেওয়ার সময়।
ক্রিস ডাউন

@ রাদুরাদেয়ানু হ্যাঁ আপনি একেবারে সঠিক, এটি কিছু বিল্টিনের জন্য কাজ করবে।
সৌরভসি

3

এই সমাধানটি পুরোপুরি ভালভাবে কাজ করে তবে এটি একটি রসিকতাও বেশ কিছু কারণ কারণ আমি যখন আপনার প্রশ্নটি পড়ি তখন প্রথমে আমি ভেবেছিলাম 'এখনও আক্ষরিক অর্থে কমান্ড লাইন থেকে মানুষ কে ব্যবহার করে? প্রত্যেকেই নিজের পছন্দ মতো ম্যান পেজ গুগল করে না (যাতে তারা সীমাহীন স্ক্রোলিংয়ের মতো অভিনব জিনিসগুলি পায়)? '। তারপরে আমি বুঝতে পেরেছিলাম যে গুগল গুগল সকল সাইটের সাধারণত উভয় ধরণের কমান্ড থাকে তাই কেবল সমস্ত কমান্ড জুড়ে অভিন্ন ম্যান পৃষ্ঠা ইন্টারফেস সরবরাহ করতে সেগুলি কেন ব্যবহার করা হবে না। অতএব, এই মজা জন্মগ্রহণ করে।

আপনি ইতিমধ্যে কমপক্ষে একবার সন্ধান না করে এমন কোনও এন্ট্রিগুলির জন্য এটি ইন্টারনেট সংযোগ প্রয়োজন requires এটির জন্য এই দুটি ছোট অ্যাপ্লিকেশনও দরকার যা উবুন্টুর একটি ডিফল্ট ইনস্টলেশন অনুপস্থিত:

 sudo apt-get install tidy html2text

এগুলি একেবারেই প্রয়োজন হয় না তবে এটিকে কিছুটা সুন্দর দেখাতে সহায়তা করে। পরিপাটি এইচটিএমএল পরিষ্কার করবে এবং এইচটিএমএল 2 টেক্সট সেই এইচটিএমএলকে বিন্যাসিত পাঠ্য হিসাবে ফর্ম্যাট করবে (যা সাধারণত বেশ তুচ্ছ কারণ যেহেতু এই সাইটগুলির বেশিরভাগই ইতিমধ্যে পাঠ্য বিন্যাসিত এবং কেবল <pre> ট্যাগগুলিতে আবৃত থাকে।

এখন আপনাকে যা করতে হবে তা হ'ল এটির শেষে যুক্ত করুন ~/.profile:

function iman() {
    if [ ! -d "/usr/share/iman" ]; then
        sudo mkdir -m a=rwx /usr/share/iman
    fi
    if [ ! -f "/usr/share/iman/$1.html" ]; then
        curl "http://unixhelp.ed.ac.uk/CGI/man-cgi?$1"| tidy -n -asxml 2>/dev/null| html2text > "/usr/share/iman/$1.html"; 
    fi
    if [ -f "/usr/share/iman/$1.html" ]; then
        cat "/usr/share/iman/$1.html";
    else
        echo "Entry not found."
    fi
}

আপনি লগআউট এবং তারপরে ফিরে আসার পরে আপনি এটি টাইপ করতে সক্ষম হবেন:

iman cd

এবং এটি ম্যান পৃষ্ঠাটি প্রদর্শন করবে cd

আমাদের নেটওয়ার্ক প্রয়োজনীয়তা হ্রাস করার জন্য এটি একটি ডেটা ডিরেক্টরি (/ usr / share / iman) ব্যবহার করে (যাতে এটি সংযোগ ছাড়াই আপনি ইতিমধ্যে খুঁজে পেয়েছেন এমন এন্ট্রিগুলির জন্য কাজ করবে; এছাড়াও এলোমেলো লিনাক্স ম্যান পৃষ্ঠাগুলির লোড হ্রাস করতে আমরা এটির মতো সিস্টেম এন্ট্রিগুলিও দেখতে পেয়েছি)। আপনি যদি এটি আর ব্যবহার না করেন তবে ডিস্কের স্থান পুনরুদ্ধার করতে আপনি তা সরাতে চাইবেন।

আশা করি, বাকিগুলি বেশ সোজা এগিয়ে রয়েছে।


6
'কমান্ড লাইন থেকে এখনও কে আক্ষরিক অর্থে মানুষকে ব্যবহার করে? `আমাকে! এবং অন্য যে সকলকে একটি ডেটাসেন্টারে যেতে হবে (ইন্টারনেট নেই;)
রিঞ্জউইন্ড ২

পয়েন্ট নেওয়া হয়েছে, এটি আপনাকে পরিষ্কার হতে সাহায্য করবে না।
ক্রোয়ে

6
আমি বিপরীতে ভাবি, আমি খুব কমই বশ কমান্ড সন্ধান করতে গুগল ব্যবহার করি। কীবোর্ডটি ছাড়াই কেবল "ম্যান কমান্ড" টাইপ করা অনেক দ্রুত।
লরেন্ট

Alt + tab -> Alt + d -> কমান্ড মাউস ছাড়াই এবং বর্তমান ক্লাইম কমান্ডটি বাতিল না করে এবং স্ক্রোলিং সহ এবং ব্রাউজার আপনাকে দেওয়া মিলিয়ন অন্যান্য দুর্দান্ত জিনিস দিয়ে একই কাজ করবে। আমি নিশ্চিত যে আপনি সে সম্পর্কে কিছুই জানেন না কারণ আপনার
সর্বদা

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