Installare coreutilscon Homebrew e alias lla gls -Flh --group-directories-firstposto.
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 .bashrcfile in entrambi i sistemi operativi, vedere di seguito.)
In Ubuntu, lsè fornito da GNU Coreutils , che Ubuntu ha sempre. Ecco perché lssupporta --group-directories-firstin Ubuntu. Probabilmente avevi già usato la versione GNU Coreutils di lssu macOS, che Homebrew installa come glsma che può essere resa utilizzabile lsin 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 unalsfunzione di shell o un alias definito in un file di configurazione globale che è stato sostituito; forse avevi un legame simbolicolsche aveva indicatoglsed era stato sovrascritto; forse hai ancora qualcosa del genere ma il tuo$PATHè cambiato. Qualunque cosa sia successa, GNU Coreutils lssupporta--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 .bashrcfile 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 glsnel proprio sistema Ubuntu. Ma suggerisco invece controllare quale sistema operativo viene utilizzato in .bashrc. Sebbene otterrai un diverso llalias definito in ciascun sistema, questo approccio ha il vantaggio di essere auto-documentato. Avrai .bashrcsenso 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' llalias, puoi creare lsun 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.)
lso macOSls? Hai provato l'altro?