จะทดสอบว่าคำสั่งเป็น alias, function หรือ binary ได้อย่างไร?


คำตอบ:


23

หากคุณอยู่ในทุบตี (หรืออื่นบอร์นเชลล์เหมือน) typeคุณสามารถใช้

type command

จะบอกคุณว่าcommandเป็นเชลล์ในตัว, นามแฝง (และถ้าเป็นเช่นนั้น, ใช้นามแฝงกับอะไร), ฟังก์ชัน (และถ้าเป็นเช่นนั้นจะแสดงรายการเนื้อหาของฟังก์ชัน) หรือเก็บไว้ในไฟล์ (และหากเป็นเช่นนั้นพา ธ ไปยังไฟล์) .

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ "ไบนารี" คุณสามารถทำได้

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

สิ่งนี้จะไม่ส่งคืนสิ่งใดหากcommandเป็นนามแฝงฟังก์ชันหรือเชลล์ในตัว แต่จะส่งคืนข้อมูลเพิ่มเติมหากเป็นสคริปต์หรือไบนารีที่คอมไพล์แล้ว

อ้างอิง


3

คำตอบจะขึ้นอยู่กับว่าคุณใช้เชลล์ตัวไหน

สำหรับ zsh, shell builtin whence -wจะบอกสิ่งที่คุณต้องการอย่างแน่นอน

เช่น

$ whence -w whence
whence : builtin
$ whence -w man     
man : command 

1

ใน 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'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.