Dies ist eine Fortsetzung meiner gestrigen Frage: Summe der Dateigrößen in der Verzeichnisliste anzeigen .
Dank Zero Piraeus und einem Punkt in die richtige Richtung von Mauritz Hansen habe ich jetzt
function dir() {
ls -FaGl "${@}" | awk '{print; total += $4}; END {print "\t\ttotal: ",total/1024,"KB"}'
}
in meinem .bash_profile
, und es funktioniert großartig. Zumindest unter Linux (ich hatte noch keine Gelegenheit, es unter OSX auszuprobieren), wo ich ssh
PuTTY unter XP verwende, sind meine Verzeichnisfarben jetzt weg. Gibt es eine Möglichkeit, die Farbcodes durch die Pipe an die awk- print
Anweisung weiterzuleiten ?
Aktualisieren
Dank Sukminders Antwort--color=always
macht das Hinzufügen den Trick, wie er zuvor eingestellt auto
worden war. Jetzt wird jedoch zwischen dem Ende der Verzeichnisliste und der Gesamtzeile ein Leerzeichen angezeigt:
[19:30:58 mattdmo@server ~/webapps/django15 ] $ dir
drwxr-xr-x 7 mattdmo 4096 Mar 24 20:28 ./
drwxr-xr-x 17 root 4096 Mar 18 20:15 ../
drwxr-xr-x 7 mattdmo 4096 Mar 14 14:57 apache2/
drwxr-xr-x 3 mattdmo 4096 Mar 14 14:57 bin/
drwxr-xr-x 2 mattdmo 4096 Mar 24 20:10 lib/
drwxr-xr-x 3 mattdmo 4096 Mar 14 14:57 myproject/
drwxrwxr-x 3 mattdmo 4096 Mar 24 20:28 pigimal/
total: 28 KB
[19:30:59 mattdmo@server ~/webapps/django15 ] $
Irgendwelche Vorschläge zur Behebung dieses Problems?
ls
du?ls --version
oder so ähnlich. Warum hast du zB nichttotal ...
in der ersten Zeile? Sicher, das ist das ganze Drehbuch?ls -FaGl "${@}" --color=always | awk '{print; total += $4}; END {print "\t\ttotal: ",total/1024,"KB"}'
Antworten:
Durch die Verwendung sollten
ls --color=always
die Farben erhalten bleiben. Ich bin mir nicht sicher, ob es gnu-spezifisch ist. [ Bearbeiten von OP: Ja, das ist es. ]]Der Fall ist, dass
ls
festgestellt wird, ob die Ausgabe zu tty ist oder nicht.Wenn dies nicht der Fall ist, werden normalerweise keine Farben gedruckt und "nicht druckbare Zeichen" nicht in Fragezeichen übersetzt. Dies kann durch die
-q
Option hinzugefügt werden .Mehr zum Thema: Anzahl der von ls ausgegebenen Zeilen .
gnu coreutils source ls; ref. zu einigen Farbdaten:
Bearbeiten:
Für gnu coreutils ls:
--color=always
Für OS X ls: Umgebungsvariable festlegen
CLICOLOR_FORCE
undG
Farbe bedeuten. Der Kern entspricht dem IEEE Std 1003.1-2001 . Andere Optionen sind Erweiterungen, die zwischen den Implementierungen vorsichtig sind.OK. Ich habe mir das genauer angesehen. Nach dem, was ich gelesen habe, installieren die Leute auch Gnu Coreutils unter OS X, aber Sie verwenden wahrscheinlich das Original .
Die OS X-Manpages für ls geben Folgendes an :
Aus der Quelle:
Mac OS X 10.8.2 Quelle -> file_cmds-220.7 -> ls /
Aus diesem Code wird auch schnell klar, dass man einstellen kann
Farbe erzwingen.
Beim ersten Analysieren von Argumenten und
setenv
Farben aufG
:Und nach dem
argv
Parsen:Wenn im nächsten Abschnitt TERM eingestellt ist, wird die Farbe verwendet:
echo $TERM
sollte ein farbfähiges Terminal ergeben. Wenn Sie jedoch normale Farben erhalten, sollte dies der Fall sein.--- ---.
Bis zum letzten Update bearbeiten:
Ich bin mir dann nicht sicher. Es ist seltsam. Nicht nur die zusätzliche Zeile, sondern auch, dass Sie
total ...
am Anfang keine haben . Sie könnten damit beginnen, die Ausgabe von so etwas zu überprüfen:Sollte dir so etwas geben wie - ( Von könnte
"-"
zB gawk sein):quelle
ls -FaGlq
es irgendwelche Fragezeichen? Ebenfalls; Beachten Sie, dass gemäß den Manpagesls
in OS X nur Optionen für einen Buchstaben verwendet werden. G bedeutet Farbe und man muss dieCLICOLOR_FORCE
Umgebungsvariable verwenden, um die Farbe durch das Rohr zu erhalten. - wie in no --color = immer undG
bedeutet nicht--no-group
. Die Version entspricht ls IEEE Std 1003.1-2001 . UndG
etc. ist Erweiterungen.