สมมติว่าฉันมีนามแฝงในเปลือกทุบตี มีคำสั่งง่าย ๆ ในการพิมพ์คำสั่งนามแฝงที่จะรันหรือไม่?
สมมติว่าฉันมีนามแฝงในเปลือกทุบตี มีคำสั่งง่าย ๆ ในการพิมพ์คำสั่งนามแฝงที่จะรันหรือไม่?
คำตอบ:
type
builtin เป็นประโยชน์สำหรับการนี้ มันจะไม่เพียง แต่บอกคุณเกี่ยวกับนามแฝงเท่านั้น แต่ยังรวมถึงฟังก์ชันบิวด์อินคำสำคัญและคำสั่งภายนอก
$ 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
จะแสดงคำสั่งทั้งหมดโดยใช้ชื่อว่าในลำดับความสำคัญซึ่งจะเป็นประโยชน์สำหรับนามแฝงดังกล่าวข้างต้นที่ชื่อแทนตัวเองโทรls
ls
$ 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]
เพื่อดูว่านามแฝงที่เฉพาะเจาะจงใช้นามแฝงเป็นตัวอย่างถ้าคุณต้องการที่จะหาสิ่งที่นามแฝงถูกนามแฝงคุณสามารถทำls
alias 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