web-dev-qa-db-ja.com

エイリアスによって隠されているコマンドを実行する

Bashに次のエイリアスがあるとしましょう-alias ls='ls --color=auto'-オプションなしで通常のlsを呼び出したい。これを行う唯一の方法は、エイリアスを解除し、コマンドを実行してから、再度エイリアスすることですか?または、気の利いたトリックや回避策がありますか?

173

エイリアスを無効にするために、バックスラッシュを前に付けることもできます:\ls

編集:同じことを行う他の方法は次のとおりです。

「コマンド」を使用します:command lsMikel に従います。

完全パスを使用します:/bin/lsther に従います。

Mikelコメントに従って、コマンド"ls"または'ls'を引用します。

unalias command_nameを使用して、そのターミナルセッションのエイリアスを一時的に削除できます。

225
Not Now

それがcommandコマンドの目的です。

試す

command ls

これは、エイリアスと関数をバイパスするようにシェルに指示します。

この方法は、 bashzsh 、および ash /dashでサポートされています。

82
Mikel

エイリアスは定義されたショートカットです。この例では、定義されたエイリアスはlsで、ls --color=autoを実行します。その動作を望まない場合は、絶対パスを使用してバイナリlsを呼び出すことができます。

したがって、/bin/lsだけを実行すると、定義したエイリアスではないため、色なしの出力が生成されます。

また、エイリアスを別のエイリアスに変更するか、カラーパラメータなしでlsのみを実行する新しいエイリアスを追加することもできます。

19
George M

@utherの答えを基にしたもう1つの方法は、$(which ...)または`which ...`(バックティック``を使用)を使用して実行可能ファイルのパスを自動的に見つけることです。これはbashで動作します:

$(which ls)

`which ls`

間違いなく、コマンドの前に\を付けるだけの方がはるかに短いです。

[〜#〜] update [〜#〜]によると、エイリアスコマンドで `which`を使用するには? 、これはまったく信頼できないようです。

10
krlmlr

個人的には、コマンドと同じ名前のエイリアスを定義しないようにしています。そのため、lsは常に実際のコマンドを呼び出します。 llllgなどのオプションのさまざまな組み合わせのエイリアスまたは関数があります。 (つまり、unalias lsまたは.bashrc.cshrcが必要です。)

私が好むかもしれないオプションに関するOSの仮定(lsコマンド自体の設計者の仮定を上書きする)は、私の個人的な好みにほとんど一致しないことがわかりました。私はたまたまls --color=autoの外観が嫌いです。その読みやすさは、白地に黒と黒地に白の間で大きく異なります。

YMMVと他のソリューションはもちろん知っておくと良いでしょう。

2
Keith Thompson

コマンドを大文字で入力すると、LSのように機能するようですが、理由はよくわかりません。

1
asmeurer