En su lugar, instale coreutils
con Homebrew y alias ll
a gls -Flh --group-directories-first
.
-
brew install coreutils
instala GNU Coreutils , en caso de que no esté instalado.
- Use
alias ll='gls -Flh --group-directories-first'
en .bashrc
.
(Si desea utilizar el mismo archivo .bashrc
en ambos sistemas operativos, consulte a continuación).
En Ubuntu, ls
es proporcionado por GNU Coreutils , que Ubuntu siempre tiene. Es por eso que ls
soporta --group-directories-first
en Ubuntu. Probablemente usted también había estado utilizando la versión GNU Coreutils de ls
en macOS anteriormente, que Homebrew instala como gls
pero que puede ser utilizable como ls
de varias maneras.
ls
es un comando externo, no un Bash integrado . El uso de una versión o compilación diferente de Bash no debería afectarlo. No estoy seguro de lo que sucedió cuando actualizaste Bash usando Homebrew. Tal vez más que Bash también se actualizó; tal vez tenía una función de shell ls
o un alias definido en un archivo de configuración global que fue reemplazado; tal vez tenías un enlace simbólico ls
que había señalado a gls
y se sobrescribió; quizás todavía tengas algo así, pero tu $PATH
ha cambiado. Pase lo que pase, GNU Coreutils ls
admite --group-directories-first
, y cambiar a él (como creo en bmike es sugerir ) debería solucionar su problema.
Si, por algún motivo, desea utilizar el mismo archivo .bashrc
en ambos sistemas, hay algunos enfoques posibles. Podría crear un enlace simbólico, un script de envoltura, una función de shell o (porque la expansión del alias de Bash no es recurrente) alias de shell para gls
en su sistema Ubuntu. Pero sugiero en cambio comprobar qué sistema operativo se está utilizando en .bashrc
. Aunque obtendrá un alias ll
diferente definido en cada sistema, este enfoque tiene la ventaja de ser autodocumentado. Su .bashrc
tendrá sentido para usted en un año o un mes.
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
O si normalmente prefieres ejecutar Coreutils ls
, incluso si no estás utilizando el alias ll
, puedes hacer que ls
sea un alias para gls
:
if [ "$OSTYPE" == linux-gnu ]; then # Is this the Ubuntu system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'