Saya bisa mengetik alias untuk menampilkan daftar semua alias.
Tetapi untuk fungsi, yang bisa saya lakukan adalah grep my .bash_profile
.
Itu hanya mendapatkan yang ada di file itu, bukan yang didefinisikan dalam file tambahan atau secara dinamis.
Apakah ada cara yang lebih mudah untuk mengetahui fungsi apa yang saat ini didefinisikan?
Jawaban:
declare -F
Manual Referensi Bash
sumber
shopt -s extdebug
) DAN menyediakan satu atau lebih nama fungsi kedeclare -F
perintah. IOW,declare -F
tidak tidak menyediakan nama file / line # s bahkan ketika extdebug diaktifkan, yang tidak jelas dari dokumentasi, juga bukan sangat intuitif, IMO.Dengan asumsi bash shell:
akan mencantumkan fungsi.
akan mencantumkan hanya nama fungsi.
sumber
Obsolete. See `help declare'.
akan memberi Anda nama semua fungsi
akan memberi Anda sumber untuk fungsi tertentu
sumber
declare -F
sebenarnya mencetak mendeklarasikan perintah dan bukan hanya nama fungsi:Anda dapat menggunakan
compgen -A function
hanya untuk mencetak nama fungsi:sumber
compgen -A function
hanya apa yang saya cari.compgen -a -A function
compgen -A function | grep "^[a-z]\+" | grep -vE "^dequote|^quote|^in_array"
typeset sudah usang, silakan gunakan:
atau
atau
sumber
Di tempat grep Anda juga dapat menggunakan fgrep atau hgrep (hgrep adalah favorit pribadi saya, ini grep tetapi ini memberi hasil yang bagus 'grep-ped'.
hgrep dapat ditemukan di sini: ACME Labs hgrep
sumber
set | grep " () $" | cut -d' ' -f1
. Tapi itu terlalu rumit dibandingkan dengan jawaban yang lain.grep
bukan solusi yang baik untuk ini, string yang cocok dengan definisi fungsi akan menyebabkan false positive. @wjandrea masih bisa ditangkap oleh multi-string, seperti regex apa pun.Saya bukan ahli dalam hal ini, masih belajar, tetapi setelah menemukan pertanyaan ini dan jawabannya karena saya menginginkan hal yang sama, saya menulis yang berikut (berdasarkan pada " The Archetypal Paul's decong ") untuk memberi saya akhirnya apa yang saya cari: daftar alias dan fungsi yang diformat:
Itu sebelum saya melihat jawaban Lri , dan memperkirakan itu, saya mengganti baris
declare
danalias
dengancompgen
perintah yang sesuai , untuk mendapatkan:Woks memperlakukan untuk apa yang saya inginkan. Berbagi jika itu membantu orang lain.
Ada banyak "tindakan" lain yang tersedia untuk
compgen -A [action]
(dan opsi laincompgen
tentu saja). Saya menemukan artikel yang bagus di sini yang juga menyertakan tautan ke halaman manual (karenaman compgen
tidak berfungsi dalam beberapa kasus).sumber