Ich verwende sowohl Ubuntu 16.04 als auch OS X.
alias ll='ls -Flh --group-directories-first'
Dies ist ein Alias in meinem Bashrc, aber irgendwie wurde die --group-directories-first
Option in OS X illegal, nachdem ich mein Bash mit Homebrew aktualisiert hatte. Auf meinem Ubuntu-Desktop kann ich diese Option weiterhin verwenden.
In welcher Version von Bash wird die Option nicht unterstützt? Die Bash-Version in meinem OS X-Computer sagtGNU bash, Version 4.4.12(1)-release (x86_64-apple-darwin15.6.0)
Ich würde die --group-directories-first
Option gerne wieder verwenden. Gibt es eine Möglichkeit, dies zu erreichen?
ls
oder das MacOSls
? Hast du den anderen ausprobiert?Antworten:
Installieren Sie stattdessen
coreutils
mit Homebrew und Aliasll
zugls -Flh --group-directories-first
.brew install coreutils
installiert GNU Coreutils , falls es nicht installiert ist.alias ll='gls -Flh --group-directories-first'
in.bashrc
.(Wenn Sie
.bashrc
in beiden Betriebssystemen dieselbe Datei verwenden möchten , siehe unten.)In Ubuntu
ls
wird von GNU Coreutils bereitgestellt , die Ubuntu immer hat. Deshalbls
unterstützt--group-directories-first
in Ubuntu. Wahrscheinlich haben Sie auch schon einmal die GNU Coreutils-Version vonls
unter macOS verwendet, die Homebrew installiert,gls
aberls
auf verschiedene Arten nutzbar gemacht werden kann.ls
ist ein externer Befehl, kein eingebauter Bash. Die Verwendung einer anderen Version oder eines anderen Builds von Bash sollte sich nicht darauf auswirken. Ich bin mir nicht sicher, was passiert ist, als Sie Bash mit Homebrew aktualisiert haben. Vielleicht wurde auch mehr als Bash aktualisiert; Möglicherweise wurdels
in einer globalen KonfigurationsdateieineShell-Funktion oder ein Alias definiert, die ersetzt wurde. Vielleicht hatten Sie eine symbolische Verknüpfungls
, auf die hingewiesengls
und die überschrieben wurde. Vielleicht hast du noch so etwas, aber dein$PATH
hat sich geändert. Was auch immer passiert ist, GNU Coreutilsls
unterstützt--group-directories-first
und ein Wechsel dorthin (wie bmike meiner Meinung nach vorschlägt ) sollte Ihr Problem beheben.Wenn Sie aus irgendeinem Grund
.bashrc
in beiden Systemen genau dieselbe Datei verwenden möchten , gibt es einige mögliche Ansätze. Sie können einen Symlink, ein Wrapper-Skript, eine Shell-Funktion oder (da die Bash-Alias-Erweiterung nicht rekursiv ist) einen Shell-Alias fürgls
Ihr Ubuntu-System erstellen . Aber ich schlage vor , statt Kontrolle , welche OS verwendet wird in.bashrc
. Obwohlll
in jedem System ein anderer Alias definiert wird, hat dieser Ansatz den Vorteil, dass er sich selbst dokumentiert. Ihr.bashrc
Wille macht für Sie in einem Jahr oder einem Monat Sinn.Wenn Sie normalerweise lieber die Coreutils ausführen
ls
, können Sie einen Alias erstellen , selbst wenn Sie denll
Alias nicht verwenden :ls
gls
(Vielen Dank an soroushjp für den Fehler in einer früheren Version dieses Skripts.)
quelle
"$OSTYPE" != linux-gnu
, da Sie den Alias ls to gls verwenden möchten, wenn Sie nicht auf einem Linux-GNU-System sind (z du bist auf einem Mac).