私が望むのは、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 Desktop
さls -Alhd Desktop
れます。フラグが渡されていない場合ll
にのみ実行されますls -Alh "$@"
。