"nice" コマンドをエイリアスで使用するにはどうすればよいですか?
例として:
alias list=ls
list # works
nice -10 list # doesn't work
最後の行を機能させるにはどうすればよいですか?
"nice" コマンドをエイリアスで使用するにはどうすればよいですか?
例として:
alias list=ls
list # works
nice -10 list # doesn't work
最後の行を機能させるにはどうすればよいですか?
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]}
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 :)
Zsh の場合、BASH_ALIASES は機能しません。したがって、次のように使用できます。
nice -10 `list`