エイリアスまたは関数を含むBashカスタムフラグ

エイリアスまたは関数を含むBashカスタムフラグ

私が望むのは、bashコマンド/エイリアスのカスタムフラグを定義できることです。たとえば、次のようになります。

alias ll='ls -Alh'
alias la='ls -A'
alias l='ls -lh'

ls -d */ただし、上記のコマンドを実行するたびに実行される-dなどのカスタムフラグを設定して、詳細なリストに隠されたディレクトリのみを一覧ll -f表示しようとしています。

答え1

最後の文章で何をしたいのか分かりません。申し訳ありません;)

私はあなたがll次の機能を望んでいると仮定します。ls -Alh とは別に呼び出されたときll -f- この場合、隠されたディレクトリのみを一覧表示する必要があります。これが望ましくない場合は、比較的調整が簡単です。特別な意味を持つすべてのフラグをコマンドに追加し、getopts各フラグのケースを作成します。デフォルト値は、常にbreak関数に特別な意味のないフラグを渡すとls -Alh実行されるようにする必要があります。

とにかく、ここで呼び出された関数を定義できるスクリプトがありますll(エイリアスは目的の操作を実行するのに十分強力ではありません)。あなたはする必要があります源泉つまりsource <script>スクリプトなので、関数が定義されます。unalias llスクリプトを受け取る前に注意してください。そうしないと、予期しないことが発生する可能性があります。

#!/usr/bin/env bash
ll() {
    while getopts ":f" opt; do
        case $opt in
            f)
                command ls -Ald .*/
                return 0
                ;;
            \?)
                break;
        esac
    done
    command ls -Alh "$@"
}

ll -fこれにより、アクションはls -Ald .*/すべての隠しディレクトリを次のように一覧表示します。llサインを与えるといいえ -fこれはデフォルトで呼び出されますls -Alh "$@"$@単に「すべての引数」を表します)。たとえばと書くと実行ll -d Desktopls -Alhd Desktopれます。フラグが渡されていない場合llにのみ実行されますls -Alh "$@"

関連情報