สมมติว่าฉันมีนามแฝงในเปลือกทุบตี มีคำสั่งง่าย ๆ ในการพิมพ์คำสั่งนามแฝงที่จะรันหรือไม่?
สมมติว่าฉันมีนามแฝงในเปลือกทุบตี มีคำสั่งง่าย ๆ ในการพิมพ์คำสั่งนามแฝงที่จะรันหรือไม่?
คำตอบ:
typebuiltin เป็นประโยชน์สำหรับการนี้ มันจะไม่เพียง แต่บอกคุณเกี่ยวกับนามแฝงเท่านั้น แต่ยังรวมถึงฟังก์ชันบิวด์อินคำสำคัญและคำสั่งภายนอก
$ type ls
ls is aliased to `ls --color=auto'
$ type rm
rm is /bin/rm
$ type cd
cd is a shell builtin
$ type psgrep
psgrep is a function
psgrep ()
{
ps -ef | {
read -r;
printf '%s\n' "$REPLY";
grep --color=auto "$@"
}
}
type -a cmdจะแสดงคำสั่งทั้งหมดโดยใช้ชื่อว่าในลำดับความสำคัญซึ่งจะเป็นประโยชน์สำหรับนามแฝงดังกล่าวข้างต้นที่ชื่อแทนตัวเองโทรlsls
$ type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
นี้จะบอกคุณว่าเมื่อคุณทำงานls, /bin/lsจะถูกนำมาใช้และ--color=autoจะถูกรวมอยู่ในรายชื่อของข้อโต้แย้งที่นอกเหนือไปจากอื่น ๆ ที่คุณเพิ่มตัวเอง
typeจนกว่าคุณจะตีอย่างอื่นที่ไม่ใช่นามแฝง ...
typeจะแยก / ตีความคำพูดใด ๆ เพื่อให้คุณมั่นใจได้ว่าคำพูดนั้นถูกต้อง
ls is aliased to 'ls --color=auto'แต่ฉันจะเพิ่มเลเยอร์ให้ลึกลงได้อย่างไรเพื่อดูว่ามันใช้ / bin / ls หรือ / usr / local / bin / ls หรืออะไร
type -a lsจะแสดงคำสั่ง ls ทั้งหมดตามลำดับที่ต้องการ แล้วแต่จำนวนใดจะต่ำกว่านามแฝงคือสิ่งที่จะถูกดำเนินการโดยนามแฝง
เพียงพิมพ์aliasในขณะที่พร้อมท์เชลล์ มันควรส่งออกรายการของนามแฝงที่ใช้งานอยู่ในปัจจุบันทั้งหมด
หรือคุณสามารถพิมพ์alias [command]เพื่อดูว่านามแฝงที่เฉพาะเจาะจงใช้นามแฝงเป็นตัวอย่างถ้าคุณต้องการที่จะหาสิ่งที่นามแฝงถูกนามแฝงคุณสามารถทำlsalias ls
alias lsเพื่อค้นหาว่าlsมีการใช้นามแฝงเป็นอย่างไร
typeอย่างไรก็ตามทำงานได้ทั้งสองกรณี
ฉันชอบCtrl+ Alt+ Eมากฉันเรียนรู้จากคำตอบนี้ มัน "ขยาย" บรรทัดคำสั่งที่พิมพ์ในปัจจุบันซึ่งหมายความว่ามันจะทำการขยายนามแฝง (เหนือสิ่งอื่นใด)
นั่นหมายความว่าอย่างไร? เปลี่ยนนามแฝงใด ๆ ที่อาจถูกเขียนบนบรรทัดคำสั่งในปัจจุบันเป็นชื่อแทน
ตัวอย่างเช่นถ้าฉันพิมพ์:
$ ls
จากนั้นกดCtrl+ Alt+ Eมันจะกลายเป็น
$ ls --time-style=locale --color=auto
squeue -u davidmh -o %.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R แทนsqueue -u davidmh -o "%.18i %.9P %.25j %.8u %.8T %.10M %.9l %.6D %R "
คำตอบที่ถูกต้องพูดอย่างเคร่งครัดคือการใช้อาร์เรย์ BASH_ALIASES เช่น:
$ echo ${BASH_ALIASES[ls]}
ls -F --color=auto --show-control-chars
lsนามแฝงปัจจุบันโดยไม่แก้ไขสิ่งที่มี ดังนั้นฉันจะไปalias ls="${BASH_ALIASES[ls]} --time-style=iso"สำหรับกรณีของฉัน
คุณสามารถใช้whichคำสั่ง
หากคุณตั้งชื่อแทนlsเป็นls -alแล้วพิมพ์which lsคุณจะเห็น:
ls: aliased to ls -al.
whichคำสั่ง
whichเป็นวิธีที่ไม่ดีในการค้นหาชื่อแทนตามที่อธิบายไว้ที่นี่: unix.stackexchange.com/questions/10525/ … มันไม่ได้ผลสำหรับฉันสำหรับ alias ในทุบตีบน Ubuntu