代わりにcoreutils、Homebrewとエイリアスllをgls -Flh --group-directories-first使用してインストールします。
brew install coreutils インストールされていない場合に備えて、GNU Coreutilsをインストールします。
- で使用
alias ll='gls -Flh --group-directories-first'し.bashrcます。
(.bashrc両方のオペレーティングシステムで同じファイルを使用する場合は、以下を参照してください。)
Ubuntuでは、Ubuntuが常に持っているlsGNU Coreutilsによって提供されます。それがUbuntuでlsサポートさ--group-directories-firstれている理由です。おそらくあなたlsも以前にmacOS でGNU Coreutilsバージョンを使用していました。Homebrew はそれとしてインストールされますglsがls、いくつかの方法で使用可能にすることができます。
ls外部コマンドであり、Bashビルトインではありません。別のバージョンまたはビルドのBashを使用しても影響はありません。Homebrewを使用してBashをアップグレードしたときに何が起こったかはわかりません。たぶん、Bashもアップグレードされました。おそらく、ls置き換えられたグローバル構成ファイルでシェル関数またはエイリアスが定義されていました。たぶん、あなたはls指し示してgls上書きされたシンボリックリンクを持っていたかもしれません。多分あなたはまだそのようなものを持っています$PATHが、あなたは変わりました。何が起こったとしても、 GNU Coreutils lsはをサポートしており--group-directories-first、( bmikeが示唆しているように) GNU Coreutilsに切り替えると問題が解決するはずです。
何らかの理由.bashrcで両方のシステムでまったく同じファイルを使用したい場合、いくつかの可能なアプローチがあります。glsUbuntuシステムで、シンボリックリンク、ラッパースクリプト、シェル関数、または(Bashエイリアス展開は再帰的ではないため)シェルエイリアスを作成できます。ただし、代わりにで使用されているOSを確認することをお勧めし.bashrcます。llシステムごとに異なるエイリアスが定義されますが、この方法には自己文書化するという利点があります。あなた.bashrcは一年、または一ヶ月であなたに理にかなっています。
if [ "$OSTYPE" == linux-gnu ]; then # Is this the Ubuntu system?
alias ll='ls -Flh --group-directories-first'
else
alias ll='gls -Flh --group-directories-first'
fi
それとも、あなたが通常のCoreutilsを実行することを好む見つけた場合ls、あなたが使用していない場合でも、llエイリアスを、あなたが作ることができるlsにエイリアスをgls:
if [ "$OSTYPE" != linux-gnu ]; then # Is this the macOS system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'
(そのスクリプトの以前のバージョンの間違いを見つけてくれたsoroushjpに感謝します。)
lsまたはmacOS を使用していますlsか?他のものを試しましたか?