Pro*_*oob 4 command-line bash alias functions bashrc
我现在正在参加 Hackathon,所以如果有人能尽快回答这个问题,你会帮我一个大忙。
我在 .bashrc 中编写了一个名为 ls() 的函数,如下所示:
ls() {
if(some condition);
do something
else
ls; #(CALL TO ORIGINAL ls SYSTEM CALL)
fi
}
Run Code Online (Sandbox Code Playgroud)
但是这里到了else部分,就进入了无限循环
如何在 else 中调用原始 ls 系统调用,或者,如何使 ls 在一个文件夹中的行为与其他文件夹中的行为不同。
您正在寻找command
:
命令 [-pVv] 命令 [arg ...]
使用 args 运行命令以抑制正常的 shell 函数查找。仅执行在 PATH 中找到的内置命令或命令。如果给出 -p 选项,则使用 PATH 的默认值执行搜索命令,该值保证可以找到所有标准实用程序。如果提供了 -V 或 -v 选项,则会打印命令说明。-v 选项导致显示用于调用命令的命令或文件名的单个单词;-V 选项亲?导致更详细的描述。如果提供了 -V 或 -v 选项,则在找到命令时退出状态为 0,否则为 1。如果没有提供任何选项并且发生错误或找不到命令,则退出状态为 127。否则,
例子:
$ pwd() {
> echo 'command test'
> command pwd
> }
$ pwd
command test
/etc
Run Code Online (Sandbox Code Playgroud)
还有builtin
,这是更严格的:
内置 shell-builtin [参数]
执行指定的 shell 内置命令,传递参数,并返回其退出状态。这在定义名称与 shell 内置函数相同的函数时很有用,在函数中保留内置函数的功能。cd 内置函数通常以这种方式重新定义。如果 shell-builtin 不是 shell 内置命令,则返回状态为 false。