4

"nice" コマンドをエイリアスで使用するにはどうすればよいですか?

例として:

alias list=ls
list # works
nice -10 list # doesn't work

最後の行を機能させるにはどうすればよいですか?

4

4 に答える 4

3

Alias はシェル機能でありnice、外部プログラムです。

$ type nice
nice is hashed (/usr/bin/nice)

nice引数として渡されたコマンドを実行し、C function を呼び出すのはプログラムなexecveので、呼び出しの前にすべての引数を評価する必要があります。

したがって、おそらくエイリアスを使用せずに必要なコマンド全体をそこに置く方が良いでしょうが、本当にしたい場合は、次のようなことを試すことができます:

$ nice -10 `alias list | sed "s/^\(alias \)\?[^=]\+='//; s/'$//;"`

alias listエイリアスの定義を形式alias list='ls'(またはlist='ls'の場合は/bin/sh) で出力するので、そこでいくつかの sed 置換を行って、展開先のコマンドのみを取得しました。

コメントで指摘されているように、使用することが確実な場合は、代わりにbash使用できます。${BASH_ALIASES[list]}

$ nice -10 ${BASH_ALIASES[list]}
于 2012-05-11T02:28:05.557 に答える
1

nice -10 $UserVar1;またはほど魅力的ではないかもしれませんが、エイリアスの代わりにラッパー スクリプトを介して要求されnice -10 ${BASH_ALIASES[list]}たものもあるかもしれません。nice -10 list

# one-time setup
mkdir -p ~/.local/aliases
echo 'PATH=$HOME/.local/aliases:$PATH' >> ~/.bashrc
# open new terminal window, or
source ~/.bashrc

# create the wrapper. $@ to passthrough args.
echo 'ls $@' > ~/.local/aliases/list
chmod +x ~/.local/aliases/list

nice -10 list # works :)
nice -10 list --color=always -lathr # args passthrough also works :)
于 2015-09-04T23:51:25.533 に答える
1

Zsh の場合、BASH_ALIASES は機能しません。したがって、次のように使用できます。

nice -10 `list`
于 2016-06-21T13:02:29.420 に答える