Özel bash işlevleri ve diğer adları nasıl belgelenir?


11

Sorun:

Birden fazla bash fonksiyonum ve takma adım var. Hepsini kafamın üstünden hatırlayamıyorum, bu yüzden genellikle ihtiyacım olanı bulmak için dosyalarımı .bash_functionsve .bash_aliasesdosyaları açıyorum.

Soru (lar):

Bash isteminde bulunan işlevleri / diğer adları nasıl listeleyebilirim?

Benim bash fonksiyonlarımı / takma adımı yorumları kullanarak (PHPDoc gibi) belgelemem mümkün mü?

Dosyaları açmak zorunda kalmadan çıktı almak için basit / güzel bir yol istiyorum. Bir komutu çalıştırmak ve işlevlerimin / takma adlarımın dinamik bir listesini çıkarmasını sağlamak iyi olurdu (kullanım örnekleri bir artı olacaktır). :)

Yanıtlar:


17

Etkin takma adları listelemek için şunu çalıştırın:

alias

Tüm etkin işlevlerin adlarını görmek için şunu çalıştırın:

declare -F

Tüm etkin işlevlerin adlarını ve tanımlarını görmek için şunu çalıştırın:

declare -f

Daha

Takma adlarla ilgili bilgiler de aşağıdaki komut dosyası dostu bir formattır:

declare -p BASH_ALIASES

man bashaliasyerleşik hakkında daha fazla bilgi sağlar :

   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.

İşlevlerle ilgili olarak , seçenek ayarlandığında daha fazla bilgi sağlayabileceğini man bashaçıklar :declareextdebug

   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).

Bağlantılar

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

Ha! Çok kolay. Teşekkürler! Bu oldukça kolay. Özel işlevleri listelemeyle ilgili ipuçları var mı?
mhulse

1
@mhulse Hoşgeldiniz. İşlevler için güncellemeye bakın.
John1024

Güncelleme için teşekkürler! declareBilgileri eklediğini görüyorum . Teşekkür ederim! Ben yaşayabilir declareve aliashızlı ve kolay görüntüleme için. Sadece işlevi declare -f treetüküren yapabileceğimi fark ettim tree. Güzel! Satıldım. Tekrar teşekkürler! (Bunu 4 dakika içinde cevap olarak kabul edebilirim.)
13'te mhulse

2
En ss64.com metnini @ashumeow ss64.com/bash/alias.html telif hakkı ve dağıtım terimleri ile ss64.com/docs/copyright.html (ticari olmayan!) GFDL'nin Koşulları kesilmez Bash --Forum lisans kılavuzu, gnu.org/software/bash/manual/html_node/Aliases.html adresinden metin içerdiklerinden : Bash kılavuzunun türev çalışmalarının ticari kullanımına izin verilmelidir. Referanssız derlemeleri, bu ve benzer ilişkilendirme nedenlerinden dolayı hoş görünmüyor.
imz - Ivan Zakharyaschev

Kullanılacak kabuk betiği seçeneklerinin daha basit işlenmesinde gösterilen tekniği bulabilirsiniz .
DocSalvager

7

Komut dosyalarım için bir --help seçeneği oluşturmak için aşağıdaki işlevi ve javadoc yorumları kullanıyorum:

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;
}

At https://github.com/kaspervandenberg/aida/blob/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh Eğer gerçek bir komut dosyası içinde nasıl kullanıldığını görebilirsiniz.


Bu gerçekten havalı! Keşke birden fazla cevap için yeşil onay işaretleri verebilseydim. Teşekkürler Kasper! Bunu denemek için sabırsızlanıyorum. :)
mhulse

grep: : No such file or directoryBir işlev olarak unix / bash üzerinden çalıştırmaya çalışırken almaya devam ediyorum . … Bu sorunun eski olduğunu biliyorum, ama komut satırı üzerinden bunu sadece bash işlevi olarak nasıl çalıştıracağına bir örnek verebilir misiniz? Teşekkürler!!! :)
mhulse

1
mhulse, tanımlamanız gerektiğini belirtmeyi unuttum PROG=$0; cevap güncellendi.
Kasper van den Berg

Teşekkürler Kasper! Bunun işe yaramasını gerçekten istiyorum ama şimdiye kadar hiç şansım yok. Sizi rahatsız etmekten nefret ediyorum, ama bash komut satırından örnek bir çağrı verebilir misiniz? Ayrıca, nasıl kurabilirim --helpya da -help(yani, if echo "$@" | egrep -q -e '(-h)|(--help)'; then ...benim izin vermek .bash_functions/ aliasesizin vermek aliasname -hya da izin vermek isterim function arg --help. Tekrar teşekkürler!
mhulse

1
@Mhulse Komut satırından gelen örnek çağrı generateReport.sh, yalnızca tıbbi belgeleri Zylab üzerinden endekslemek ve Aida ile sorgulamak istiyorsanız yararlıdır. Ancak, yardım fonksiyonu kullanımı şu denemek için: wget https://raw.githubusercontent.com/kaspervandenberg/aida/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh && chmod a+x generateReport.sh && ./generateReport.sh --help. Nasıl aliasname.bash_functions kullanarak ikinci bölümü elde etmek için henüz bilmiyorum.
Kasper van den Berg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.