मेरे कस्टम बैश फ़ंक्शंस और उपनामों का दस्तावेज़ कैसे करें?


11

मुसीबत:

मेरे पास कई बश फ़ंक्शन और उपनाम हैं। मैं उन सभी को अपने सिर के ऊपर से याद नहीं कर सकता, इसलिए मैं आमतौर पर अपनी .bash_functionsऔर .bash_aliasesफाइलों को खोलने के लिए समाप्त हो जाता हूं जो मुझे चाहिए।

प्रशन):

मैं कैसे bash प्रॉम्प्ट से उपलब्ध कार्यों / उपनामों को सूचीबद्ध कर सकता हूं?

क्या मेरे लिए टिप्पणी (PHPDoc जैसे थोड़े) का उपयोग करके अपने बैश कार्यों / उपनामों का दस्तावेज़ देना संभव है?

मैं फ़ाइलों को खोलने के लिए क्या उपलब्ध है उत्पादन के लिए एक सरल / अच्छा तरीका पसंद करेंगे। यह एक कमांड चलाने के लिए अच्छा होगा और यह मेरे कार्यों / उपनामों की एक गतिशील सूची को बाहर कर देगा (उपयोग उदाहरण एक प्लस होगा)। :)

जवाबों:


17

सक्रिय उपनामों को सूचीबद्ध करने के लिए, दौड़ें:

alias

सभी सक्रिय कार्यों के नाम देखने के लिए, दौड़ें:

declare -F

सभी सक्रिय कार्यों के नाम और परिभाषा देखने के लिए, दौड़ें:

declare -f

अधिक

उपनाम पर उपलब्ध जानकारी भी एक स्क्रिप्ट के अनुकूल प्रारूप है:

declare -p BASH_ALIASES

man bashaliasबिलिन पर अधिक जानकारी प्रदान करता है :

   alias [-p] [name[=value] ...]
          Alias with  no  arguments  or  with  the  -p
          option  prints  the  list  of aliases in the
          form alias name=value  on  standard  output.
          When  arguments  are  supplied,  an alias is
          defined for each name whose value is  given.
          A  trailing  space in  value causes the next
          word to be checked  for  alias  substitution
          when  the  alias is expanded.  For each name
          in the argument list for which no  value  is
          supplied, the name and value of the alias is
          printed.  Alias returns true unless  a  name
          is   given  for  which  no  alias  has  been
          defined.

फ़ंक्शंस के बारे में, man bashबताते हैं कि विकल्प सेट होने पर declareअभी भी अधिक जानकारी उपलब्ध हो सकती extdebugहै:

   Function  names  and definitions may be listed with
   the -f option to the  declare  or  typeset  builtin
   commands.  The -F option to declare or typeset will
   list the function names only  (and  optionally  the
   source  file and line number, if the extdebug shell
   option is enabled).

लिंक

  1. http://ss64.com/bash/alias.html
  2. http://linfo.org/alias.html

हा! बहुत आसान। धन्यवाद! यह बहुत आसान है। कस्टम कार्यों को सूचीबद्ध करने के लिए कोई सुझाव?
mhulse

1
@ आपका स्वागत है। कार्यों के लिए अद्यतन देखें।
जॉन 1024

अद्यतन के लिए धन्यवाद! मैं देख रहा हूँ कि आपने declareजानकारी जोड़ी है । धन्यवाद! मैं के साथ रह सकता है declareऔर aliasजल्दी और आसानी से देखने के लिए। मैंने सिर्फ यह देखा कि मैं वह कर सकता हूं declare -f treeजो केवल treeकार्य करता है। ठंडा! मै बिक चुका हूँ। एक बार फिर धन्यवाद! (मैं 4 मिनट में जवाब के रूप में स्वीकार कर सकते हैं।)
mhulse

2
@ashumeow ss64.com का पाठ ss64.com/bash/alias.html पर उनके कॉपीराइट और वितरण शर्तों के साथ ss64.com/docs/copyright.html (गैर-वाणिज्यिक!) GFDL की शर्तों को ब्रेक करें - bash का लाइसेंस ! मैनुअल, क्योंकि वे gnu.org/software/bash/manual/html_node/Aliases.html से पाठ शामिल करते हैं : बैश मैनुअल के व्युत्पन्न कार्यों के व्यावसायिक उपयोग की अनुमति दी जानी चाहिए। संदर्भ के बिना उनका संकलन इस और इसी तरह के कारण के लिए अच्छा नहीं लगता है।
इम्ज़ - इवान ज़खरीशेव

आपको शैल स्क्रिप्ट विकल्पों के सरल प्रसंस्करण में सचित्र तकनीक मिल सकती है ।
डॉकस्लेवगर

7

मैं अपनी स्क्रिप्ट के लिए --help विकल्प बनाने के लिए निम्न फ़ंक्शन और javadoc जैसे टिप्पणियों का उपयोग करता हूं:

PROG=$0 #The program name, used within doHelp

# Print a help message
# doHelp uses lines starting with ## to create the output
# the tags {@param ...} and {@code ...} colorize words
doHelp() {
grep '^##' "${PROG}" |
sed -e 's/^##[[:space:]]*//' |
while read line; do
    if ( echo "${line}" | grep -q '{@param [^}]*}' ); then
        # color parameter and echo evaulated value
        eval echo -e $(echo ${line} | sed \
            -e 's/^\(.*\){@param \([^}]*\)}\(.*\)$/\
            \"\1\\\\E[32;40m\2\\\\E[37;40m\\t(value: \"$\2\")\3\"/');
    else
        # other color commands
        echo -e $(echo ${line} | sed \
            -e 's/{@code \([^}]*\)}/\\E[36;40m\1\\E[37;40m/g');
    fi
done;
}

पर https://github.com/kaspervandenberg/aida/blob/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh आप देख सकते हैं कि यह एक वास्तविक स्क्रिप्ट के भीतर प्रयोग किया जाता है।


यह वास्ताव में अच्छा है! काश, मैं कई उत्तरों के लिए हरे रंग के चेक अंक दे सकता। थैंक्स कैस्पर! मैं इसे आज़माने की प्रतीक्षा नहीं कर सकता। :)
mhulse

मैं grep: : No such file or directoryइसे एक फ़ंक्शन के रूप में यूनिक्स / बैश के माध्यम से चलाने की कोशिश कर रहा हूं । ... मुझे पता है कि यह प्रश्न पुराना है, लेकिन क्या आप एक उदाहरण दे सकते हैं कि कैसे यह केवल कमांड लाइन के माध्यम से केवल बैश फ़ंक्शन के रूप में चलेगा? धन्यवाद!!! :)
mhulse

1
@ मुल्ज़, मैं यह बताना भूल गया कि आपको परिभाषित करने की आवश्यकता है PROG=$0; उत्तर अपडेट किया गया।
कैस्पर वैन डेन बर्ग

थैंक्स कैस्पर! मैं वास्तव में यह काम करना चाहता हूं, लेकिन मुझे अब तक कोई किस्मत नहीं है। मैं आपको गुस्सा दिलाना चाहूँगा, लेकिन क्या आप bash कमांड लाइन से एक उदाहरण कॉल प्रदान कर सकते हैं? इसके अलावा, मैं कैसे सेट कर सकते हैं --helpया -help(यानी, if echo "$@" | egrep -q -e '(-h)|(--help)'; then ...मैं सेटअप करने के लिए मेरी खुशी होगी। .bash_functions/ aliasesके लिए अनुमति देने के लिए aliasname -hया function arg --helpधन्यवाद फिर से।!
mhulse

1
@mhulse कमांडलाइन से generateReport.shही उदाहरण कॉल केवल तभी उपयोगी है जब आप Zylab के माध्यम से मेडिकल दस्तावेज़ों को अनुक्रमित करना चाहते हैं और उन्हें Aida के माध्यम से क्वेरी करना चाहते हैं। हालाँकि, मदद फ़ंक्शन का उपयोग करने के लिए निम्नलिखित का उपयोग करें wget https://raw.githubusercontent.com/kaspervandenberg/aida/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh && chmod a+x generateReport.sh && ./generateReport.sh --help:। aliasname.Bash_functions का उपयोग करके मैं दूसरा भाग कैसे प्राप्त कर सकता हूं (अभी तक) नहीं जानता।
कैस्पर वैन डेन बर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.