2012-09-07 16 views
5

Próbuję użyć polecenia date do wyprowadzenia dzisiejszej daty w formacie %d.%m.%y-%H:%M:%S. Oczywiście ja po prostu zrobić tak:Polecenie daty z zsh

date +%d.%m.%y-%H:%M:%S 

Działa to dobrze w bash i mam wyjście będę oczekiwać, ale kiedy to zrobić w zsh mam czego można oczekiwać poprzedzony „7m” np

7m07.09.12-16: 49: 37

zamiast

07.09.12-16: 49: 37

Otrzymuję również alert z mojego terminalu. Jest to spowodowane przez %S przez kilka sekund, ponieważ kiedy zdejmę to z końca polecenia, nie otrzymam "7m" (ale oczywiście brakuje mi sekund od końca daty).

Czy ktoś może wyjaśnić, dlaczego tak się dzieje?

EDIT: Dodatkowe informacje: Jestem na OS X 10.8 i zsh 4.3.11, oh-my-zsh zainstalowany

+3

Nie do końca pełna odpowiedź, ponieważ nie znam dobrze "zsh". "% S" wydaje się być oceniany przez 'zsh' jako coś, zanim zostanie przekazany do' date'. Proste jedno- i dwu-cudzysłowe nie stanowią dla niego przeszkody, ale nieco trudna "data" +% d.% M.% Y-% H:% H% "S" robi. (Uwaga: S umieszczam na cudzysłowie.) – chepner

+0

Ach masz rację! Spojrzałem tylko na to krótko, ale myślę, że jest tam trochę informacji [tutaj] (http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html) – stonesam92

+1

Za to, co jest warte, używam Zsh 4.3.11 na Linux Mint i to polecenie działało OK dla mnie. – Scooter

Odpowiedz

2

Jednym z obejść jest zawinięcie kodu wokół numeru echo $(...). Daje odpowiednią wydajność i jest dla mnie do przyjęcia. Twoje oryginalne polecenie powinno wyglądać następująco:

echo $(date +%d.%m.%y-%H:%M:%S)