Perl 脚本的别名

Perl 脚本的别名

到目前为止,在网上冲浪时,我发现了 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"'

这是我到目前为止所尝试过的:

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"'
}

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

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

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

答案1

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

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

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"'
}

相关内容