2017-07-22 5 views
1

私が見てきたすべてのドキュメントは、エイリアスとシェル関数の両方で、名前にスペースを含めることはできないようです。スペースでコマンドにエイリアスを付けるには? (またはシェル関数)

私がやっていることは、他の管理者(ルートとして)がPass実装(doc here:https://www.passwordstore.org/)に対してコマンドを実行することを難しくすることです。それでも可能ですが、私は "rm $ anyValueTheyInput"のようなコマンドをエイリアスにすることを望んでいました。もちろん、彼らは管理者であり、エイリアスを変更することもできますが、誤ってパスワードを削除するのを避けることができます。

これはBASHでも可能ですか?これらはすべてRHELまたはCentosボックスにあります。

答えて

4

bashでは、引数を指定した完全なエイリアシングコマンドは実行できません(UNIXシェルでも可能です)。あなたは何ができるか

は、すべての望ましくない引数パックと転送し、他の全ての引数パックcommand passへ をキャッチpass関数を作成します:

pass() 
{ 
    if [ rm = "$1" ]; then 
     >&2 printf '%s\n' "You can't do that" 
     return 1 
    fi 
    #more checks... ? 
    #... 
    #forward the sanitized argument pack into the actual pass binary/script 
    command pass "[email protected]" 
} 
関連する問題