Làm cách nào tôi có thể xem lịch sử Bash từ nhiều phiên cuối trong Ubuntu? [bản sao]


11

Có thể trùng lặp: Các
tệp lịch sử có thể được thống nhất trong bash không?

Tôi sử dụng Ubuntu Server 9.10 và tôi muốn có thể xem lịch sử bash của mình trong hơn một phiên cuối. Tức là 200 lệnh cuối cùng của tôi hoặc lâu hơn, ngay cả khi tôi đã đăng xuất ở giữa.

Khi tôi sử dụng, historytôi chỉ thấy tất cả các lệnh từ phiên cuối thực tế của mình. Làm thế nào tôi có thể xem thêm lịch sử lệnh từ Bash? Có bất kỳ cài đặt cụ thể nào cho bash mà tôi nên thay đổi từ các giá trị mặc định trong Ubuntu không?

Tôi không có một ~/.bash_historytập tin. Nhưng tôi có một ~/.bashrcvới HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsHISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth

CẬP NHẬT: Tôi hiện đang dùng thử Ubuntu Server 10.10 trong VirtualBox. Nếu tôi chỉ tắt VirtualBox mà không có lệnh tắt máy thì lần sau khi tôi khởi động, các lệnh từ phiên cuối cùng sẽ không được lưu trong tệp lịch sử.

Các lệnh chỉ được lưu nếu tôi tắt máy bằng lệnh tắt máy. Ví dụ: tắt máy -P 0.

Đây phải là lý do cho vấn đề của tôi. Vì vậy, tôi phải tìm ra cách lưu lịch sử lệnh thường xuyên hơn. Ví dụ sau mỗi lệnh.


Bạn nhận được gì nếu bạn làm echo $HISTSIZEecho $HISTFILESIZE? My (Ubuntu) ~/.bashrccó cùng HISTCONTROLdòng với dòng của bạn đã chết vì dòng thứ hai ghi đè lên giá trị thứ nhất và các giá trị được cho là phân tách bằng dấu hai chấm, không được phân tách bằng dấu phẩy. Nếu bạn làm set -onó sẽ hiển thị một dòng có "lịch sử trên"?
Tạm dừng cho đến khi có thông báo mới.

Tôi nhận được 500với echocả hai biến vàhistory on
Jonas

câu lệnh HISTCONTROL thứ hai là câu lệnh bạn nhận được, không phải câu lệnh đầu tiên. mặc dù ignoreboth là bash viết tắt cho ignoredups + ignorespace để có lẽ không phải là vấn đề.
quack quixote


1
@warren: tìm tốt đẹp. Tôi đồng ý, có vẻ như chính xác những gì Sanoj đang yêu cầu.
quack quixote

Câu trả lời:


6

Bạn có thể dùng

history -a

để ngay lập tức nối lịch sử trong bộ nhớ vào tệp lịch sử. Một phiên cuối không thể thấy phiên khác trừ khi việc này được thực hiện hoặc phiên khác bị thoát.

Bạn có thể dùng

history 200 | less

để xem số lượng mục.

Ngoài ra để HISTSIZExem mục trong trang Bash man liên quan HISTFILESIZE.


history -a´ doesn't do anything for me, and not lịch sử 200 | ít hơn, nhưng tôi đã cập nhật câu hỏi của mình với nhiều thông tin hơn. Dẫu sao cũng xin cảm ơn.
Jonas

Tôi nghĩ rằng tôi đã tìm thấy một lý do bây giờ. Lịch sử không được lưu trừ khi tôi tắt máy sạch sẽ. Xem câu hỏi mới của tôi: unix.stackexchange.com/questions/3330/ trên
Jonas

6

Khi bạn đăng xuất, lịch sử sẽ được thêm vào tệp ~/.bash_history. Có một cái nhìn trong đó.

Theo mặc định, nó sẽ ghi nhớ 500 lệnh cuối cùng của bạn. Nếu bạn muốn lưu nhiều hơn, đặt biến HISTSIZEtrong ~/.bashrc.

Tôi cũng làm thêm ignoredupsđể HISTCONTROL(với HISTCONTROL=$HISTCONTROL:ignoredup). Điều này làm cho các lệnh liên tiếp trùng lặp chỉ được lưu một lần.

Có một cái nhìn man 1 bashvề những gì khác bạn có thể điều chỉnh về lịch sử.


Cảm ơn vì đã trả lời. Nhưng tôi không có một ~/bash_historytập tin, và không có HISTSIZEtrong ~/.bashrcnhưng tôi có HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsHISTCONTROL=ignorebothvà Nó là Ubuntu Server, nếu vấn đề đó.
Jonas

1
@Snoj Thông báo .trong ~/.bash_history. Và đối với HISTSIZEnó sẽ chỉ sử dụng giá trị mặc định của 500 mục.
Benjamin Bannier

Có, nhưng tôi không có ~/.bash_historytập tin nào trên hệ thống của mình. Tôi đã từng ls -akiểm tra.
Jonas

@Sanoj Vì vậy, có thể nó không phải là mặc định. Tên tệp được lưu trữ trong $HISTFILEbiến, vì vậy echo $HISTFILEsẽ cho bạn biết nơi để tìm.
Benjamin Bannier

echo $HISTFILEcho tôi /home/sanoj/.bash_history- lạ. Có lẽ nó không được kích hoạt bởi lý do bảo mật?
Jonas

1

lịch sử bash thường được tải khi shell bắt đầu chạy và được lưu khi thoát ra bình thường. Bạn có thể sử dụng history -ahistory -nghi đè lên điều này, nhưng không tự động trừ khi bạn lạm dụng $PROMPT_COMMANDhoặc một cái gì đó tương tự.


0

Sanoj, điều này thực sự nên "chỉ hoạt động"; Tôi không nghĩ rằng có bất cứ điều gì đặc biệt bạn cần làm để kích hoạt điều này. Nghe có vẻ như một cái gì đó đang can thiệp vào quá trình bình thường của các sự kiện.

Tôi sẽ tìm trong / etc / profile, / etc / bashrc (hoặc có lẽ /etc/bash.bashrc theo một số nguồn), ~ / .bash_profile, ~ / .bashrc, ~ / .bash_login, ~ / .bash_logout, để xem nếu có bất cứ điều gì có thể ảnh hưởng đến lịch sử (có lẽ grep -i histtrên mỗi tệp trên).

... Đặc biệt tôi tự hỏi nếu bạn có một cái gì đó trong ~ / .bash_logout loại bỏ tệp.

Ngoài ra, có thể là một cái gì đó đang ghi đè lên $HOMEbiến?

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.