perl 脚本的别名

im_*_*ous 1 password alias perl gpg bashrc

到目前为止,在网上冲浪时,我发现了 gpg 密码生成器的一个很好的补充,我决定用这些命令调整我的别名。这是代码

gpg --gen-random 1 20 | perl -ne'print "Your password: ";s/[\x00-\x20]/chr(ord($^N)+50)/ge;s/([\x7E-\xDB])/chr(ord($^N)-93)/ge;s/([\xDC-\xFF])/chr(ord($^N)-129)/ge;print $_, "\n"'
Run Code Online (Sandbox Code Playgroud)

这是我迄今为止尝试过的:

alias genpass()
{
    gpg --gen-random 1 $1 | perl -ne'
    print "Your password: ";
    s/[\x00-\x20]/chr(ord($^N)+50)/ge;
    s/([\x7E-\xDB])/chr(ord($^N)-93)/ge;
    s/([\xDC-\xFF])/chr(ord($^N)-129)/ge;
    print $_, "\n"'
}
Run Code Online (Sandbox Code Playgroud)

但是在生成新的 bash 实例时发生错误:

bash: /home/user/.bashrc: line 18: syntax error near unexpected token `('
bash: /home/user/.bashrc: line 18: `alias genpass()'
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚应该如何正确转义此令牌。

Chr*_*son 6

当你不需要它时,你有别名语句,你实际创建的是一个函数,用函数替换别名这个词,它会按预期工作。

您实际上也不需要功能,您可以只拥有以下内容,它会按预期工作;

genpass()
{
    gpg --gen-random 1 $1 | perl -ne'
    print "Your password: ";
    s/[\x00-\x20]/chr(ord($^N)+50)/ge;
    s/([\x7E-\xDB])/chr(ord($^N)-93)/ge;
    s/([\xDC-\xFF])/chr(ord($^N)-129)/ge;
    print $_, "\n"'
}
Run Code Online (Sandbox Code Playgroud)