単一のBashラインでXKCDパスワードを生成する

単一のBashラインでXKCDパスワードを生成する

いくつかの「XKCDパスワード」ジェネレータがありますが、作業が単純に見えたので、コンパクトでシンプルなソリューションを望んでいました。私の要件は次のとおりです

  • 入力するエイリアス行(または関数行).profile
  • 標準 Unix コマンド (パッケージは不要)
  • 熱出力(例pwgen:)
  • タイトルワード(読みやすさのため)

(シンプルさのためにコマンドラインオプションを放棄することを嬉しく思います。)

for i in {1..32}; do grep -E "^[a-z]{4,8}$" /usr/share/dict/words | gshuf -n4 | gsed 's/.*/\u&/' | tr -d '\n' | awk '{print $1}'; done | column

現在の問題:

  • shufmacOSが必要brew install coreutils(私も使用)
  • sed要件brew install gnu-sed(上記と同じ)
  • tr -d '\n' | awk '{print $1}'愚かなようです。

LinuxとmacOSで動作する短いが読みやすいコマンドラインを作成するには?

ところで、SCOWL(一般的な名前を含む短い単語のリストからあいまいな単語を含む長い単語のリストまで)を使用すると、記憶力と記憶力をトレードオフできることがわかりました。エントロピー。

答え1

私がいるところではMacにアクセスできませんが、OS X 10.4.11を実行しているので、あなたの環境と比較できるかどうかはわかりません。次のコードは FreeBSD で単一のパスワードを生成します。これがあなたの要件を満たしていない場合は、コメントで何が欠落しているかを教えてください。

(sort -R /usr/share/dict/words                                   \
 | head -n 4                                                     \
 | awk '{ sub(".", substr(toupper($0),1,1)); printf "%s", $0 }'  \
 ; echo)

FreeBSDと私のArch Linuxシステムでは、sort -R入力はランダムにソートされます。医師はランダムですが、他のほとんどのプログラムと同じくらい良いです。次にセットから4つの単語を選択しますhead。 GNUの代わりに、各行sedの最初の文字を大文字として使用できます。awk最後に、echo終了改行文字を配置するために使用されます。これらすべてがサブシェルにあるため、ループ、パイプ、またはその他の構成に簡単に含めることができます。

関連情報