web-dev-qa-db-ja.com

argsを使用した複雑なbashコマンドのエイリアスまたはインターセプト

フラグ付きのコマンドのbashエイリアスをどのように作成しますか? たとえば、ls -lを実行する場合、それをls -aにエイリアスする必要があります。

これは機能しません:alias "ls -l"="ls -a"

別の例:reboot nowと入力した場合、単にrebootを実行する必要があります。

ここでbash関数は役に立ちますか?


編集:ばかげたls -lの例でごめんなさい。これが私が本当に望んでいることです。reboot nowを実行した場合、実際にrebootを実行したいと思います。 これが理由です。

3
Kevin Boos

別の例:reboot nowと入力した場合、単にrebootを実行する必要があります。

関数を作成します。

reboot() {
  command reboot
}

コマンドrebootを呼び出すと、関数rebootが呼び出され、渡されたすべてのパラメーターが無視されます。

あれは:

reboot

そして

reboot now

コマンドrebootを実行します(引数なし)。

6
devnull

エイリアスはlsである必要があります:

alias ls='ls -a'

その後、あなたがls -l結果はls -la

4
Anthon

これが私が本当に望んでいることです。reboot nowを実行した場合、実際にrebootを実行したいと思います。

rebootの絶対パスを見つけます(たとえば、whereis reboot経由)。その前に/usr/local/binが$ PATHにあることを確認してください(おそらくすでにあります)。1 次に、次のような/usr/local/sbin/rebootファイルを作成します。

#!/bin/sh

reboot

これは、rootとchmod 755 /usr/local/bin/rebootが所有する必要があります。今後、デフォルトで

reboot whatever, blah-blah 

引数なしでrebootを呼び出すだけです。

1.そうでない場合は、 このQ&A を参照してください。

3
goldilocks