Zastanawiałem się, czy można dodać znaczniki czasu do monitów terminali, a jeśli tak, to w jaki sposób mogę to osiągnąć?
Zastanawiałem się, czy można dodać znaczniki czasu do monitów terminali, a jeśli tak, to w jaki sposób mogę to osiągnąć?
Odpowiedzi:
Dodaj ten wiersz do ~/.bashrc
pliku:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Wynik będzie więc taki jak:
[07:00:31] user@name:~$
date
polecenia, można zastąpić +%H:%M:%S
z +%T
.
Moim rozwiązaniem było użycie http://bashrcgenerator.com/ do wygenerowania tej linii PS1 do wprowadzenia .bashrc:
export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"
Jak będzie wyglądać
13:05:54 [chad@work-laptop:~/Downloads]$ ls -al
Użycie PROMPT_COMMAND prowadzi dla mnie przegląd historii. Gdy podczas przeglądania historii pojawia się dłuższa linia, odcina ona koniec znaku zachęty taką samą liczbą znaków, jak znacznik czasu dodany z przodu. na przykład
13:14:38 [chad@work-laptop:~/Doexport PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] "
Nie można edytować tego wiersza, ponieważ nie wyświetla on znaków we właściwym miejscu, ponieważ nie piszesz tam, gdzie wygląda na to, że piszesz.
Zgaduję, że można to zrobić za pomocą PROMPT_COMMAND, może używając tej części [$ (tput sgr0)], ale PS1 działa.
Zamiast dodawać datę do szybkiego siebie, można dodać datę tuż przed swoim wierszu umieszczając następującą linię w górę twoich .bashrc
. Aby działało, musisz również zainstalować cowsay
. To fajny sposób na wyświetlenie daty z zachowaniem krótkiego monitu:
cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"
W swojej obecnej formie będzie działać na czyjąś systemu bez poprawek, gdyż czyta $USER
i date
zmienna z obecnej sytuacji.
Ponieważ nie mam wystarczającej liczby punktów reputacji, aby dodać komentarz do odpowiedzi, aby go poprawić. Wydaje się, że jedynym sposobem na dodanie informacji jest utworzenie drugiej odpowiedzi. Powtórzę więc to, co powiedziano jako odpowiedź, i oprę na tym.
Edytuj plik .bashrc dla użytkownika, dla którego chcesz zmodyfikować datownik.
Jeśli widzisz „użytkownik @ host: ~ $”, jesteś w katalogu domowym bieżącego użytkownika. Plik .bashrc jest plikiem ukrytym, ponieważ jest poprzedzony kropką „.”. Aby zobaczyć go na liście, musisz użyć długiej listy.
Możesz użyć „ls -a” i powinieneś zobaczyć plik „.bashrc”.
Edytuj plik za pomocą edytora tekstu. Na przykład „nano .bashrc”, „vim .bashrc”, „vi .bashrc”, „pico .bashrc” lub dowolny inny edytor, którego chcesz użyć.
Jeśli chcesz napisać skrypt i dodać go do wielu powłok dla wielu użytkowników, może być korzystne użycie polecenia „echo” w połączeniu z operatorem „>>”. Na przykład,
echo "export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"" >> .bashrc
Jeśli używasz tej metody, upewnij się, że znajdujesz się w bieżącym katalogu roboczym użytkownika, dla którego chcesz ją zmodyfikować. Aby to sprawdzić, możesz użyć polecenia „pwd” lub wydrukować katalog roboczy.
Jeśli nie podoba ci się dodatkowa spacja między końcowym nawiasiem „]” a nazwą użytkownika, użyj tego nieznacznie zmodyfikowanego wyrażenia regularnego:
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"
Użyj tego, jeśli bezpośrednio edytujesz plik.
Otwórz swój .bashrc
via
vim ~/.bashrc
a następnie dodaj .bashrc
:
#PS1="[\A \u@\h \W\a]$"
gdzie \A
jest czas ( \W
tylko koniec ścieżki, usuń, jeśli chcesz całą bieżącą ścieżkę katalogu roboczego). Następnie wpisz
source ~/.bashrc
Zobaczysz coś takiego:
[16:04 trwood@cobalt04 ~/MCEq_dev]$
\W
nie pokaże żadnej ścieżki. \w
da pełną ścieżkę.
Aby dodać do odpowiedzi @ devav2:
Łatwiejszym do odczytania poleceniem echa dla początkujących byłoby:
export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'
Zamiast
export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "
Ponieważ polecenie echo nie jest przeznaczone do oceny w czasie eksportu, bardziej sensowne jest stosowanie pojedynczych cudzysłowów zamiast cudzysłowów. Korzystanie apostrofów zacytować całą komendę następnie pozwala na użycie cudzysłowów zacytować arguement do polecenia echo, eliminując potrzebę ucieczki znaków specjalnych, takich jak ,
[
i$
Myślę, że poprawnym sposobem jest zlokalizowanie w $HOME/.bashrc
ustawionych kodach PS1
, skomentowanie ich i dodanie osobistych. Oto mój blok na przykład:
PS1_DATE="\D{%Y-%m-%d %H:%M:%S}"
if [ "$color_prompt" = yes ]; then
PS1="[$PS1_DATE \[\e]0; \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[\033[00m\]\[\033[01;34m\]\w \[\033[00m\]\$] "
#PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='[$PS1_DATE ${debian_chroot:+($debian_chroot)}\w \$] '
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
Wynik:
[2019-06-18 15:54:29 ~/Desktop $] echo "It's late!"
Najłatwiejszą składnią do wyświetlania znacznika czasu w wierszu polecenia byłoby prawdopodobnie:
PS1='\D{%F} \t $...'
gdzie
\D{format}
data jest sformatowana (patrz man bash
sekcja PROMPTING) jako
%F
pełna data; taki sam jak% Y-% m-% d (patrz man date
sekcja FORMAT) i
\t
to bieżący czas w formacie 24-godzinnym GG: MM: SS (patrz man bash
sekcja PROPOZYCJA)
nano ~/.bashrc
wprowadź zmiany do zmiennych PS1, jak pokazano powyżej
source ~/.bashrc
Mój czas jest podobny do cowsay
powyższej odpowiedzi. Trzeba umieścić now
swoimi ~/.bashrc
ale można również zadzwonić z terminalu wpisując now
.
Oto zrzut ekranu:
Kod bash jest zamieszczony w tej bardzo szczegółowej odpowiedzi:
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "
przynajmniej wydaje mi się przydatny.