Installez coreutilsavec Homebrew et alias llà la gls -Flh --group-directories-firstplace.
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 .bashrcfichier dans les deux systèmes d'exploitation, voir ci-dessous.)
Dans Ubuntu, lsest fourni par GNU Coreutils , que Ubuntu a toujours. C'est pourquoi les lssupports --group-directories-firstdans Ubuntu. Vous utilisiez probablement la version GNU Coreutils de lssur macOS auparavant, que Homebrew installe en tant que glsmais qui peut être rendue utilisable comme lsde plusieurs manières.
lsest 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 unelsfonction shell ou un alias défini dans un fichier de configuration globale qui a été remplacé; vous aviez peut-être un lien symboliquelsqui avait pointé du doigtglset avait été écrasé; peut-être que vous avez encore quelque chose comme ça, mais votre$PATHa changé. Quoi qu'il se soit passé, GNU Coreutils lsprend 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 .bashrcfichier 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 glsdans 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 llalias différent défini dans chaque système, cette approche a l'avantage d'être auto-documentée. Votre .bashrcaura 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' llalias, vous pouvez créer lsun 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.)
lsou le macOSls? Avez-vous essayé l'autre?