Bash Linux 随机 CLI 密码生成器和 `<`

Thi*_*his 4 shell bash

我最近发现了这种从 bash 的 linux 提示符生成 9 个字符密码的方法:

< /dev/urandom tr -dc A-Za-z0-9_ | head -c9
Run Code Online (Sandbox Code Playgroud)

<做什么?

小智 11

如果您想知道,这只是输入重定向器的一种不太常见的用法。shell 将指定的文件作为输入,其默认行为是将其回显到 stdout。

您拥有的命令的细分:

< /dev/urandom tr -dc A-Za-z0-9_ | head -c9
Run Code Online (Sandbox Code Playgroud)

<: 输入重定向器。Shell 回显文件的内容 (/dev/urandom)

tr:来自tr --help

翻译、挤压和/或删除标准输入中的字符,写入标准输出。

选项-dc 等价于--delete --complement,意思是删除后面字符集的补码,即所有不在集合中的字符。这不包括您的示例中的非字母数字和下划线字符。

head: 打印某些内容的前几行(默认为 10)。-c9 开关告诉它打印多少字节而不是行数。

把它们放在一起,你会得到,“从 /dev/urandom 打印出前 9 个字母数字或下划线字节”。:)

  • 它是“标准的”,从某种意义上说,任何 POSIX sh 都应该在一个简单的命令中(甚至在中间)从任何地方解析重定向。不把它们放在最后是不常见的。 (2认同)