Wolę używać terminala i spędzam większość czasu z niego. Szukam sposobu, aby zobaczyć czas w terminalu, gdy używam go równolegle. Czas zmienia się automatycznie, gdy mija. Byłoby super, gdyby wyświetlał się w wierszu polecenia.
Jeśli to jest mój wiersz poleceń w terminalu:
saurav@saurav-P4I45Gx-PE:~$
Następnie chciałbym zobaczyć zegar (czas) jako:
saurav@saurav-P4I45Gx-PE[06:27:01]:~$
lub
saurav@(06:27:01):~$
lub w dowolnym innym formacie. gdzie 06:27:01
jest czas Chcę tylko pokazać czas, który zmienia się wraz z upływem sekund.
Czy jest więc jakiś sposób na osiągnięcie tego?
command-line
gnome-terminal
Saurav Kumar
źródło
źródło
$PS1
zmienną (monit), aby mieć czas, ale nie jestem pewien, czy zmiany.\@
, ale czas będzie ponownie obliczany tylko za każdym razem, gdy wyświetla się monit, a nie bieżący czas.Odpowiedzi:
Nie jestem pewien, czy osiągnięcie tego jest tak proste przy użyciu domyślnej powłoki bash (ale nie twierdzę, że jest to niemożliwe). Prawdopodobnie będziesz potrzebować polecenia / funkcji, która może odświeżać wiersz polecenia co sekundę bez ingerowania w cokolwiek, co wpiszesz w wierszu polecenia.
Powłoki Z (zsh) ma wbudowany polecenia, zwany
zle
, który, stosowany zereset-prompt
argumentu siły zachęty do ponownego spienionych, a następnie ponownie wyświetla bufor edycji.Jeśli chcesz spróbować, wykonaj następujące czynności:
Zainstaluj powłokę Z za pomocą tego polecenia:
Podczas
zsh
pierwszego uruchomienia wybierz,0
kiedy zostaniesz o to poproszony.Edytuj
~/.zshrc
plik i dodaj następujące wiersze:Zapisz plik i zamknij go.
W swoim terminalu, gdy nadal używasz zsh, uruchom
source ~/.zshrc
lub po prostuzsh
, aby zresetować monit. Teraz twój monit powinien wyglądać następująco:z niektórymi kolorami.
Jeśli ci się podoba, uruchom,
chsh -s /bin/zsh
aby zmienić bieżącą powłokę na/bin/zsh
(wymagane jest ponowne zalogowanie, aby zmiana mogła zostać zastosowana).Uruchom,
exit
jeśli chcesz wyjść z powłoki zsh.Oto 15 sekundowy zrzut ekranu z mojego terminala:
źródło
chsh
aby zmienić domyślną powłokę z/bin/bash
na/bin/zsh
. Musisz się wylogować i zalogować ponownie.zsh
polecenie, aby wejść w ten tryb zegara.Jeśli chcesz wyświetlić czas działania w swoim terminalu, możesz użyć tego polecenia. Wyświetli czas w prawym górnym rogu terminala.
Należy jednak pamiętać, że wyświetlanie czasu za pomocą tego polecenia może czasami nakładać się na tekst obecny w terminalu. Dlatego używaj tego polecenia z niewielką ostrożnością.
Innym sposobem może być użycie znaku kontrolnego w PS1
Ale w tej metodzie Twój czas będzie odświeżany dopiero po naciśnięciu Enter.
Jeśli chcesz zastosować powyższą metodę na stałe, dodaj powyższe polecenie (to, które lubisz lub jedno i drugie) do swojego
~.bashrc
pliku.źródło
Jeśli wszystko, co chcesz zrobić, to wyświetlić zegar, użyj
date
:To pokaże czas co sekundę, dopóki go nie zatrzymasz CtrlC. Jeśli chcesz, aby znajdował się w tym samym wierszu (powyższy wydrukuje nowy wiersz co sekundę), zrób to zamiast tego:
źródło
To pytanie przeszkadza mi od kilku dni, a oto mój zredagowany post z całym materiałem, którego się nauczyłem. W szczególności moim celem było osiągnięcie wyświetlania zegara obok monitu w BASH. Podobnie jak wspomniany w odpowiedzi Radu Radeanu, kluczem jest znalezienie funkcji lub zmiennej, która może stale odświeżać wiersz polecenia lub przerysowywać ekran, bez ingerencji w ekran lub w cokolwiek, co wpiszesz. Chociaż można to osiągnąć za pomocą pętli while, jak pokazuje G_P, ciągłe przerysowywanie ekranu za pomocą funkcji tput miesza się z tekstem na moim ekranie w chwili jego odświeżania. Byłem prawie bliski osiągnięcia tego, o co poprosił OP, modyfikując nieco kod opublikowany przez G_P, ale nadal uważam, że odpowiedź Radu jest najbliższa temu, czego chce OP. Bez zbędnych ceregieli, oto niektóre rzeczy, które „
# 1, Moje preferowane rozwiązanie: Multiplekser terminali
Terminal multiplekser to oprogramowanie, które pozwala podzielić ekran terminala na dwa lub więcej ekranów. W szczególności chcę zwrócić uwagę na terminal Byobu. Ten emulator terminala oparty na ncurses pozwala pokazać czas, procent procesora, pamięć i całą masę innych wskaźników. Na zrzucie ekranu z mojego terminala byobu możesz zobaczyć temperaturę procesora, procent baterii, jakość połączenia internetowego, częstotliwość procesora, pamięć RAM, datę i oczywiście czas. Jeśli najbardziej zależy ci na ciągłym monitorowaniu tych rzeczy w terminalu, Byobu jest najlepszym rozwiązaniem. W rzeczywistości bardzo mi się podobało, ustawiłem automatyczne ładowanie podczas logowania do tty. Jedynym dziwactwem jest to, że w tty nie można tak naprawdę łączyć osobnych okien - przełączaj się tylko między kartami za pomocą klawiszy F3 i F4.
Alternatywnym rozwiązaniem polegającym na multipleksowaniu okien jest użycie
splitvt
, które dzieli ekran na dwie części. Możesz uruchomić zegar terminala, np.tty-clock
Użyć komendy watch z datą lub samemu go kodować za pomocą skryptu. Więcej o tym później. Na zrzucie ekranu widać jedną część podziału z normalnym poleceniem bash u góry, aw dolnej widać uruchomiony skrypt, który po prostu stale odświeża wyjściedate
polecenia za pomocąclear
polecenia.# 2, While Do Loop i tput Jest to prawdopodobnie najbliższe temu, co osoba, która zadała pytanie, chciała zaimplementować za pomocą bash.
G_P opublikował świetne rozwiązanie obejmujące polecenia
while do
itput
. Jednak w kodzie G_P były dwie rzeczy, które mi się nie podobały. Po pierwsze, zegar znajdował się po prawej stronie monitu, a po drugie - ponieważ cykl uśpienia wynosi 1 sekundę (patrz oryginalny kod, w którym jest napisane uśpienie), ekran jest przerysowany co sekundę, co popsuwa mój wynik. To, co zrobiłem, to edytowanie mojego monitu bash, aby był o jeden wiersz niższy z operatorem \ n i zmiana kodu G_P, aby operator tput ustawiał zegar tuż nad pytaniem i odświeżał co 60 sekund; co pozwala mi widzieć godziny i minuty (i nie dbam o minuty), podczas gdy pętla zegara nie psuje mojego ekranu. Po pierwsze, oto moja zachęta:A oto zmodyfikowany kod G_P:
enter code here
Mała edycja : Zauważyłem, że powyższy kod nie od razu wyświetla zegar. Oto lepsza wersja:
while true; do tput sc;tput cup 0 0;date +%R;tput rc; sleep 60; done &
ta najpierw umieszcza zegar na ekranie, a następnie informuje bash, aby przejść przez cykl snu trwający 60 sekundUwaga, tput cup 0 0 umieszcza zegar w prawym górnym rogu ekranu, tuż nad monitem, a sen 60 zmienia cykl snu na 60 sekund, ponieważ w ten sposób mogę monitorować tylko godziny i minuty zamiast każdej sekundy. W ten sposób nie wpływa to w żaden sposób na tekst wyświetlany na ekranie (tylko wtedy, gdy uruchamiam polecenie w tym samym czasie, zegar jest odświeżany).
Linia PS1 jest już w twoim profilu .bashrc, więc musisz ją trochę ulepszyć. Pętla while do powinna być dodana gdzieś w tym samym pliku, najlepiej na końcu z komentarzem #, że to jest to, co dodałeś na początku. I nie zapomnij zawsze tworzyć kopii zapasowej każdego takiego pliku na wypadek, gdybyś utworzył bubu i musiał wrócić do poprzedniego stanu.
# 3, Skrypty i inne
Ta część przeznaczona jest tylko dla tych, którzy chcą zobaczyć czas. Dla tych, którzy chcą stale go monitorować, preferowane są opcje # 1 i # 2.
Jak widzieliśmy, pętla while jest całkiem przydatna. Oto, w jaki sposób możesz utworzyć zegar za pomocą komend pętli while, date i sleep.
Naciśnij Return / Enter, a co sekundę zobaczysz wynik polecenia daty na wyczyszczonym ekranie. Jeśli nie chcesz wpisywać tego wszystkiego za każdym razem, zamień wszystkie te rzeczy w skrypt:
Teraz możesz uruchomić ten skrypt z splitvt w jednej instancji bash, podczas gdy w drugiej.
Innym rozwiązaniem jest
watch -n1 date
polecenie, które będzie stale wykonywać polecenie daty z okresem 1 sekundy.Podsumowując: Nauczyłem się kilku rzeczy, próbując znaleźć odpowiedź na to pytanie, i mam nadzieję, że moje odkrycia pomogły wam w jakiś sposób i mam nadzieję, że mogłem przyczynić się do tego pytania. Terminal Byobu IMHO jest najlepszym rozwiązaniem, ale zdecyduj sam, przeprowadź badania i wybierz najlepszą dla siebie metodę.
Niektóre rzeczy, które znalazłem podczas badań:
Mój oryginalny post, minimalistyczne rozwiązanie: Edytuj plik ~ / .bashrc. Wolę edytować go za pomocą nano, więc
Oto część mojego edytowanego pliku:
Po instrukcji else pierwszy wiersz jest oznaczony komentarzem # (jest to mój stary monit), teraz drugi wiersz jest tym, który chcesz, a konkretnie
\t
operatorem. To pokazuje czas działania w formacie 24-godzinnym. Aby uzyskać więcej informacji, sprawdź to . Również mała uwaga: używam tych rzeczy po prostu, ponieważ nie używam kolorowych podpowiedzi.PS: Daj mi znać, czy powinienem dodać coś do mojej odpowiedzi lub edytować ją w jakikolwiek sposób, ale w przeważającej części uważam, że jest to najbardziej rozstrzygająca odpowiedź, jaką mogę wymyślić, a przynajmniej osobiście nic nie dodam nowy w tym.
źródło
odkąd wolą wyświetlania tak mało informacji tle, jak to możliwe na listwie I ogólnie dostosować każdą sesję postaci
#
,$
itd (jeśli chcesz go zmienić na stałe rozwiązanie minerz029 jest doskonały)Aby go zmodyfikować, aby pokazywał aktualny, mógłbym wybrać
dla czasu w formacie 12-godzinnym. Możesz zobaczyć dokumentację bash dla innych opcji.
źródło
Ten czas zmieni się tylko po wykonaniu nowego monitu
Możesz dodać następujące elementy do
.bashrc
:Które wytworzą:
Więcej informacji tutaj: http://www.thegeekstuff.com/2008/09/bash-shell-ps1-10-examples-to-make-your-linux-prompt-like-angelina-jolie/#8
Wyszukaj „8. Utwórz własny monit przy użyciu dostępnych kodów dla zmiennej PS1” na powyższej stronie.
źródło
$PROMPT_COMMAND
zadziałałoby, jeśli można znaleźć polecenie wyświetlające czas tykania.Naprawdę podoba mi się funkcja zegara ncmpcpp , uruchamiana przez 0-key (patrz zrzut ekranu). Więcej informacji na temat procedury instalacji można znaleźć w tym poście .
źródło
watch -t -n1 "date +%T|figlet"
byłby łatwy sposób.Pod wpływem g_p i Serga próbowałem stworzyć funkcję w bash. Działa, ale nie jestem pewien, czy dobrym pomysłem jest sprawdzanie polecenia ps co sekundę, aby sprawdzić, czy bash jest procesem fg, czy nie
źródło
Jeśli nigdy nie musisz go używać
debian_chroot
, jest to przydatne miejsce, aby ustawić czas wyświetlania wiersza polecenia za pomocą:Wpisz to w swoim terminalu i obserwuj zmiany wiersza poleceń wraz z czasem:
Po jednokrotnym ustawieniu czasu, aby uzyskać bieżący zegar, który aktualizuje się co sekundę, użyj:
To
.gif
pokazuje polecenia w akcji:źródło