Instalar coreutils
con Homebrew y alias ll
en su gls -Flh --group-directories-first
lugar.
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 .bashrc
archivo en ambos sistemas operativos, consulte a continuación).
En Ubuntu, ls
es proporcionado por GNU Coreutils , que Ubuntu siempre tiene. Por eso es ls
compatible --group-directories-first
con Ubuntu. Probablemente también haya estado utilizando la versión GNU Coreutils de ls
macOS anteriormente, que Homebrew instala como gls
pero que se puede utilizar ls
de varias maneras.
ls
es 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 unals
función de shell o un alias definido en un archivo de configuración global que fue reemplazado; tal vez tenías un enlace simbólicols
que apuntabagls
y se sobrescribía; quizás todavía tengas algo así pero tu$PATH
ha cambiado. Pase lo que pase, GNU Coreutils es ls
compatible--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 .bashrc
archivo 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 gls
en su sistema Ubuntu. Pero sugiero en lugar de cheques que sistema operativo se está utilizando en .bashrc
. Aunque obtendrá un ll
alias diferente definido en cada sistema, este enfoque tiene la ventaja de ser autodocumentado. Su .bashrc
va 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 ll
alias, puede crear ls
un 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).
ls
o el macOSls
? ¿Has probado el otro?