~/.bashrc
ファイル内のls
コマンドのエイリアスは、次のものでエイリアスされています。
alias ls='ls --color=auto'
その後、ls
コマンドを端末エイリアスで実行すると、ls
(ls --color=auto
)が実行されます。しかし、私の質問は、元のls
のみとls
のみを追加の引数なしで、またエイリアスエントリの削除に関する問題を解決せずに単独で実行する方法です。このエントリを削除すると、単純なls
で実行できるためです。
次の方法でエイリアスをバイパスできます。
コマンドのフルパス名:/bin/ls
コマンド置換:$(which ls)
組み込みコマンド:command ls
二重引用符:"ls"
単一引用符:'ls'
バックスラッシュ文字:\ls
コマンドの前で\
を使用してエイリアスを無効にできます。
したがって、元の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 /]$
エイリアスを削除せずに、一時的にすべてのエイリアスのエイリアス展開を無効にすることもできます。
$ shopt -u expand_aliases
$ command -v ls
/bin/ls
それらを有効にするには:
shopt -s expand_aliases
$ command -v ls
alias ls='ls --color=auto'
エイリアスの展開はスクリプトではデフォルトで無効になっていますが、インタラクティブシェルではデフォルトで設定されていることに注意してください。
エイリアスコマンドの前にcommand
を追加できます。
command ls
または、which
を組み合わせて元の実行可能ファイルを実行します
which ls
「/ bin/ls」を返すため、
「これはls」
直接実行できます。
ls
の代わりに元の場所/bin/ls
からコマンドを実行することもできます