ฉันจะรันคำสั่งดั้งเดิมที่ใช้นามแฝงด้วยชื่อเดียวกันได้อย่างไร


22

นามแฝงสำหรับlsคำสั่งใน~/.bashrcไฟล์ชื่อแทนด้วยอันนี้:

alias ls='ls --color=auto'

จากนั้นเมื่อฉันเรียกใช้lsคำสั่งใน terminal aliased ls( ls --color=auto) จะทำงาน แต่คำถามของฉันคือฉันจะเรียกใช้ต้นฉบับlsเพียงlsอย่างเดียวเท่านั้นโดยไม่มีอาร์กิวเมนต์เพิ่มเติมและไม่แก้ปัญหาด้วยการลบรายการที่มีชื่อแทนได้อย่างไร lsตั้งแต่เมื่อฉันลบรายการนี้ฉันสามารถทำงานในที่เรียบง่าย

คำตอบ:


60

คุณสามารถข้ามนามแฝงโดยวิธีการต่อไปนี้:

  1. ชื่อพา ธ เต็มของคำสั่ง: /bin/ls

  2. การทดแทนคำสั่ง: $(which ls)

  3. คำสั่งในตัว: command ls

  4. เครื่องหมายคำพูดคู่: "ls"

  5. เครื่องหมายคำพูดเดี่ยว: 'ls'

  6. อักขระแบ็กสแลช: \ls


9
แม่นยำเพิ่มเติมในทุบตี: command somethingทะลุทั้งนามแฝงและฟังก์ชั่นsomethingการตั้งชื่อ \\something, 'something'และ"something"เพียงทะลุนามแฝงชื่อsomething(ถ้ามีอยู่ฟังก์ชั่นก็จะถูกเรียกว่า) (ฟังก์ชันนำหน้านามแฝงหากทั้งสองมีอยู่และไม่มีการข้าม)
Olivier Dulac

9

ระงับการขยายนามแฝง

คุณสามารถปิดใช้งานการขยายชื่อแทนสำหรับชื่อแทนทั้งหมดได้ชั่วคราวโดยไม่ต้องลบออก:

$ shopt -u expand_aliases
$ command -v ls
/bin/ls

วิธีเปิดใช้งาน:

shopt -s expand_aliases
$ command -v ls
alias ls='ls --color=auto'

โปรดทราบว่าการขยายนามแฝงถูกปิดใช้งานโดยค่าเริ่มต้นในสคริปต์ แต่ตั้งเป็นค่าเริ่มต้นในเชลล์แบบโต้ตอบ


9

คุณสามารถปิดการใช้งานนามแฝงโดยใช้\หน้าคำสั่ง

ดังนั้นในการเรียกใช้lsคำสั่งดั้งเดิมคุณจำเป็นต้องเรียกใช้โดยใช้\ls

ตัวอย่างเช่น

  • ขั้นแรกสร้างนามแฝงของlsคำสั่ง

    [guru@guru-Aspire-5738 /]$ alias ls='ls -l'
    [guru@guru-Aspire-5738 /]$ ls
    total 96
    drwxr-xr-x   2 root root  4096 Sep  3 18:31 bin
    drwxr-xr-x   5 root root  4096 Sep 17 02:51 boot
    drwxr-xr-x   2 root root  4096 Sep  3 22:17 cdrom
    drwxr-xr-x  17 root root  4520 Sep 17 21:11 dev
    drwxr-xr-x 153 root root 12288 Sep 17 21:11 etc
    drwxr-xr-x   3 root root  4096 Sep  3 22:17 home
    lrwxrwxrwx   1 root root    37 Sep  8 21:31 initrd.img -> /boot/initrd.img-3.2.0-68-generic-pae
    lrwxrwxrwx   1 root root    36 Sep  3 22:18 initrd.img.old -> boot/initrd.img-3.2.0-

    (และอื่น ๆ อีกมากมาย...)

  • เอาต์พุตของต้นฉบับlsโดยใช้\ซึ่งแทนที่นามแฝง

    [guru@guru-Aspire-5738 /]$ \ls
    bin    etc         lib     opt   sbin     tmp      vmlinuz.old
    boot   home        lost+found  proc  selinux  usr
    cdrom  initrd.img      media       root  srv      var
    dev    initrd.img.old  mnt     run   sys      vmlinuz
    [guru@guru-Aspire-5738 /]$ 

6

คุณสามารถเพิ่มcommandก่อนคำสั่ง aliased เช่น

command ls

หรือเรียกใช้ไฟล์ปฏิบัติการดั้งเดิมโดยการรวม which

which ls

มันจะส่งคืน "/ bin / ls" ดังนั้นด้วย

`ซึ่ง ls '

คุณสามารถรันมันได้โดยตรง


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