Perl

perl 腳本的別名

  • January 6, 2019

到目前為止,在網上沖浪時,我發現我的 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()'

我無法弄清楚應該如何正確轉義這個令牌。

當您不需要它時,您有 alias 語句,您實際創建的是一個函式,將單詞 alias 替換為 function,它將按預期工作。

您實際上也不需要功能,您可以只擁有以下功能,它會按預期工作;

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

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