Installare coreutils
con Homebrew e alias ll
a gls -Flh --group-directories-first
posto.
brew install coreutils
installa GNU Coreutils , nel caso in cui non sia installato.
- Utilizzare
alias ll='gls -Flh --group-directories-first'
in .bashrc
.
(Se si desidera utilizzare lo stesso .bashrc
file in entrambi i sistemi operativi, vedere di seguito.)
In Ubuntu, ls
è fornito da GNU Coreutils , che Ubuntu ha sempre. Ecco perché ls
supporta --group-directories-first
in Ubuntu. Probabilmente avevi già usato la versione GNU Coreutils di ls
su macOS, che Homebrew installa come gls
ma che può essere resa utilizzabile ls
in diversi modi.
ls
è un comando esterno, non incorporato in Bash. L'uso di una versione o build diversa di Bash non dovrebbe influire su di essa. Non sono sicuro di cosa sia successo quando hai aggiornato Bash usando Homebrew. Forse è stato aggiornato anche più di Bash; forse avevi unals
funzione di shell o un alias definito in un file di configurazione globale che è stato sostituito; forse avevi un legame simbolicols
che aveva indicatogls
ed era stato sovrascritto; forse hai ancora qualcosa del genere ma il tuo$PATH
è cambiato. Qualunque cosa sia successa, GNU Coreutils ls
supporta--group-directories-first
e il passaggio ad esso (come credo che bmike stia suggerendo ) dovrebbe risolvere il tuo problema.
Se per qualche motivo si desidera utilizzare lo stesso .bashrc
file esatto in entrambi i sistemi, esistono alcuni approcci possibili. È possibile creare un collegamento simbolico, uno script wrapper, una funzione shell o (poiché l'espansione dell'alias Bash non è ricorsiva) per l'alias shell gls
nel proprio sistema Ubuntu. Ma suggerisco invece controllare quale sistema operativo viene utilizzato in .bashrc
. Sebbene otterrai un diverso ll
alias definito in ciascun sistema, questo approccio ha il vantaggio di essere auto-documentato. Avrai .bashrc
senso per te tra un anno o un mese.
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
Oppure, se ritieni di preferire di solito eseguire Coreutils ls
, anche se non stai usando l' ll
alias, puoi creare ls
un alias per gls
:
if [ "$OSTYPE" != linux-gnu ]; then # Is this the macOS system?
alias ls=gls
fi
alias ll='ls -Flh --group-directories-first'
(Grazie a soroushjp per aver scoperto un errore in una versione precedente di quello script.)
ls
o macOSls
? Hai provato l'altro?