`< /dev/urandom tr -dc _A-Zaz-0-9` 的解释

`< /dev/urandom tr -dc _A-Zaz-0-9` 的解释

文章中,我遇到了以下命令:

< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-32}

我在 Bash 中还没见过这种表达方式。具体来说,开头的和<的串联让我感到惊讶。据我解释这个命令,我们正在从命令中读取数据,但为什么是第一个?/dev/urandomtr/dev/urandomtr< /dev/urandom

答案1

重定向运算符可以放置在简单命令中的任何位置(请参阅shell 的控制和重定向运算符是什么?— 这里的“简单”是 POSIX 意义上的,而不是复合)。

首先放置输入重定向有助于使数据流更清晰:从左到右读取,数据从 读取/dev/urandom,由 处理tr,然后通过管道传送到head

阅读

tr -dc _A-Z-a-z-0-9 < /dev/urandom | head -c${1:-32}

tr相反意味着直到参数之后才知道从哪里获取数据;这里的命令并不多,但是使用更复杂的命令可以产生很大的不同。

相关内容