shell 使用哪个bash命令检查程序是否存在(即使是别名)?

cigdeys3  于 2022-11-25  发布在  Shell
关注(0)|答案(1)|浏览(134)

有没有一个命令可以检查一个程序是否存在,即使它是一个别名?
我刚刚读过题目:How can I check if a program exists from a Bash script?
但是command -v PROGRAM_NAME不支持别名,比如说,它不支持lsls是Ubuntu上ls --color=auto的默认别名。
那么,我必须创建一个函数来实现这一点吗?
它可以首先使用command -v进行检查,如果不起作用,则使用正则表达式查找别名链接到的位置,然后使用正则表达式结果重试。
但如果这是正确的解决方案,我会感到惊讶......实际上,如果Linux上没有程序来检查一个程序是否存在,那就奇怪了,对吗?
编辑:
“不起作用”意思是:

$ if [ -x "$(command -v python)" ]; then echo "python exists"; fi
python exists

但如果我输入:

$ if [ -x "$(command -v ls)" ]; then echo "ls exists"; fi

此处未打印任何内容
我希望条件检测程序仍然存在。

bxgwgixi

bxgwgixi1#

test -L选项应该可以使用:

touch /tmp/test-file
ln -s /tmp/test-file /tmp/test-file-alias
test -L /tmp/test-file-alias && echo "it's a link"

相关问题