Estoy usando Ubuntu 16.04 y OS X.
alias ll='ls -Flh --group-directories-first'
Este es un alias en mi bashrc, pero de alguna manera la --group-directories-firstopción se volvió ilegal en OS X después de actualizar mi bash con Homebrew. En mi escritorio Ubuntu, todavía puedo usar esa opción.
¿En qué versión de Bash, la opción no es compatible? La versión Bash en mi máquina OS X diceGNU bash, Version 4.4.12(1)-release (x86_64-apple-darwin15.6.0)
Me gustaría usar la --group-directories-firstopción nuevamente. ¿Hay alguna forma de lograrlo?

lso el macOSls? ¿Has probado el otro?Respuestas:
Instalar
coreutilscon Homebrew y aliasllen sugls -Flh --group-directories-firstlugar.brew install coreutilsinstala GNU Coreutils , en caso de que no esté instalado.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 eslscompatible--group-directories-firstcon Ubuntu. Probablemente también haya estado utilizando la versión GNU Coreutils delsmacOS anteriormente, que Homebrew instala comoglspero que se puede utilizarlsde 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 eslscompatible--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 shellglsen su sistema Ubuntu. Pero sugiero en lugar de cheques que sistema operativo se está utilizando en.bashrc. Aunque obtendrá unllalias 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.O si cree que generalmente prefiere ejecutar Coreutils
ls, incluso si no está utilizando elllalias, puede crearlsun alias paragls:(Gracias a soroushjp por detectar un error en una versión anterior de ese script).
fuente
"$OSTYPE" != linux-gnu, ya que desea alias ls a gls si estás no en un sistema Linux GNU (por ejemplo, estás en una Mac)