Bash

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

  • October 13, 2022

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

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

我還沒有在 Bash 中看到過這種表達方式。具體來說,<最開始和連接的/dev/urandomtr讓我吃驚。就我解釋這個命令而言,我們正在從命令中讀取數據/dev/urandomtr但為什麼是第< /dev/urandom一個呢?

重定向操作符可以放在簡單命令中的任何位置(請參閱什麼是 shell 的控制和重定向操作符? ——這裡的“簡單”是 POSIX 意義上的,而不是複合的)。

首先放置輸入重定向有助於使數據流更清晰:從左到右讀取,數據從 讀取/dev/urandom,由 處理tr,然後通過管道傳輸到head

閱讀

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

相反,意味著不知道從哪裡tr獲取數據,直到它的參數之後;這裡沒有很多,但是使用更複雜的命令可以產生很大的不同。

引用自:https://unix.stackexchange.com/questions/720786