Installez coreutils
avec Homebrew et alias ll
à la gls -Flh --group-directories-first
place.
brew install coreutils
installe GNU Coreutils , au cas où il ne serait pas installé.
- Utiliser
alias ll='gls -Flh --group-directories-first'
dans .bashrc
.
(Si vous souhaitez utiliser le même .bashrc
fichier dans les deux systèmes d'exploitation, voir ci-dessous.)
Dans Ubuntu, ls
est fourni par GNU Coreutils , que Ubuntu a toujours. C'est pourquoi les ls
supports --group-directories-first
dans Ubuntu. Vous utilisiez probablement la version GNU Coreutils de ls
sur macOS auparavant, que Homebrew installe en tant que gls
mais qui peut être rendue utilisable comme ls
de plusieurs manières.
ls
est une commande externe, pas un Bash intégré. L'utilisation d'une version ou d'une construction différente de Bash ne devrait pas l'affecter. Je ne sais pas ce qui s'est passé lorsque vous avez mis à niveau Bash en utilisant Homebrew. Peut-être que Bash a également été mis à niveau; vous aviez peut-être unels
fonction shell ou un alias défini dans un fichier de configuration globale qui a été remplacé; vous aviez peut-être un lien symboliquels
qui avait pointé du doigtgls
et avait été écrasé; peut-être que vous avez encore quelque chose comme ça, mais votre$PATH
a changé. Quoi qu'il se soit passé, GNU Coreutils ls
prend en charge--group-directories-first
, et le basculement vers celui-ci (comme je pense que bmike le suggère ) devrait résoudre votre problème.
Si, pour une raison quelconque, vous souhaitez utiliser exactement le même .bashrc
fichier dans les deux systèmes, il existe plusieurs approches possibles. Vous pouvez créer un lien symbolique, un script d'encapsuleur, une fonction shell ou (parce que l'expansion d'alias Bash n'est pas récursive) un alias shell pour gls
dans votre système Ubuntu. Mais je suggère plutôt vérifier quel système d' exploitation est utilisé dans .bashrc
. Bien que vous obtiendrez un ll
alias différent défini dans chaque système, cette approche a l'avantage d'être auto-documentée. Votre .bashrc
aura un sens pour vous dans un an ou un mois.
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
Ou si vous trouvez que vous préférez généralement exécuter les Coreutils ls
, même si vous n'utilisez pas l' ll
alias, vous pouvez créer ls
un alias pour gls
:
if [ "$OSTYPE" != linux-gnu ]; then # Is this the macOS system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'
(Merci à soroushjp pour avoir détecté une erreur dans une version antérieure de ce script.)
ls
ou le macOSls
? Avez-vous essayé l'autre?