Instale coreutils
com Homebrew e alias ll
para 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 .bashrc
arquivo nos dois sistemas operacionais, veja abaixo.)
No Ubuntu, ls
é fornecido pelo GNU Coreutils , que o Ubuntu sempre possui. É por isso que ls
suporta --group-directories-first
no Ubuntu. Provavelmente você já usava a versão GNU Coreutils do ls
macOS antes, que o Homebrew instala como, gls
mas que pode ser usado de ls
vá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 umals
função ou alias do shell definida em um arquivo de configuração global que foi substituído; talvez você tenha um link simbólicols
que apontougls
e foi substituído; talvez você ainda tenha algo assim, mas o seu$PATH
mudou. O que quer que tenha acontecido, o GNU Coreutils ls
suporta--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 .bashrc
arquivo 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 gls
seu sistema Ubuntu. Mas eu sugiro que em vez de verificação, que OS está sendo usado em .bashrc
. Embora você obtenha um ll
alias diferente definido em cada sistema, essa abordagem tem o benefício de ser auto-documentada. Você .bashrc
fará 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 ll
alias, você pode criar ls
um 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.)
ls
ou o macOSls
? Você já tentou o outro?