Chcę ls
ustawić czas wyświetlania w ISO
formacie (format wojskowy). Jak mogę zmienić to zachowanie?
W systemie Linux wiedziałem, że mogę zmusić ls do wyświetlania czasu w długim formacie przez nas, --full-time
ale to nie działa w systemie OS X.
Aktualizacja: Wiem, że format używany przez polecenie jest oparty na locale
ustawieniach. Problem polega na tym, że w systemie OS XI nie był w stanie skorzystać ze sztuczki ustawień LC_TIME=en_DK
.
command-line
unix
sorin
źródło
źródło
ls
Wydaje się, że instrukcja BSD firmy Apple dotycząca formatowania czasu danych, poza zmianą strefy czasowej i sortowaniem według daty, a nie alfy. developer.apple.com/library/mac/documentation/Darwin/Reference/…Odpowiedzi:
Jeśli zainstalujesz gnu coreutils, wtedy gnu ls będzie dostępny, co zrobi zgodnie z wymaganiami. Jeśli używasz naparu jako menedżera pakietów, jest to tak proste, jak:
źródło
brew install coreutils
powoduje/usr/local/bin/gls
to zainstalowanie, więc musisz uruchomićgls
zamiastls
.gls -l --time-syle="+%I"
(lub dowolnego poprawnegogdate
formatu stylu dla ISO-8601).Wbudowane
ls
polecenie OS X nie wymaga argumentów formatujących czas, alestat
polecenie przyjmuje ciągi formatujące strftime, dzięki czemu można uzyskać przybliżenie tego, co chcesz, robiąc:%FT%T
Produkuje ISO8601 lokalnego znacznika czasu. Dodaj,%z
jeśli chcesz przesunięcie UTC.Ale chociaż znacznik czasu jest odpowiedni, reszta przybliża tylko to, co można uzyskać od ls. Na przykład
ls -l
odpowiednio wyrównuje pola w kolumnach, może pokolorować dane wyjściowe i oczywiście wyświetla zawartość katalogu, zamiast wymagać przekazywania wszystkich nazw plików jako argumentów. Możesz przynajmniej odtworzyć właściwe wyrównanie, przesyłając dane wyjściowe,tr
aby przekonwertować wszystkie spacje na tabulatory:Alternatywnie, myślę, że powinno być możliwe
ls -l
wygenerowanie znacznika czasu ISO8601 poprzez zdefiniowanie niestandardowych ustawień narodowych, ale nie widziałem tego.źródło
ls -l --time-style=iso
działa dobrze dla mnie.źródło
ls
nie zdając sobie z tego sprawy, za pośrednictwem menedżera pakietów, takiego jak napar./usr/local/bin/gls
zainstalowany za pośrednictwembrew install coreutils
, i który obsługuje--time-style
opcję. OP mógł zostać uruchomiony,brew install coreutils --with-default-names
co spowodowałoby/usr/local/bin/ls
instalację (między innymi narzędziami), lub może OP skonfigurował ręczne łącze symboliczne dogls
.which ls
?