Instalar coreutilscon Homebrew y alias llen su gls -Flh --group-directories-firstlugar.
brew install coreutils instala GNU Coreutils , en caso de que no esté instalado.
- Utilizar
alias ll='gls -Flh --group-directories-first'en .bashrc.
(Si desea utilizar el mismo .bashrcarchivo en ambos sistemas operativos, consulte a continuación).
En Ubuntu, lses proporcionado por GNU Coreutils , que Ubuntu siempre tiene. Por eso es lscompatible --group-directories-firstcon Ubuntu. Probablemente también haya estado utilizando la versión GNU Coreutils de lsmacOS anteriormente, que Homebrew instala como glspero que se puede utilizar lsde varias maneras.
lses un comando externo, no un Bash incorporado. Usar 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. Quizás más de lo que Bash también se actualizó; quizás tenía unalsfunción de shell o un alias definido en un archivo de configuración global que fue reemplazado; tal vez tenías un enlace simbólicolsque apuntabaglsy se sobrescribía; quizás todavía tengas algo así pero tu$PATHha cambiado. Pase lo que pase, GNU Coreutils es lscompatible--group-directories-first , y cambiar a él (como creo que sugiere bmike ) debería solucionar su problema.
Si por alguna razón desea utilizar exactamente el mismo .bashrcarchivo en ambos sistemas, hay algunos enfoques posibles. Puede crear un enlace simbólico, un script de envoltura, una función de shell o (porque la expansión de alias de Bash no es recursiva) alias de shell glsen su sistema Ubuntu. Pero sugiero en lugar de cheques que sistema operativo se está utilizando en .bashrc. Aunque obtendrá un llalias diferente definido en cada sistema, este enfoque tiene la ventaja de ser autodocumentado. Su .bashrcva a tener sentido para ti 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 cree que generalmente prefiere ejecutar Coreutils ls, incluso si no está utilizando el llalias, puede crear lsun alias para gls:
if [ "$OSTYPE" != linux-gnu ]; then # Is this the macOS system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'
(Gracias a soroushjp por detectar un error en una versión anterior de ese script).
lso el macOSls? ¿Has probado el otro?