ฉันมีคำสั่งfoo
ฉันจะรู้ได้อย่างไรว่ามันเป็นเลขฐานสองฟังก์ชันหรือนามแฝง
ที่เกี่ยวข้อง: unix.stackexchange.com/questions/85249/…
—
slm
ฉันมีคำสั่งfoo
ฉันจะรู้ได้อย่างไรว่ามันเป็นเลขฐานสองฟังก์ชันหรือนามแฝง
คำตอบ:
หากคุณอยู่ในทุบตี (หรืออื่นบอร์นเชลล์เหมือน) type
คุณสามารถใช้
type command
จะบอกคุณว่าcommand
เป็นเชลล์ในตัว, นามแฝง (และถ้าเป็นเช่นนั้น, ใช้นามแฝงกับอะไร), ฟังก์ชัน (และถ้าเป็นเช่นนั้นจะแสดงรายการเนื้อหาของฟังก์ชัน) หรือเก็บไว้ในไฟล์ (และหากเป็นเช่นนั้นพา ธ ไปยังไฟล์) .
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ "ไบนารี" คุณสามารถทำได้
file "$(type -P command)" 2>/dev/null
สิ่งนี้จะไม่ส่งคืนสิ่งใดหากcommand
เป็นนามแฝงฟังก์ชันหรือเชลล์ในตัว แต่จะส่งคืนข้อมูลเพิ่มเติมหากเป็นสคริปต์หรือไบนารีที่คอมไพล์แล้ว
อ้างอิง
คำตอบจะขึ้นอยู่กับว่าคุณใช้เชลล์ตัวไหน
สำหรับ zsh, shell builtin whence -w
จะบอกสิ่งที่คุณต้องการอย่างแน่นอน
เช่น
$ whence -w whence
whence : builtin
$ whence -w man
man : command
ใน zsh คุณสามารถตรวจสอบaliases
, functions
และcommands
อาร์เรย์
(( ${+aliases[foo]} )) && print 'foo is an alias'
(( ${+functions[foo]} )) && print 'foo is a function'
(( ${+commands[foo]} )) && print 'foo is an external command'
นอกจากนี้ยังมีbuiltins
สำหรับคำสั่งในตัว
(( ${+builtins[foo]} )) && print 'foo is a builtin command'