Próbuję utworzyć zmienną znacznika czasu w skrypcie powłoki, aby nieco ułatwić rejestrowanie. Chcę utworzyć zmienną na początku skryptu i wyświetlać bieżącą godzinę za każdym razem, gdy ją wystawiam echo $timestamp
. To okazuje się trudniejsze niż myślałem. Oto kilka rzeczy, które próbowałem:
timestamp="(date +"%T")"
echo jest drukowane (date +"%T")
timestamp="$(date +"%T")"
echo wypisuje czas, w którym zmienna została zainicjowana.
Inne rzeczy, których próbowałem, to tylko niewielkie różnice, które nie działały lepiej. Czy ktoś wie, jak osiągnąć to, co próbuję zrobić?
echo "$(timestamp): something happened"
.date +"%Y-%m-%d_%H-%M-%S"
Jeśli chcesz uzyskać znacznik czasu unix, musisz użyć:
%T
da ci tylko czas; taki sam jak%H:%M:%S
(przez http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ )źródło
date
. Jednak głosowałem również za „poprawną” odpowiedzią. Nie szukałem tego, ale jest to lepsza odpowiedź na pierwotne pytanie i jest też dla mnie bardzo przydatna.źródło
echo $(date +"%Y-%m-%dT%T.%3N%z")
jednak nie mogę zmusić go do pracy w terminalu Mac. Jak zrobić to samo na komputerze Mac. DziękiFormat ISO 8601 (
2018-12-23T12:34:56
) jest bardziej czytelny niż znacznik czasu UNIX. Jednak w niektórych systemach operacyjnych nie można mieć:
nazw plików. Dlatego zalecam użycie czegoś takiego:Możesz użyć następującego polecenia, aby uzyskać znacznik czasu w tym formacie:
Jest to format, z którego widziałem wiele aplikacji. Kolejną miłą rzeczą jest to, że jeśli nazwy plików zaczynają się od tego, możesz sortować je alfabetycznie i byłyby sortowane według daty.
źródło
TZ=UTC date +...
może uczynić to bardziej przenośnym za pomocą znacznika czasu UTCUżywam Ubuntu 14.04.
Prawidłowy sposób w moim systemie powinien być
date +%s
.Wyjście
date +%T
jest jak12:25:25
.źródło
Użyj podstawienia polecenia:
źródło
Możesz użyć
To dostarcza w formacie
2014-02-01 15:12:35-05:00
`
Znaki back-tick ( ) spowodują, że to, co jest między nimi, zostanie ocenione, a wynik znajdzie się w wierszu.date --help
ma inne opcje.źródło
touch $timestamp
utworzy dwa pliki.Najnowsze wersje
bash
nie wymagają połączenia z programem zewnętrznymdate
:%(...)T
używa odpowiedniego argumentu jako znacznika czasu UNIX i formatuje go zgodnie zstrftime
formatem-style między nawiasami. Argument argumentu-1
odpowiada bieżącemu czasowi i kiedy nie wystąpiłaby dwuznaczność, można pominąć.źródło
A dla moich kolegów Europejczyków, spróbuj użyć tego:
poda format formatu: „15-02-2020_19-21-58”
Wywołujesz zmienną i otrzymujesz taką reprezentację ciągu
źródło
srand bez wartości używa bieżącego znacznika czasu z większością implementacji Awk.
źródło