像大多数用户一样,我设置了一堆别名来为常用程序提供一组默认标志。例如,
alias vim='vim -X'
alias grep='grep -E'
alias ls='ls -G'
Run Code Online (Sandbox Code Playgroud)
问题是,如果我想用来which
查看我的vim
/ grep
/ ls
/etc 来自哪里,别名会妨碍:
$ which vim
vim: aliased to vim -X
Run Code Online (Sandbox Code Playgroud)
这是有用的输出,但不是我在这种情况下要寻找的;我知道vim
别名为,vim -X
但我想知道它 vim
来自哪里。
除了暂时取消定义别名以便我可以使用which
它之外,是否有一种简单的方法可以which
“解开”别名并在其上运行?
编辑:这似乎which
是一个 shell-builtin,在不同的 shell 中具有不同的行为。在 Bash 中,SiegeX 对--skip-alias
标志的建议有效;但是,我在 Zsh 上。那里是否存在类似的东西?
我有以下工作代码:
largest_prime=1
for number_under_test in {1..100}
do
is_prime=true
factors=''
for ((divider = 2; divider < number_under_test-1; divider++));
do
remainder=$(($number_under_test % $divider))
[ $remainder == 0 ] && [ is_prime ] && is_prime=false && factors+=$divider' '
done
[ $is_prime == true ] && echo "${number_under_test} is prime!" || echo "${number_under_test} is NOT prime (factors= $factors)" [ $is_prime == true ] && largest_prime=$number_under_test
done
printf "\nLargest Prime= $largest_prime\n"
Run Code Online (Sandbox Code Playgroud)
这段代码运行得很快是 0.194 秒。然而,我发现它&& is_prime= false
有点难以阅读,它看起来(在未经训练的眼睛看来)好像是在测试而不是被设置,这就是它的作用。所以我尝试将其更改&&
为 anif...then
并且这有效 - 但在 …