You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL 8.1中ls命令重定向标准输出及使用-l参数时返回码异常变化的原因咨询

RHEL 8.1中ls命令重定向标准输出及使用-l参数时返回码异常变化的原因咨询

各位大佬,最近碰到个折腾了我大半天的奇怪问题,想请教下大家这到底是怎么回事😅

先给大家看我一步步测试的过程:

首先我执行了这个命令,能看到ls明明报错找不到/mnt/pid_oper/Trans,但最后返回码是1:

$ ls /mnt/pid_oper/ ; echo $?
ls: cannot access '/mnt/pid_oper/Trans': No such file or directory
Trans
1

然后我把标准输出重定向到/dev/null后,神奇的事情发生了——返回码变成0了:

$ ls /mnt/pid_oper/ > /dev/null; echo $?
0

一开始我以为是重定向操作改变了命令的返回码?但我马上做了个验证测试,发现并不是这么回事:

$ $(exit 138) ; echo $?
138
$ $(exit 138) > /dev/null; echo $?
138

那问题就出在ls本身了?更诡异的还在后面,当我给ls加上-l参数后,重定向输出的返回码又变回1了:

$ ls /mnt/pid_oper/ > /dev/null; echo $?
0
$ ls -l /mnt/pid_oper/ > /dev/null; echo $?
ls: cannot access '/mnt/pid_oper/Trans': No such file or directory
1

补充下背景:这个/mnt/pid_oper/目录下的Trans是一个挂载异常的文件,直接用ls查看会显示成d?????????? ? ? ? ? ? Trans这种状态,我本来是想用ls的返回码来检测挂载是否卡住的,结果就碰到了这个离谱的情况。

有没有大佬能解释下这背后的原因呀?

备注:内容来源于stack exchange,提问作者user1099277

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:58:11