Instale coreutilscom Homebrew e alias llpara gls -Flh --group-directories-first.
brew install coreutils instala o GNU Coreutils , caso não esteja instalado.
- Use
alias ll='gls -Flh --group-directories-first'em .bashrc.
(Se você deseja usar o mesmo .bashrcarquivo nos dois sistemas operacionais, veja abaixo.)
No Ubuntu, lsé fornecido pelo GNU Coreutils , que o Ubuntu sempre possui. É por isso que lssuporta --group-directories-firstno Ubuntu. Provavelmente você já usava a versão GNU Coreutils do lsmacOS antes, que o Homebrew instala como, glsmas que pode ser usado de lsvárias maneiras.
lsé um comando externo, não um Bash embutido. O uso de uma versão ou compilação diferente do Bash não deve afetá-lo. Não sei o que aconteceu quando você atualizou o Bash usando o Homebrew. Talvez mais do que o Bash também tenha sido atualizado; talvez você tenha umalsfunção ou alias do shell definida em um arquivo de configuração global que foi substituído; talvez você tenha um link simbólicolsque apontouglse foi substituído; talvez você ainda tenha algo assim, mas o seu$PATHmudou. O que quer que tenha acontecido, o GNU Coreutils lssuporta--group-directories-first , e mudar para ele (como acredito que bmike está sugerindo ) deve resolver seu problema.
Se, por algum motivo, você quiser usar exatamente o mesmo .bashrcarquivo nos dois sistemas, existem algumas abordagens possíveis. Você pode criar um link simbólico, script de wrapper, função de shell ou (porque a expansão do alias do Bash não é recursiva) para o glsseu sistema Ubuntu. Mas eu sugiro que em vez de verificação, que OS está sendo usado em .bashrc. Embora você obtenha um llalias diferente definido em cada sistema, essa abordagem tem o benefício de ser auto-documentada. Você .bashrcfará sentido para você em um ano ou um mês.
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
Ou se você acha que geralmente prefere executar o Coreutils ls, mesmo se não estiver usando o llalias, você pode criar lsum alias para gls:
if [ "$OSTYPE" != linux-gnu ]; then # Is this the macOS system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'
(Agradecemos a soroushjp por detectar um erro em uma versão anterior desse script.)
lsou o macOSls? Você já tentou o outro?