Instale coreutils
con Homebrew y alias ll
a **_gls_** -Flh --group-directories-first
en su lugar.
brew install coreutils
instala GNU Coreutils en caso de que no esté instalado.
- Utilice
alias ll='gls -Flh --group-directories-first'
en .bashrc
.
(Si desea utilizar el mismo .bashrc
en ambos sistemas operativos, véase más abajo).
En Ubuntu, ls
es proporcionado por GNU Coreutils que Ubuntu siempre ha tenido. Por eso ls
admite --group-directories-first
en Ubuntu. Probablemente ha estado utilizando la versión GNU Coreutils de ls
en MacOS antes, también, que Homebrew instala como gls
pero que pueden utilizarse como ls
de varias maneras.
ls
es un comando externo, no un builtin de Bash. Utilizar una versión o compilación diferente de Bash no debería afectarlo. No estoy seguro de lo que pasó cuando actualizaste Bash usando Homebrew. Tal vez más que Bash se actualizó también; tal vez usted tenía un ls
función del shell o alias definido en un archivo de configuración global que fue reemplazado; tal vez tenía un enlace simbólico ls
que había apuntado a gls
y se sobrescribió; tal vez aún tenga algo así pero su $PATH
ha cambiado. Lo que sea que haya pasado, GNU Coreutils ls
admite --group-directories-first
y cambiar a ella (como creo bmike sugiere ) debería solucionar tu problema.
Si por alguna razón desea utilizar exactamente el mismo .bashrc
en ambos sistemas, existen varios enfoques posibles. Puede crear un enlace simbólico, una envoltura script, una función de shell o (dado que la expansión de alias de Bash no es recursiva) un alias de shell para gls
en su sistema Ubuntu. Pero sugiero en su lugar comprobar qué sistema operativo se está utilizando en .bashrc
. Aunque obtendrá un ll
definido en cada sistema, este enfoque tiene la ventaja de ser autodocumentado. Su .bashrc
tendrá sentido para ti en un año, o en 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 prefiere ejecutar Coreutils ls
aunque no utilices el ll
alias, puede hacer que ls
un alias de 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 para detectar un error en una versión anterior de ese script).
1 votos
¿Está utilizando el gnu correutils
ls
o el MacOSls
? ¿Has probado el otro?