Perlスクリプトのエイリアス

Perlスクリプトのエイリアス

これまでのWebサーフィン中に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"'
}

関連情報