将生成的密码保存到 .txt 文件

将生成的密码保存到 .txt 文件
random-string()
{
    cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${1:-8} | head -n 1
}

使用此脚本生成几千个随机 8 位字母数字密码的列表。

有什么方法可以添加到此脚本以将生成的密码保存到 .txt 文件中?

我对 Linux 还比较陌生,在网上找到了很多资源,但这个却让我困惑。

答案1

使用I/O 重定向

your_script 1>> pwd_list

重定向和附加标准输出到文件pwd_list


例如

#!/bin/bash
random-string()
{
    tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w "${1:-8}" | head -n 1
}

if [ -f out_pwd ]; then
   rm out_pwd
fi

COUNTER=0
while [ "$COUNTER" -le 10 ]; do
    random-string "$@" 1>> pwd_list
done

exit 0

并启动脚本,输出到文件中的pwd_list是脚本的一部分


pwd_list或者使用此脚本,在启动脚本时重定向文件中的输出

#!/bin/bash
random-string()
{
    tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w "${1:-8}" | head -n 1
}

COUNTER=0
while [ "$COUNTER" -le 10 ]; do
    random-string "$@"
done

exit 0

并使用以下命令启动脚本

script_name 1>> pwd_list

答案2

您已经定义了一个函数来生成包含并仅输出最顶层密码的random-string()随机密码( ),从您的问题中不清楚您是否要将每次运行后生成的密码保存到文件中,或者您想以递归方式执行此操作。A-Za-z0-9head -1

让我先简化你的命令:

tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1
  • tr[:alnum]采用表示字符的字符类A-Za-z0-9

  • 没有必要cat,通过 STDIN 将文件名传递给tr

  • fold -w ${1:-8}不需要参数扩展,只需使用fold -w 8

现在,在函数运行一次后保存输出(仅一个密码),这将每次覆盖文件,请使用 shell>重定向运算符:

$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1 ;} >foobar

$ random_string

$ cat foobar 
MqJdehaO

我们将函数的 STDOUT 保存到当前目录中的random_string文件中。foobar

在下次运行中,该文件将被新内容覆盖:

$ random_string

$ cat foobar 
NP85OmWw

例如要覆盖文件,spamegg使用>>重定向,这意味着每次运行函数时,该函数的 STDOUT 都会附加到文件中:

$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n 1 ;} >>spamegg

$ random_string

$ cat spamegg 
vjwOe6TB

$ random_string

$ cat spamegg 
vjwOe6TB
TBkv6qPh

为了使其更加灵活,我们可以通过将数字作为函数的第一个参数来定义一次运行中要保存多少个密码:

$ random_string () { tr -dc '[:alnum:]' </dev/urandom | fold -w 8 | head -n "$1" ;} >foobar

$ random_string 5

$ cat foobar 
AV79dZeC
byitWYfX
eDBAldiI
6OxNU78H
gRs7SwEO

如您所见,已生成 5 个密码并保存在文件中foobar,您可以将其更改5为您想要的任意数量的密码。

相关内容