代わりにcoreutils
、Homebrewとエイリアスll
をgls -Flh --group-directories-first
使用してインストールします。
brew install coreutils
インストールされていない場合に備えて、GNU Coreutilsをインストールします。
- で使用
alias ll='gls -Flh --group-directories-first'
し.bashrc
ます。
(.bashrc
両方のオペレーティングシステムで同じファイルを使用する場合は、以下を参照してください。)
Ubuntuでは、Ubuntuが常に持っているls
GNU 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
で両方のシステムでまったく同じファイルを使用したい場合、いくつかの可能なアプローチがあります。gls
Ubuntuシステムで、シンボリックリンク、ラッパースクリプト、シェル関数、または(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
か?他のものを試しましたか?