我有一个命令像下面
md5sum test1.txt | cut -f 1 -d " " >> test.txt
我希望上面结果的输出带有前缀File_CheckSum:
预期输出:File_CheckSum: <checksumvalue>
个
我尝试了以下方法
echo 'File_Checksum:' >> test.txt | md5sum test.txt | cut -f 1 -d " " >> test.txt
但得到结果是
File_Checksum:
adbch345wjlfjsafhals
我希望整个输出在一行中
File_Checksum: adbch345wjlfjsafhals
4条答案
按热度按时间mbskvtky1#
echo
在完成参数写入后会写入一个换行符。某些版本的echo
允许使用-n
选项来抑制换行符,但最好使用printf
。您可以使用命令组来连接两个命令的标准输出:
请注意,此处存在争用条件:理论上,您可以在
md5sum
完成阅读之前写入test.txt
,从而导致校验和超过预期的数据。(您的原始命令提到test1.txt
和test.txt
是单独的文件,因此不清楚您是否真的在读取和写入同一个文件。)jmo0nnb32#
您可以使用命令分组将命令列表作为一个单元执行,并立即重定向组的输出:
sr4lhrrt3#
请注意,如果您试图计算
test.txt
(您试图写入的同一个文件)的哈希值,这会使情况发生很大变化。另一个选项是:
或者:
但请注意,所有后续命令也会将其输出写入
test.txt
。恢复stdout的典型方法是:jaxagkaj4#
运算符
&&
,例如mkdir example && cd example