web-dev-qa-db-ja.com

同じ名前でエイリアスされた元のコマンドを実行するにはどうすればよいですか?

~/.bashrcファイル内のlsコマンドのエイリアスは、次のものでエイリアスされています。

alias ls='ls --color=auto'

その後、lsコマンドを端末エイリアスで実行すると、lsls --color=auto)が実行されます。しかし、私の質問は、元のlsのみとlsのみを追加の引数なしで、またエイリアスエントリの削除に関する問題を解決せずに単独で実行する方法です。このエントリを削除すると、単純なlsで実行できるためです。

22
αғsнιη

次の方法でエイリアスをバイパスできます。

  1. コマンドのフルパス名:/bin/ls

  2. コマンド置換:$(which ls)

  3. 組み込みコマンド:command ls

  4. 二重引用符:"ls"

  5. 単一引用符:'ls'

  6. バックスラッシュ文字:\ls

58
terdon

コマンドの前で\を使用してエイリアスを無効にできます。

したがって、元の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 /]$ 
    
9
g_p

エイリアス展開を一時停止する

エイリアスを削除せずに、一時的にすべてのエイリアスのエイリアス展開を無効にすることもできます。

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

それらを有効にするには:

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

エイリアスの展開はスクリプトではデフォルトで無効になっていますが、インタラクティブシェルではデフォルトで設定されていることに注意してください。

9
Volker Siegel

エイリアスコマンドの前にcommandを追加できます。

command ls

または、whichを組み合わせて元の実行可能ファイルを実行します

which ls

「/ bin/ls」を返すため、

「これはls」

直接実行できます。

6
P.-H. Lin

lsの代わりに元の場所/bin/lsからコマンドを実行することもできます

4
Harris