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?
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?
Câu trả lời:
Thêm dòng này vào ~/.bashrc
tậ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:~$
date
lệnh, bạn có thể thay thế +%H:%M:%S
bằng +%T
.
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.
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 $USER
và date
biến từ môi trường hiện tại.
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.
Mở .bashrc
thô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 \A
dành cho thời gian ( \W
chỉ ở 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]$
\W
sẽ hiển thị không có con đường nào cả. \w
sẽ đưa ra con đường đầy đủ.
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ư ,
[
và$
Tôi nghĩ rằng cách chính xác để tiến hành là xác định vị trí trong $HOME/.bashrc
cá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!"
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à
%F
ngày đầy đủ; giống như% Y-% m-% d (xem man date
phần FORMAT) và
\t
là thời gian hiện tại ở định dạng HH: MM: SS 24 giờ (xem man bash
phần KHUYẾN MÃI)
nano ~/.bashrc
thay đổi các biến PS1 như hình trên
source ~/.bashrc
Thời gian của tôi tương tự như cowsay
câu trả lời ở trên. Bạn cần phải đặt now
của bạn ~/.bashrc
nhưng bạn cũng có thể gọi nó từ nhà ga bằng cách gõ now
.
Đây là một ảnh chụp màn hình:
Mã bash được đăng trong câu trả lời rất chi tiết này:
export PROMPT_COMMAND="echo -n \[\$(date +%F-%T)\]\ "
export HISTTIMEFORMAT="%F-%T "
ít nhất có vẻ thuận tiện cho tôi.