Thêm dấu thời gian để nhắc thiết bị đầu cuối?


53

Tôi đã tự hỏi nếu có thể thêm dấu thời gian vào lời nhắc thiết bị đầu cuối, và nếu vậy, làm thế nào tôi có thể đạt được điều này?


kiểm tra liên kết này để hiển thị đồng hồ đang chạy đồng bộ
Mana

Câu trả lời:


60

Thêm dòng này vào ~/.bashrctập tin:

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "

Vì vậy, đầu ra sẽ là một cái gì đó như:

[07:00:31] user@name:~$

Đôi khi tôi kinh nghiệm rằng thời gian không chính xác và cũ hơn, giống như có một số độ trễ. Tôi mặc dù tôi có thể sử dụng nó để xem các lệnh nhất định mất bao lâu (grunt ..). Làm thế nào mà có thể được?
Kevin Simper

2
@ devav2: Có cách nào để chỉ định múi giờ không?

Có cách nào bạn cũng có thể thêm dấu thời gian vào thiết bị đầu cuối khi bạn đang sử dụng root không? Tôi chỉ có dấu thời gian khi tôi là người dùng bình thường. Cảm ơn
Yufenyuy Veyeh Dider

4
Đối với datelệnh, bạn có thể thay thế +%H:%M:%Sbằng +%T.
snapfractalpop

5
Điều này vặn vẹo với gói thiết bị đầu cuối của tôi, vì vậy tôi đã sử dụng phương pháp chi tiết ở đây để thay thế. Nó chỉ là thêm '\ D {% T}' vào PS1 của bạn
rbennett485

25

Giải pháp của tôi là sử dụng http://bashrcgenerator.com/ để tạo dòng PS1 này để đặt .bashrc:

export PS1="\t [\u@\h \W]\\$ \[$(tput sgr0)\]"

Nó sẽ trông như thế nào

13:05:54 [chad@work-laptop:~/Downloads]$ ls -al

Sử dụng PROMPT_COMMAND làm rối tung lịch sử đối với tôi. Khi một dòng dài hơn xuất hiện trong khi đạp xe xuyên qua lịch sử, nó sẽ cắt phần cuối của dấu nhắc bằng cùng số ký tự với dấu thời gian được thêm vào phía trước. ví dụ

13:14:38 [chad@work-laptop:~/Doexport PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\\] "

Và dòng này không thể được chỉnh sửa vì nó không hiển thị các ký tự ở đúng vị trí, vì trong đó bạn không gõ vào nơi mà nó trông giống như bạn đang gõ.

Tôi đoán nó có thể được thực hiện với PROMPT_COMMAND, có thể bằng cách sử dụng phần [$ (tput sgr0)] đó, nhưng PS1 hoạt động.


Các liên kết ở đây là tuyệt vời để tiếp tục tùy chỉnh tem.
cellepo

16

Thay vì thêm ngày vào chính lời nhắc, bạn có thể thêm ngày ngay trước lời nhắc của mình bằng cách đặt dòng sau ở trên cùng của bạn .bashrc. Đối với nó hoạt động bạn cũng sẽ cần phải cài đặt cowsay. Đây là một cách thú vị để hiển thị ngày trong khi giữ một dấu nhắc ngắn :

cowsay "Welcome $USER! It's now $(date '+%A %B %d %Y %r')"

Ở dạng hiện tại, nó sẽ hoạt động trên hệ thống của bất kỳ ai mà không cần sửa đổi khi nó đọc $USERdatebiến từ môi trường hiện tại.

nhập mô tả hình ảnh ở đây


8
Điểm của việc đưa nó vào dấu nhắc là để biết lần cuối bạn thực hiện một lệnh cụ thể là khi nào.
James Oltmans

6

Vì tôi không có đủ điểm danh tiếng để thêm nhận xét vào câu trả lời để cải thiện nó. Dường như cách duy nhất tôi có thể thêm thông tin là tạo câu trả lời thứ hai. Vì vậy, tôi sẽ lặp lại những gì đã nói như câu trả lời và dựa trên đó.

Chỉnh sửa tệp .bashrc cho người dùng mà bạn muốn sửa đổi tem ngày.

Nếu bạn thấy "user @ host: ~ $" bạn đang ở trong thư mục nhà của người dùng hiện tại. Tệp .bashrc là một tệp ẩn vì nó có tiền tố là dấu chấm ".". Để xem nó trong một danh sách, bạn sẽ cần sử dụng một danh sách dài.

Bạn có thể sử dụng "ls -a" và sau đó bạn sẽ thấy tệp ".bashrc".

Chỉnh sửa tập tin với một trình soạn thảo văn bản. Đối với exmaple, "nano .bashrc", "vim .bashrc", "vi .bashrc", "pico .bashrc" hoặc bất kỳ trình soạn thảo nào bạn muốn sử dụng.

Nếu bạn muốn kịch bản lệnh này và lên kế hoạch thêm nó vào nhiều shell cho nhiều người dùng, có thể có ích khi sử dụng lệnh "echo" kết hợp với toán tử ">>". Ví dụ,

echo "export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"" >> .bashrc

Nếu bạn sử dụng phương pháp đó, hãy chắc chắn rằng bạn đang ở trong thư mục làm việc hiện tại của người dùng mà bạn muốn sửa đổi nó. Để kiểm tra điều này, bạn có thể sử dụng lệnh "pwd" hoặc in thư mục làm việc.

Nếu bạn không thích khoảng trống thừa giữa dấu ngoặc cuối "]" và tên người dùng, chỉ cần sử dụng biểu thức chính được sửa đổi một chút này:

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\\"

Sử dụng cái này nếu bạn trực tiếp chỉnh sửa tập tin.


1
Bạn có thể đề nghị chỉnh sửa.
muru

4
export PROMPT_COMMAND=date

in ngày trước khi phát hành mỗi dấu nhắc.


1

Mở .bashrcthông qua của bạn

vim ~/.bashrc

và sau đó thêm vào như sau .bashrc:

#PS1="[\A \u@\h \W\a]$" 

nơi \Adành cho thời gian ( \Wchỉ ở cuối đường dẫn, hãy xóa nếu bạn muốn toàn bộ đường dẫn thư mục làm việc hiện tại). Sau đó gõ

source ~/.bashrc

Bạn sẽ thấy một cái gì đó như thế này:

[16:04 trwood@cobalt04 ~/MCEq_dev]$

1
loại bỏ \Wsẽ hiển thị không có con đường nào cả. \wsẽ đưa ra con đường đầy đủ.
Zanna

0

Chỉ cần thêm vào câu trả lời của @ devav2:

Một lệnh echo dễ đọc hơn cho người mới sẽ là:

export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "'

Thay vì

export PROMPT_COMMAND="echo -n \[\$(date +%H:%M:%S)\]\ "

Trở thành lệnh echo không có nghĩa là được đánh giá tại thời điểm xuất, nó có ý nghĩa hơn khi sử dụng dấu ngoặc đơn cho trích dẫn bằng chữ thay vì dấu ngoặc kép. Sử dụng dấu ngoặc đơn để trích dẫn toàn bộ lệnh sau đó cho phép bạn sử dụng dấu ngoặc kép để trích dẫn tranh luận cho lệnh echo, loại bỏ nhu cầu thoát khỏi các ký tự đặc biệt như , [$


1
Các lối thoát đang được sử dụng để định dạng (dấu ngoặc). Tôi không thấy những gì điều này thêm vào câu trả lời được chấp nhận.
Anh Cả Geek

Bạn có thể thêm chúng vào 'echo -n "$ (ngày +% H:% M:% S)"' quá: 'echo -n "[$ (ngày +% H:% M:% S)]"' mà không có cần phải thoát khỏi chúng. Lợi ích của việc sử dụng một chuỗi làm đối số cho lệnh echo là bây giờ bạn không cần phải thoát khỏi những gì có thể đánh giá được bash, làm cho nó dễ đọc hơn.
qwertyzw

@ElderGeek Tôi đã làm rõ thêm. Tôi hy vọng điều đó sẽ giúp.
qwertyzw

0

Tôi nghĩ rằng cách chính xác để tiến hành là xác định vị trí trong $HOME/.bashrccác mã đặt PS1, nhận xét chúng và thêm các mã cá nhân. Đây là khối của tôi chẳng hạn:

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

Đầu ra:

[2019-06-18 15:54:29 ~/Desktop $] echo "It's late!"

0

Cú pháp dễ nhất để hiển thị dấu thời gian trong dấu nhắc lệnh có thể là:

    PS1='\D{%F} \t $...'

Ở đâu

\D{format}là ngày được định dạng (xem man bash, phần KHUYẾN MÃI) là

%Fngày đầy đủ; giống như% Y-% m-% d (xem man datephần FORMAT) và

\tlà thời gian hiện tại ở định dạng HH: MM: SS 24 giờ (xem man bashphần KHUYẾN MÃI)

nano ~/.bashrc

thay đổi các biến PS1 như hình trên

source ~/.bashrc


0
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "

ít nhất có vẻ thuận tiện cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.