Linux中命令的过滤输出

Linux中命令的过滤输出,linux,bash,shell,sh,Linux,Bash,Shell,Sh,如何使用sha256sum命令仅打印hashsum和文件名?我想要Hashsum和文件名,而不是完整路径 命令: sha256sum /mydir/someOtherDir/file.txt 输出: 123Hashsum /mydir/someOtherDir/file.txt 期望输出: 123Hashsum file.txt 您可以将输出读入变量 read -r sha file < <(sha256sum /mydir/someOtherDir/file.txt) 您可

如何使用sha256sum命令仅打印hashsum和文件名?我想要Hashsum和文件名,而不是完整路径

命令:

sha256sum /mydir/someOtherDir/file.txt
输出:

123Hashsum /mydir/someOtherDir/file.txt
期望输出:

123Hashsum file.txt

您可以将输出读入变量

read -r sha file < <(sha256sum /mydir/someOtherDir/file.txt)

您可以尝试按以下方式将管道连接到sed(仅适用于绝对路径):


获得预期结果的最简单方法可能是使用
cd/mydir/someOtherDir/;sha256sum file.txt
代替
sha256sum/mydir/someOtherDir/file.txt
有很多方法可以做到这一点,例如通过更改工作目录或后处理
sha256sum
的输出。但是,您可能需要解释为什么要这样做。如果您想使用命令的别名版本以获得更好的可读性,这很好。但是,如果您想要解析预期的输出,那么只对原始输出进行后处理以便在之后再次解析它是没有意义的。另外:您是否需要支持不同目录中的多个文件,例如
sha256sum/dir1/file1/dir2/dir3/file2
?我正在测试一些C代码以获取文件的哈希和。我知道最好使用像openssl这样的C库,但这只是使用系统调用解决问题的一个小技巧。传入的文件不一定在相应的文件夹中。或
echo“$sha${file###*/}”
bash
中,但不在
sh
echo "$sha" "$(basename "$file")"
sha256sum /mydir/someOtherDir/file.txt | sed 's:/.*/::'