2013-02-27 26 views
12

Trước tiên hãy để tôi hiển thị ví dụ bên dưới.Tôi làm cách nào để xem tất cả lịch sử bash?

Trong shell (1) Tôi đã thực hiện lệnh sau.

$ ping google.com 
PING google.com (74.125.235.164) 56(84) bytes of data. 
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=1 ttl=54 time=2.85 ms 
64 bytes from nrt19s12-in-f4.1e100.net (74.125.235.164): icmp_seq=2 ttl=54 time=3.42 ms 

Và sau đó, mở một vỏ khác (2) và xem lịch sử.

$ history 
. 
. 
. 
8720 exit 
8721 clear 
8722 history 

Trong trường hợp này, vỏ không thể xem lịch sử bash trong mỗi trình bao.

Vì vậy, câu hỏi của tôi là làm thế nào tôi có thể xem tất cả lịch sử bash? Có ai biết hack không?

Cảm ơn bạn rất nhiều trước!

Trả lời

12

Bạn nên nhìn vào tùy chọn histappend vỏ và -a cờ để history:

histappend

Nếu được đặt, danh sách lịch sử được nối thêm vào các tập tin được đặt tên bởi giá trị của HISTFILE biến khi thoát khỏi trình bao, thay vì ghi đè lên tệp.

history

-a Nối các dòng lịch sử "mới" (dòng lịch sử vào từ đầu phiên bash hiện hành) để các tập tin lịch sử.

Nếu bạn đặt history -a vào PROMPT_COMMAND của bạn, bạn sẽ nhận được luôn-up-to-date .bash_history tập tin.

10
cat ~/.bash_history 

cũng sẽ làm việc, mặc dù tôi có xu hướng chỉ cần sử dụng

vim ~/.bash_history 

và sau đó sử dụng / để tìm kiếm

1

Bạn có thể cài đặt một cái gì đó như Lịch sử vỏ nâng cao, sẽ ghi mỗi lệnh vào cơ sở dữ liệu sqlite3. Nó đi kèm với một công cụ để truy vấn cơ sở dữ liệu từ dòng lệnh. https://github.com/barabo/advanced-shell-history

Với thiết lập này, bạn sẽ có chế độ xem thống nhất lịch sử lệnh trên tất cả các phiên. Bạn cũng có được những thứ như lịch sử lệnh cho thư mục làm việc hiện tại (hoặc cây con), mã thoát lệnh, thời lượng lệnh, v.v.

Tiết lộ đầy đủ: Tôi đã viết và duy trì công cụ.