Installer coreutils
avec Homebrew et alias ll
a **_gls_** -Flh --group-directories-first
à la place.
-
brew install coreutils
installe GNU Coreutils au cas où il ne serait pas installé.
- Utilisez
alias ll='gls -Flh --group-directories-first'
sur .bashrc
.
(Si vous voulez utiliser le même .bashrc
dans les deux systèmes d'exploitation, voir ci-dessous).
Dans Ubuntu, ls
est fourni par GNU Coreutils ce qu'Ubuntu a toujours fait. C'est pourquoi ls
soutient --group-directories-first
dans Ubuntu. Vous aviez probablement utilisé la version GNU Coreutils de ls
sur MacOS auparavant, aussi, que Homebrew installe en tant que gls
mais qui peut être rendu utilisable comme ls
de plusieurs façons.
ls
est une commande externe, pas une commande intégrée à Bash. L'utilisation d'une version ou d'une compilation différente de Bash ne devrait pas l'affecter. Je ne suis pas sûr de ce qui s'est passé lorsque vous avez mis à jour Bash en utilisant Homebrew. Il se peut que d'autres éléments que Bash aient été mis à jour, ou que vous ayez eu un problème avec le système d'exploitation. ls
fonction shell ou alias défini dans un fichier de configuration globale qui a été remplacé ; vous aviez peut-être un lien symbolique ls
qui avait indiqué gls
et a été écrasé ; peut-être avez-vous toujours quelque chose comme ça mais votre $PATH
a changé. Peu importe ce qui s'est passé, GNU Coreutils ls
soutient --group-directories-first
et y passer (comme je le crois bmike suggère ) devrait régler votre problème.
Si, pour une raison quelconque, vous voulez utiliser exactement la même .bashrc
dans les deux systèmes, il y a quelques approches possibles. Vous pouvez créer un lien symbolique, un wrapper script, une fonction shell, ou (parce que l'expansion des alias Bash est non 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é sur .bashrc
. Bien que vous obtiendrez un ll
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 habituellement exécuter les Coreutils ls
même si vous n'utilisez pas l'option ll
vous pouvez faire 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 rattraper une erreur dans une version antérieure de ce script.)
1 votes
Utilisez-vous les correutils gnu ?
ls
ou le système MacOSls
? Avez-vous essayé l'autre ?