Bagaimana saya bisa menjalankan perintah asli yang alias dengan nama yang sama?

22

Alias ​​untuk lsperintah dalam ~/.bashrcfile alias dengan yang ini:

alias ls='ls --color=auto'

kemudian, ketika saya menjalankan lsperintah di terminal alias ls( ls --color=auto) berjalan. tetapi pertanyaan saya adalah bagaimana saya bisa menjalankan yang asli lssaja dan hanya lssendiri tanpa argumen tambahan dan tanpa menyelesaikan masalah dengan menghapus entri alias? karena ketika saya menghapus entri ini saya dapat menjalankannya dengan sederhana ls.

αғsнιη
sumber

Jawaban:

60

Anda dapat mem-bypass alias dengan metode berikut:

  1. pathname lengkap dari perintah: /bin/ls

  2. substitusi perintah: $(which ls)

  3. perintah builtin: command ls

  4. tanda kutip ganda: "ls"

  5. tanda kutip tunggal: 'ls'

  6. karakter garis miring terbalik: \ls

terdon
sumber
9
tambahan precision di bash: command somethingmem-bypass kedua alias dan fungsi bernama something. \\something, 'something'dan "something"hanya mem-bypass alias bernama something(jika suatu fungsi ada, ia akan dipanggil). (alias mendahului fungsi jika keduanya ada dan tidak ada yang dilewati)
Olivier Dulac
9

Tangguhkan ekspansi alias

Anda juga dapat menonaktifkan ekspansi alias untuk semua alias sementara, tanpa menghapusnya:

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

Untuk mengaktifkannya:

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

Perhatikan bahwa ekspansi alias dinonaktifkan secara default di skrip, tetapi disetel secara default di shell interaktif.

Volker Siegel
sumber
9

Anda dapat menonaktifkan alias menggunakan \di depan perintah.

Jadi untuk menjalankan yang asli ls perintah Anda perlu menjalankannya menggunakan\ls

Sebagai contoh

  • Pertama membuat alias dari ls perintah.

    [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-

    (dan masih banyak lagi...)

  • Output asli yang lsmenggunakan \yang menimpa alias.

    [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 /]$ 
g_p
sumber
6

Anda dapat menambahkan commandsebelum perintah alias, mis

command ls

Atau jalankan executable asli dengan menggabungkan which

which ls

Ini akan mengembalikan "/ bin / ls", oleh karena itu dengan

`yang ls`

Anda bisa menjalankannya secara langsung.

P.-H. Lin
sumber
4

Anda juga dapat menjalankan perintah dari lokasi aslinya /bin/lsalih-alihls

Harris
sumber