Używam zarówno Ubuntu 16.04, jak i OS X.
alias ll='ls -Flh --group-directories-first'
To jest alias w moim bashrc, ale jakoś --group-directories-first
opcja stała się nielegalna w OS X po aktualizacji mojego basha do Homebrew. Na moim pulpicie Ubuntu nadal mogę korzystać z tej opcji.
W jakiej wersji Bash opcja nie jest obsługiwana? Wersja Bash na moim komputerze z systemem OS X mówiGNU bash, Version 4.4.12(1)-release (x86_64-apple-darwin15.6.0)
Chciałbym --group-directories-first
ponownie użyć opcji. Czy jest jakiś sposób na osiągnięcie tego?
ls
lub macOSls
? Próbowałeś już drugiego?Odpowiedzi:
Zainstalować
coreutils
z Homebrew i aliasll
abygls -Flh --group-directories-first
zamiast.brew install coreutils
instaluje GNU Coreutils , na wypadek, gdyby nie został zainstalowany.alias ll='gls -Flh --group-directories-first'
w.bashrc
.(Jeśli chcesz użyć tego samego
.bashrc
pliku w obu systemach operacyjnych, patrz poniżej.)W Ubuntu
ls
jest dostarczany przez GNU Coreutils , który Ubuntu zawsze ma. Dlategols
obsługuje--group-directories-first
w Ubuntu. Prawdopodobnie używałeś wcześniej wersji GNU Coreutilsls
na macOS, którą Homebrew instaluje jako,gls
ale którą można wykorzystaćls
na kilka sposobów.ls
jest poleceniem zewnętrznym, a nie wbudowanym w Bash. Używanie innej wersji lub kompilacji Bash nie powinno na to wpływać. Nie jestem pewien, co się stało, kiedy zaktualizowałeś Bash za pomocą Homebrew. Może zaktualizowano też więcej niż Bash; możels
zdefiniowano funkcję powłoki lub alias w globalnym pliku konfiguracyjnym, który został zastąpiony; może miałeś dowiązanie symbolicznels
, które wskazałogls
i zostało zastąpione; może nadal coś takiego masz, ale twój$PATH
się zmienił. Cokolwiek się stanie, GNU Coreutilsls
obsługuje--group-directories-first
i przejście na to (jak sądzę sugeruje bmike ) powinno rozwiązać twój problem.Jeśli z jakiegoś powodu chcesz użyć dokładnie tego samego
.bashrc
pliku w obu systemach, istnieje kilka możliwych rozwiązań. Możesz utworzyć dowiązanie symboliczne, skrypt opakowujący, funkcję powłoki lub (ponieważ rozszerzenie aliasu Bash nie jest rekurencyjne) alias powłoki dlagls
swojego systemu Ubuntu. Ale proponuję zamiast sprawdzania OS który jest używany w.bashrc
. Chociaż otrzymasz innyll
alias zdefiniowany w każdym systemie, to podejście ma tę zaletę, że jest samo dokumentujące. Twój.bashrc
będzie sensu do Ciebie w ciągu roku lub miesiąca.Lub jeśli okaże się, że zwykle wolisz uruchamiać Coreutils
ls
, nawet jeśli nie używaszll
aliasu, możesz utworzyćls
alias, abygls
:(Podziękowania dla soroushjp za złapanie błędu we wcześniejszej wersji tego skryptu).
źródło
"$OSTYPE" != linux-gnu
ponieważ chcesz alias ls to gls, jeśli nie korzystasz z systemu Linux GNU (np. jesteś na komputerze Mac).