昨天我读了这个 SO 评论,它说在 shell 中(至少bash)>&-“与”具有相同的结果>/dev/null。
该评论实际上将 ABS 指南称为其信息来源。但该消息来源说>&-语法“关闭文件描述符”。
我不清楚关闭文件描述符和将其重定向到空设备这两个操作是否完全等效。所以我的问题是:是吗?
从表面上看,关闭描述符就像关闭一扇门,但将其重定向到空设备似乎打开了一扇通往地狱的大门!两者对我来说似乎并不完全相同,因为如果我看到一扇关着的门,我不会尝试从里面扔出任何东西,但是如果我看到一扇敞开的门,我会认为我可以。
换句话说,我一直想知道是否>/dev/null意味着cat mybigfile >/dev/null实际上会处理文件的每个字节并将其写入/dev/null忘记它。另一方面,如果 shell 遇到一个关闭的文件描述符,我倾向于认为(但我不确定)它不会写任何东西,尽管问题仍然是是否cat仍会读取每个字节。
这个评论说>&-和>/dev/null“应该”是一样的,但对我来说并不是那么响亮的答案。我想有一个更权威的答案,参考标准或源核心与否......
我正在尝试将 stderr 重定向到 stdout,然后再重定向到 init 脚本中的文件,但是当我将 stderr 引入 stdout 时,我收到了“Ambiguous output redirect”错误。单独的标准输出不会导致错误,并写入我所说的日志文件。我试过以下
-jar /jbeaulau_test/microservices/config-server-0.0.2-RELEASE.jar &>/jbeaulau_test/microservices/log/all.log &
-jar /jbeaulau_test/microservices/config-server-0.0.2-RELEASE.jar >/jbeaulau_test/microservices/log/all.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)
任何意见,将不胜感激。
$!/bin/sh
if grep "$1" /etc/passwd 2>/dev/null #Search username at beging of line1
then
echo "Pattern found - Job Over"
else
echo "Pattern not found"
fi
Run Code Online (Sandbox Code Playgroud) 我需要获取文件的内容,但希望在文件不存在时防止出现错误。
可以做这样的事情吗?
cat my-file.txt || false
Run Code Online (Sandbox Code Playgroud)