দীর্ঘ ম্যান পেজগুলি পড়া এবং অনুসন্ধান করা


32

পরিশেষে আমি বিরক্ত পায় যখন সম্পর্কে পড়তে অনুপস্থিত ব্যাশ এর readএবং এটি এর -sসঙ্গে বিকল্প man bash। অবশেষে আমি সঠিক স্পটটি খুঁজে পেয়েছি (প্রায় 4500 লাইনের), তবে এটি যথারীতি হতাশাব্যঞ্জক, যেহেতু উভয় /readএবং এমনকি /\s-s\sঅনুসন্ধানে অনেকগুলি মিল রয়েছে।

সুতরাং, প্রশ্নটি হল: আমি কীভাবে লং ম্যান পৃষ্ঠাগুলি দক্ষতার সাথে পড়তে পারি, বা স্থানীয়ভাবে অন্যান্য উপায়ে একই তথ্য পেতে পারি? নির্দিষ্ট উদাহরণ হিসাবে, read -s pwdশেল স্ক্রিপ্টে দেখার পরে কীভাবে প্রাসঙ্গিক ডকুমেন্টেশনে পৌঁছাবেন ? একটি ভাল উত্তর হ'ল শেল স্ক্রিপ্ট স্নিপেট, বা কোনও সরঞ্জাম এবং এটি কীভাবে ব্যবহৃত হয় বা সম্পূর্ণ অন্য কিছু সম্পর্কে ইঙ্গিত হতে পারে, যতক্ষণ না এটি পড়ার জন্য সঠিক স্থানটি খুঁজে পেতে সহায়তা করে।

নোট: আমি ট্যাগিং করছি না কারণ আমি প্রশ্ন সম্পর্কে সাধারণ মানুষ পৃষ্ঠা পড়া হতে চান, যদিও খুব সম্ভবত সবচেয়ে বেশি যে সম্মুখীন বিশাল বিশাল মানুষ পাতা।


আমি এটিকে উত্তর হিসাবে রাখছি না কারণ এটি আপনার প্রয়োজনীয়তার বাইরেও হতে পারে তবে: যখন আমার একটি দীর্ঘ manপৃষ্ঠা পড়ার দরকার হয় তখন আমি আমার স্ক্রিনটি আমার উপরের প্যানেলে রেখে থাকি use yuugian.com/demo/gkman.txt শেয়ার করুন এবং উপভোগ করুন
Yuugian

আমি হয় একটি উত্তর হিসাবে এই নির্বাণ করছি না;) এটি সম্পর্কে প্রকৃতপক্ষে কারণ bashনিজেই: ঠিক আপনার মত, আমি খুব বেশিরভাগই প্রয়োজন SHELL BUILTINSম্যানুয়াল অংশ, যা লাইন সম্পর্কে এ 3500 । সুতরাং এটি জেনে, পরের বার আমি কেবল বলব man bashএবং তারপরে percent 66 শতাংশ নেমে যাব টাইপ করে 66%, তারপরে কয়েকবার PgDn এবং আমি সেখানে আছি। যদিও আমি chose 66 টি বেছে নিয়েছি কারণ এটি "রুট 66 66" হিসাবে মুখস্থ করা যায় , এটি আসলে তার থেকে কিছুটা বেশি, যদিও এটি আপনার ফোনের শুরু না হওয়া পর্যন্ত মুখস্ত রাখা এত সহজ নয় # ইত্যাদি :) :) কমপক্ষে "রুট 66 66" "সর্বজনীন এবং বিশ্বব্যাপী পরিচিত।
সিনট্যাক্সেরর

উত্তর:


33

বাশ বিল্টিনে দ্রুত সহায়তা পেতে, ব্যবহার করুন help:

help read

আপনি কি চান

ম্যান-পৃষ্ঠার মতো বিন্যাসের জন্য, ব্যবহার করুন

help -m read

বা, আরও ভাল,

help -m read | less

আপনি যদি এখনও ম্যান পৃষ্ঠাতে এটি অনুসন্ধান করার জন্য জোর দিয়ে থাকেন তবে আমি কমান্ডের ব্যাখ্যাটি কী তাড়াতাড়ি আমাকে পেয়ে যায় তা খুঁজে পাই

/^\s*read [[]

এটি কাজ করে কারণ যখন কোনও কমান্ড প্রথমবার ব্যাখ্যা করা হয় তখন লাইনের শুরু থেকে এর নামটি সামান্য যুক্ত করা হয়। এর বিশেষ ক্ষেত্রে read, প্রকৃত readনথিপত্র পাওয়ার আগে এটি সামান্য ব্রাউজিংয়ের দরকার কারণ (স্পষ্ট কারণে) "পঠন" শব্দটি ম্যান পৃষ্ঠাতে অনেক বার পুনরাবৃত্তি হয়েছে। [[] এর অর্থ একটি [যা সাধারণত optionচ্ছিক পরামিতিগুলির পূর্বে থাকে) match (আমি সাধারণত / ^ \ গুলি * ছাড়ি এবং কেবল / <বিল্ট-ইন কমান্ড> [[]) করি

আরেকটি বিকল্প

আপনি যদি ফর্ম্যাট পরিবর্তনটি মানা না করেন তবে আপনি নিজের ম্যান পেজকে ডিভিআই বা পিডিএফ ফাইলে রূপান্তর করতে পারেন:

man -T dvi bash >bash.dvi

অথবা

man -T ps bash | ps2pdf - bash.pdf # Requires the Ghostscript suite for ps2pdf

অবশ্যই, একটি ডিভিআই বা পিডিএফ ডকুমেন্ট দেওয়া, আপনি সহজেই একটি পাঠ্য অনুসন্ধান করতে পারেন।


হুম, এটি helpদুর্দান্ত, আমি আশ্চর্য হয়েছি যে আমি কখনই এটি সম্পর্কে শুনিনি ... এটি ps2pdfএত কার্যকর নয় যেহেতু এটি (আপাতদৃষ্টিতে) কোনও প্রকারের সূচক তৈরি করতে পারে না।
জলদি

@hyde না নিশ্চিত করুন যে আপনি একটি সূচক তৈরি করে কি বোঝাতে চেয়েছেন, কিন্তু আপনি শুনেছেন ptx ?
জোসেফ আর।

সূচি বা বিষয়বস্তু সারণী, "পিটিএক্স" হ'ল আমার মতামত ঠিক এমনটি শোনাচ্ছে।
জলদি

1
আরেকটি, এমনকি সহজ বিকল্পটি হল 'ম্যান বাশ> বশমন.টেক্সট' করা। তারপরে আপনি কেবল আপনার পাঠ্য সম্পাদকটিতে (অন্য) উইন্ডোতে bashman.txt খুলতে পারেন এবং যা চান তা অনুসন্ধান করার জন্য এর সমস্ত কমান্ড ব্যবহার করতে পারেন। এমনকি আপনি যে বিভাগগুলি প্রায়শই উল্লেখ করেন সেগুলির জন্য ট্যাগ যুক্ত করতে আপনি ফাইল সম্পাদনা করতে পারেন। Bashman.txt কেবলমাত্র পঠনযোগ্য করে তোলা সাহায্য করে যাতে আপনি এটি সম্পাদকে দুর্ঘটনাক্রমে সংশোধন করবেন না।
জো

আপনি নিজের পছন্দের ব্রাউজারে ম্যান পেজ খুলতে এবং এর সমস্ত সরঞ্জাম ব্যবহার করতে পারেন। জিজ্ঞাসাবাবু
জো

9

পদ্ধতির ঘ

man bashতারপর /read \[তারপর/-s

পদ্ধতির ঘ

আপনি কমান্ড লাইন আর্গুমেন্ট নামক ব্যাখ্যা জন্য একটি ওপেন সোর্স টুল চেষ্টা করতে পারেন explainshell

এটি স্থানীয়ভাবে ব্যবহার করা যেতে পারে। Https://github.com/idank/explainshell এ ডকুমেন্টেশন পড়ুন

ক্যাভেটস: সাধারণত কাজ করে তবে কেবল উবুন্টুর ম্যানপেজ ভাণ্ডারগুলিতে পাওয়া কমান্ডগুলির সাহায্যে

আপনার ক্ষেত্রে এটি -sস্যুইচ ইনকে চিনতে পারে না read -s pwd

পদ্ধতির ঘ

আমি অন্য একটি সরঞ্জাম পেয়েছি যা আশাব্যঞ্জক বলে মনে হচ্ছে তবে এটি আমার সিস্টেমে কাজ করে না।

ব্যাখ্যা: ইউনিক্স কমান্ডের জন্য সংক্ষিপ্ত ডকুমেন্টেশন


1 পদ্ধতির সাথে, আপনি এই জাতীয় /-s\bআঘাতগুলি এড়ানোর জন্য করতে পারেন --some-other-command(এমন স্ট্রিংগুলি সন্ধান করার সময় -s,, যা আপনি /-sকোনও স্থান অনুসন্ধান করলেও পাবেন না )।
ডেভিড নিপ

8

আমি সাধারণত এই ক্ষেত্রে যা করি তা কেবল চালানো হয় man, SHELL BUILTIN COMMANDSশিরোনামটি অনুসন্ধান করুন, তারপরে বিল্টিন অনুসন্ধান করুন, অর্থাত্‍

man bash
/^SHELL BUILTIN
/  read 

তবে, ব্যাশে আপনি করতে পারেন

help read

বা, সিস্টেমের উপর নির্ভর করে, উভয়ই

man 1 read
man bash-builtins

সাধারণভাবে, এটি করার জন্য আমার কাছে একটি স্ক্রিপ্ট he("সংক্ষিপ্ত সহায়তা") রয়েছে। আপনি এটি এভাবে চালাবেন:

he bash read

অবগতির জন্য, আমি নতুন নামকরণ descকরা hegithub.com/mikelward/scriptts/blob/master/he
মাইকেল

3

কোনও ম্যান পেজে তথ্য সন্ধানের কোনও জেনেরিক উপায় নেই, বইয়ের তথ্য সন্ধানের জেনেরিক উপায় ছাড়া আর কোনও কিছু নেই। এটি আপনি যা খুঁজছেন তার উপর নির্ভর করে।

আপনি যখন শেল বিল্টিন সম্পর্কিত তথ্য সন্ধান করেন, আপনি ইনডেন্টেশনের জন্য একটি রেখার শুরুতে বিল্টিনের জন্য অনুসন্ধান করতে পারেন এবং তার পরে একটি স্থান পাবেন: অনুসন্ধান করুন ^ *read␣(যেমন টাইপ /^ *read␣ Enter) ( একটি স্থান)। এটি ড্যাশ, পিডিএক্স, ম্যাক এবং বাশ দিয়ে কাজ করে। Zsh এর ম্যান পৃষ্ঠাটি বিভক্ত তাই আপনাকে zshbuiltinsম্যান পৃষ্ঠাটি পড়তে হবে । কিছু বিল্টিনের নামের আগে Ksh93 এর বিশেষ চিহ্ন রয়েছে, আপনাকে ^ *†*␣ইউটিএফ -8 বা ^ *-*␣এএসসিআইআইতে অনুসন্ধান করতে হবে । বেশ কয়েকটি মিথ্যা ইতিবাচক রয়েছে তবে এটি আপনাকে দ্রুত ডান লাইনে পৌঁছে দেবে। অনুসন্ধান করা ^ *read($| [-[])মিথ্যা ধনাত্মকতার পরিমাণ হ্রাস করে।

আপনি যেখানে যেতে চান তা আপনার পেজারকে জানিয়ে আপনি অনুসন্ধানের গতি বাড়িয়ে দিতে পারেন। উদাহরণস্বরূপ বিল্টিনের PAGER='less "+/^ *read \["' man bashবিবরণে ব্যাশ ম্যান পৃষ্ঠাটি খোলে read। আপনি এটি একটি ফাংশন করতে পারেন:

man-builtin () {
  PAGER="less '+/^ *$1(\$|\\[|-)'" man ${SHELL##*/}
}

ইন mkshর manpage, / read (দুই স্পেস, কমান্ড নাম, এক স্থান) সাধারণত ডান স্পট (এই একটি কৌতুক আমি নিজেকে ব্যবহার, এবং টাইপ দ্রুত) খুঁজে বের করে। এটি সম্পর্কে জিজ্ঞাসা করার জন্য ধন্যবাদ; আমি আমার টডোতে ম্যাক্সের সাথে অন্তর্ভুক্ত সমস্ত ইউটিলিটির জন্য পৃথক রেফারেন্স (কিছুটা) রাখব।
মীরাবিলোস

1
/ read আপনার পুরুষের প্রয়োগটি পাঠ্যটিকে ন্যায়সঙ্গত করলে @ এমিরিবিলোসের প্রচুর মিথ্যা ইতিবাচক ঝোঁক থাকে।
গিলস

একমত। এমনকি বিল্টিন ডকুমেন্টেশনগুলি বিভক্ত করার আরও বেশি কারণ।
মীরাবিলোস

1

বাশ ম্যান পৃষ্ঠার শেল বিল্টিনস কম্যান্ডস বিভাগে সরাসরি যেতে, আমি আমার $HOME/.bash_aliasesফাইলে নিম্নলিখিত উপন্যাসটি সংজ্ঞায়িত করছি ।

alias man-builtin="man -P 'less -p ^SHELL\ BUILTIN\ COMMANDS' bash"

0

কেবলমাত্র অন্য একটি বিকল্প প্রস্তাব দেওয়ার জন্য, আপনি যদি এমন কোনও ওয়েব ব্রাউজার ব্যবহার করতে পছন্দ করেন যা আপনাকে সহজেই বর্তমান পৃষ্ঠায় সন্ধান করতে দেয় তবে আপনি freeBSD.org এ ব্যবহার করা man.cgi এর মতো কিছু ব্যবহার করতে পারেন যা আপনাকে বিভিন্ন সিস্টেমের ম্যান পেজগুলি দেখতে দেয় যেভাবে তারা পার্থক্য। আমি অন্যান্য সাইটগুলিতেও একই রকম দেখেছি তাই আশেপাশে আরও অন্যান্য প্রকরণ রয়েছে expect

অ্যাপ্রোপসের অধীনে সহায়তা লিঙ্কটি ম্যান পৃষ্ঠা সংগ্রহগুলি ডাউনলোড করার জন্য লিঙ্কগুলি সহ আপনার নিজের সার্ভারে রাখতে স্ক্রিপ্টের অনুলিপি পেতে কিছু তথ্য সরবরাহ করে।


0

আমি এই উদ্দেশ্যে বাশ ফাংশন তৈরি করতে প্রায় পেয়েছি। এই স্নিপেট উদাহরণস্বরূপ শেষে আটকানো হতে পারে ~/.bashrc:

manfind() {
  # required args
  test "$1" -a "$2" || return 1                  

  # create temp file and get its name
  local tmp=$(mktemp /tmp/manfindXXXXXX) || return 1
  ( # subshell for trap
    trap "rm $tmp" EXIT

    # grep all matching lines with line numbers and pipe them to dialog
    if man "$1" |                   # get the whole man page
      grep -n "^\s*$2" |            # grep for the search string, with line nums
      sed 's/:/\n/' |               # replace line num separator with newline for dialog
      cut -c-70  |                  # cut long lines to nice length
      xargs -d'\n' -n 999999 \
        dialog --output-fd 3 --menu "Select line to go to" 0 0 0 3>$tmp -- 1 '(start of man page)'
    then
      # selected line number is now in $tmp, get man page and
      # use vim in read only mode to view it at right line
      man "$1" | vim -R +"$(< $tmp)" -
    else
      # cancel selected from dialog
      exit 1
    fi
  )
}

মন্তব্যগুলি কী করে সে সম্পর্কে কিছুটা ব্যাখ্যা করে। নির্দিষ্ট স্থানগুলিতে ডিফল্ট অনুসন্ধানের স্ট্রিংটি লাইনের শুরু থেকে শব্দ দেওয়া থাকে, প্রাথমিক স্থানটি এড়িয়ে চলে। উদাহরণ:

# find every line which starts with 'read' followed by space
manfind bash 'read '
# research bash subshells
manfind bash '.*subshell'

দ্রষ্টব্য: এই স্ক্রিপ্টটিতে ম্যান পৃষ্ঠাগুলির কোনও ধারণা নেই ... আমি পরে এটি টুইট করি কিনা তা আমি দেখতে পাচ্ছি, তবে MANSECTপরিবেশের পরিবর্তনশীলকে স্থাপন করা মানুষের পক্ষে সহায়তা করে।


2
অস্থায়ী ফাইলটি পরিষ্কার করতে আপনি একটি ফাঁদ যোগ করতে চাইতে পারেন:trap 'rm -f "$tmp"'
l0b0

1
এটি দেখতে খুব জটিল দেখাচ্ছে। আপনার স্ক্রিপ্ট কী করে আমি পুরোপুরি পড়িনি, তবে এর man "$1" | vim -R - "+/$2"মতো কিছু করব না ?
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

@ গিলিস প্রথম যেটি প্রথম ঘটবে $2, তাই না।
হাইড

@ l0b0 ব্যবহারের জন্য পরিবর্তিত ক্লিনআপ trap। যদিও সাবস্কেল তৈরি না করে কোনও ফাংশনে এটি করার কোনও পরিষ্কার উপায় আমি খুঁজে পাইনি।
জলদি

@ হাইড অবশ্যই আপনি যা করছেন রেজেক্সটিকে অভিযোজিত করুন। আমার +/REGEX
বক্তব্যটি

0

এখানে অন্য আলোচনা থেকে টুকরো টুকরো টুকরো টুকরো টুকরো করে এখানে রাখার একটি দ্রুত ফাংশন যা আপনি নিজের মধ্যে ছেড়ে দিতে পারেন .bashrcযা আপনাকে সরাসরি বিল্ট-ইন (যদি এটি উপস্থিত থাকে) এ পৌঁছে দেবে। অন্যথায় এটি manসাধারণ হিসাবে খোলে :

man() {
    case "$(/bin/bash -c 'type -t '"$1")" in 
        builtin)
            LESS=+?"^       $1 " command -p man bash
            ;;
        *)
            command -p man $@
            ;;
    esac
}

0

যে কোনও লিনাক্স ডিস্ট্রো থেকে আপনি info bashযদি তথ্যের সাথে ম্যান পৃষ্ঠাগুলির অনুরূপ ক্রিয়াকলাপের দ্বারা পৃথক অনুচ্ছেদ রাখতে চান তবে আপনি ব্যবহার করতে পারবেন ।

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