Estou usando o Ubuntu 16.04 e OS X.
alias ll='ls -Flh --group-directories-first'
Este é um apelido no meu bashrc, mas de alguma forma a --group-directories-first
opção ficou ilegal no OS X depois que eu atualizei o meu bash com o Homebrew. No meu desktop Ubuntu, ainda posso usar essa opção.
Em qual versão do Bash, a opção não é suportada? A versão do Bash na minha máquina OS X dizGNU bash, Version 4.4.12(1)-release (x86_64-apple-darwin15.6.0)
Eu gostaria de usar a --group-directories-first
opção novamente. Existe alguma maneira de conseguir isso?
ls
ou o macOSls
? Você já tentou o outro?Respostas:
Instale
coreutils
com Homebrew e aliasll
paragls -Flh --group-directories-first
.brew install coreutils
instala o GNU Coreutils , caso não esteja instalado.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 quels
suporta--group-directories-first
no Ubuntu. Provavelmente você já usava a versão GNU Coreutils dols
macOS antes, que o Homebrew instala como,gls
mas que pode ser usado dels
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 Coreutilsls
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 ogls
seu sistema Ubuntu. Mas eu sugiro que em vez de verificação, que OS está sendo usado em.bashrc
. Embora você obtenha umll
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.Ou se você acha que geralmente prefere executar o Coreutils
ls
, mesmo se não estiver usando oll
alias, você pode criarls
um alias paragls
:(Agradecemos a soroushjp por detectar um erro em uma versão anterior desse script.)
fonte
"$OSTYPE" != linux-gnu
, já que você quer de alias ls para gls se você estiver não em um sistema Linux GNU (por exemplo, você está em um Mac).