md5sum 末尾的奇怪符号
Strange symbols at the end of md5sum
我在 MacOSX 上安装了 md5sum
:
brew install md5sha1sum
当我尝试在终端上创建哈希时:
timestamp=$(date +%m%d%Y%H%M%S)
UUID="$(echo -n "$timestamp" | md5sum )"
echo $UUID
散列末尾有一些奇怪的 -
符号:
[输出]:
20e220c825391b96359a7093c33e9f18 -
为什么会这样?如何去除字符串拖尾符号?
我可以这样做:
timestamp=$(date +%m%d%Y%H%M%S)
UUID="$(echo "$timestamp" | md5sum | cut -d' ' -f1)"
echo $UUID
但是 post- 处理字符串是摆脱奇怪符号的唯一方法吗?
当您使用 md5sum
从标准输入(标准输入)计算 MD5 散列时,它输出 -
作为文件名。例如,
$ md5sum hello.c
ff585184df1b2b93e8e67058e1e708c4 hello.c
$ md5sum < hello.c
ff585184df1b2b93e8e67058e1e708c4 -
请注意,第二条命令从标准输入读取,而第一条命令直接从 hello.c
读取
如果您不需要文件名,您可以将输出通过管道传输到 awk
- 如
$ md5sum < hello.c | awk '{print }'
ff585184df1b2b93e8e67058e1e708c4
或者,对于您的具体情况,
UUID="$(echo -n "$timestamp" | md5sum | awk '{print }')"
或者,
UUID="$(printf $timestamp | md5sum | awk '{print }')"
在 UNIX 领域,-
通常是一个占位符文件名,意思是 "standard input" 或 "standard output"。在这种情况下,它表示标准输入,因为您将数据通过管道传输到 md5sum.
也许可以使用 printf
而不是回显结果,并设置最大长度:
printf "%.32s\n" "$UUID"
因为 md5
总是 32 个字符长,使用格式字符串应该可行。
我在 MacOSX 上安装了 md5sum
:
brew install md5sha1sum
当我尝试在终端上创建哈希时:
timestamp=$(date +%m%d%Y%H%M%S)
UUID="$(echo -n "$timestamp" | md5sum )"
echo $UUID
散列末尾有一些奇怪的 -
符号:
[输出]:
20e220c825391b96359a7093c33e9f18 -
为什么会这样?如何去除字符串拖尾符号?
我可以这样做:
timestamp=$(date +%m%d%Y%H%M%S)
UUID="$(echo "$timestamp" | md5sum | cut -d' ' -f1)"
echo $UUID
但是 post- 处理字符串是摆脱奇怪符号的唯一方法吗?
当您使用 md5sum
从标准输入(标准输入)计算 MD5 散列时,它输出 -
作为文件名。例如,
$ md5sum hello.c
ff585184df1b2b93e8e67058e1e708c4 hello.c
$ md5sum < hello.c
ff585184df1b2b93e8e67058e1e708c4 -
请注意,第二条命令从标准输入读取,而第一条命令直接从 hello.c
如果您不需要文件名,您可以将输出通过管道传输到 awk
- 如
$ md5sum < hello.c | awk '{print }'
ff585184df1b2b93e8e67058e1e708c4
或者,对于您的具体情况,
UUID="$(echo -n "$timestamp" | md5sum | awk '{print }')"
或者,
UUID="$(printf $timestamp | md5sum | awk '{print }')"
在 UNIX 领域,-
通常是一个占位符文件名,意思是 "standard input" 或 "standard output"。在这种情况下,它表示标准输入,因为您将数据通过管道传输到 md5sum.
也许可以使用 printf
而不是回显结果,并设置最大长度:
printf "%.32s\n" "$UUID"
因为 md5
总是 32 个字符长,使用格式字符串应该可行。