Bagaimana cara menguji apakah perintah adalah alias, fungsi atau biner?

Jawaban:

23

Jika Anda menggunakan Bash (atau shell mirip Bourne), Anda dapat menggunakan type.

type command

akan memberi tahu Anda apakah commandshell built-in, alias (dan jika demikian, alias dengan apa), fungsi (dan jika demikian ia akan mencantumkan fungsi tubuh) atau disimpan dalam file (dan jika demikian, jalur ke file) .

Untuk informasi lebih lanjut tentang file "biner", Anda dapat melakukannya

file "$(type -P command)" 2>/dev/null

Ini tidak commandakan menghasilkan apa-apa jika alias, fungsi atau built-in shell tetapi mengembalikan lebih banyak informasi jika itu adalah skrip atau biner yang dikompilasi.

Referensi

Joseph R.
sumber
3

Jawabannya akan tergantung pada shell yang Anda gunakan.

Untuk zsh, shell builtin whence -wakan memberi tahu Anda apa yang Anda inginkan

misalnya

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 
nomor 5
sumber
1

Dalam zsh Anda dapat memeriksa aliases, functionsdan commandsarray.

(( ${+aliases[foo]} )) && print 'foo is an alias'
(( ${+functions[foo]} )) && print 'foo is a function'
(( ${+commands[foo]} )) && print 'foo is an external command'

Ada juga builtins, untuk perintah bawaan.

(( ${+builtins[foo]} )) && print 'foo is a builtin command'
ericbn
sumber