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


22

これでエイリアスされls~/.bashrcファイル内のコマンドのエイリアス:

alias ls='ls --color=auto'

その後、ls端末でコマンドを実行すると、エイリアスlsls --color=auto)が実行されます。しかし、私の質問は、余分な引数なしで、エイリアスエントリを削除する問題を解決せずにls、オリジナルだけをls単独で実行するにはどうすればよいですか?このエントリを削除すると、簡単に実行できるためlsです。

回答:


60

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

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

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

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

  4. 二重引用符: "ls"

  5. 単一引用符: 'ls'

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


9
bashの追加の精度:エイリアスと名前付き関数のcommand something両方をバイパスします。、および指定されたエイリアスのみをバイパスします(関数が存在する場合は、呼び出されます)。(両方が存在し、どちらもバイパスされない場合はエイリアスが機能に先行します)something\\something'something'"something"something
オリビエデュラック14

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たとえば、エイリアスコマンドの前に追加できます。

command ls

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

which ls

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

「これはls」

直接実行できます。


4

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.