Lịch sử Bash với dấu thời gian


14

Tôi muốn giữ dấu thời gian trên các lệnh được ghi trong Bash $ HISTFILE của tôi, điều đó có thể không?

Tôi đã không quản lý để thiết lập nó bằng cách sử dụng man bashnhư một nguồn thông tin.

Các tùy chọn khác của tôi như sau:

function thebanana() {
  local -r -a bash_commands=(
    "ls"
    # ... more coconut commands
  )
  for bash_command in "${bash_commands[@]}"; do
    printf "${bash_command}"
    printf ":"
  done
}
export HISTFILE=banana
export HISTIGNORE="$(thebanana)"
export HISTSIZE=999999
export HISTFILESIZE=999999999
export HISTCONTROL=ignoredups:erasedups

Tôi nên đề cập đến tôi trên OS X Mountain Lion (thở dài). uname -ađưa cho tôi:

Darwin CoconutMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

echo $BASH_VERSIONđưa cho tôi:

3.2.48(1)-release

Đã thử thêm điều này:

export HISTTIMEFORMAT='%b %d %I:%M:%S %p '

và nó chỉ tiền tố loại dấu thời gian này cho các lệnh:

#1349057791

Tôi thử lặp lại biến ( echo $HISTTIMEFORMAT), nó có giá trị đúng.

Hấp dẫn!

Tôi thậm chí đã loại bỏ hoàn toàn .profile để gỡ lỗi này. Vẫn chỉ có dấu thời gian vui:

#1349058320

Tôi không biết cách khắc phục sự cố này ... :(

Giải pháp : Tôi đang sử dụng tập lệnh đọc trực tiếp $ HISTFILE, không phải là lịch sử tích hợp nên dấu thời gian dựa trên thời gian (giây kể từ Giờ phối hợp quốc tế (UTC) ngày 1 tháng 1 năm 1970) không được dịch bằng chuỗi định dạng ngày . Plain-old historyhoạt động tốt, tôi sẽ sử dụng thay thế.


2
Bạn đã thử cài đặt HISTTIMEFORMATchưa?
jw013

Có lẽ tôi đang nhận được định dạng strftime sai. Sẽ hữu ích nếu trang man bao gồm ít nhất một vài ví dụ .. +% Y-% m-% d% H-% M-% S?
Robottinosino

Câu trả lời:


14

Vâng, đặt cái này vào ~/.bashrc:

export HISTTIMEFORMAT='%F %T '

Sau đó, chạy các lệnh sau:

. ~/.bashrc
history

Nó sẽ trông giống thế này :

 (...)
 5200  2012-09-30 23:55:37 find -printf '%Ts %f\n'
 5201  2012-10-01 00:00:58 ls
 5202  2012-10-01 00:03:45 cd
 (...)

Giải thích về đầu ra:

  • col đầu tiên là duy nhất id
  • thứ hai là ngày, thứ ba là giờ
  • mới nhất là dòng lệnh của bạn

3
Không, không hoạt động trên OSX .. :( Có lẽ đó là vấn đề. Một hệ điều hành lạ.
Robottinosino

Có phải bạn source ~/.bashrckhông
Gilles Quenot

Tôi chắc chắn đã làm. Nó đang thực hiện "một cái gì đó": thêm một dòng nhận xét trước lệnh bằng dấu thời gian số: # 1349057149
Robottinosino

1
@Robottinosino Có dòng nhận xét là định dạng mong đợi. Để hiển thị các lệnh với thời gian được định dạng, sử dụng historylệnh dựng sẵn, không nhìn trực tiếp vào tệp lịch sử.
jw013

1
Có thể có dấu thời gian trong tệp lịch sử được ghi bằng HISTTIMEFORMAT không? Tôi không bao giờ sử dụng historylệnh, thay vào đó tôi sử dụng trình soạn thảo văn bản để tìm các lệnh tôi đang tìm kiếm và thật tuyệt khi có một tham chiếu ngày có thể đọc được của con người.
đ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.