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-first
opció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-first
opción nuevamente. ¿Hay alguna forma de lograrlo?
ls
o el macOSls
? ¿Has probado el otro?Respuestas:
Instalar
coreutils
con Homebrew y aliasll
en sugls -Flh --group-directories-first
lugar.brew install coreutils
instala GNU Coreutils , en caso de que no esté instalado.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 esls
compatible--group-directories-first
con Ubuntu. Probablemente también haya estado utilizando la versión GNU Coreutils dels
macOS anteriormente, que Homebrew instala comogls
pero que se puede utilizarls
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 esls
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 shellgls
en su sistema Ubuntu. Pero sugiero en lugar de cheques que sistema operativo se está utilizando en.bashrc
. Aunque obtendrá unll
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.O si cree que generalmente prefiere ejecutar Coreutils
ls
, incluso si no está utilizando elll
alias, puede crearls
un 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)