Xem lịch sử của các lệnh chạy trong thiết bị đầu cuối


75

Có cách nào để lưu tất cả các lệnh đầu cuối được gõ của tôi và xem nó như lịch sử trong một sổ ghi chép không?

Câu trả lời:


92

Điều này được tự động thực hiện. Bash lưu trữ các lệnh của bạn trong ~/.bash_history. Nếu bạn muốn xem lịch sử, hãy in đầu ra của tệp này bằng một trong

cat ~/.bash_history
less ~/.bash_history
...any other pager or output command...

Hoặc bạn có thể sử dụng lệnh dựng sẵn của bash:

history

Để xóa lịch sử, xóa tệp và xóa lịch sử tạm thời:

rm ~/.bash_history && history -c

Kích thước lịch sử mặc định là 500 lệnh. Tuy nhiên, bạn có thể tăng điều này bằng cách thêm một dòng vào ~/.bashrctệp của mình để đặt HISTSIZEbiến:

HISTSIZE=<number of entries, -1 for unlimited>

Điều này sẽ không có hiệu lực ngay lập tức, mà chỉ cho các phiên mới bắt đầu. Để áp dụng điều này, nguồn lại .bashrctệp:

. ~/.bashrc

hoặc chạy HISTSIZE=...trong phiên hiện tại của bạn.


1
Theo mặc định, nó chỉ giữ 500 lệnh mới nhất. Bạn có thể thay đổi số cần giữ, nhưng bạn chỉ phải vô tình khởi động nó với cài đặt mặc định một lần và tất cả lịch sử cũ của bạn sẽ biến mất.
kasperd 17/05/2015

Điều này không hoạt động với tôi trên Ubuntu 16
Nam G VU

31

Bạn có thể gõ historytrên một thiết bị đầu cuối để xem tất cả các lệnh được thực hiện trước đó.


Bạn có thể cắt đầu ra thành một số dòng (trong đó 5 là số dòng):

history 5

Nếu bạn chỉ muốn xem các lệnh có chứa một chuỗi (tức là mv), bạn có thể làm điều này:

history | grep mv

Bạn có thể nhớ lại một lệnh bằng cách gõ !theo sau là số mục.

Hãy nói rằng tôi có một lịch sử như thế này:

1 ls -la
2 mkdir foo
3 mv bar.txt foo
  • Để chạy mkdir foo, bạn có thể gõ !2.
  • Để chạy lệnh cuối cùng, bạn có thể sử dụng !-1hoặc!!
  • Để chạy áp chót, bạn có thể sử dụng !-2

Nếu bạn chạy một lệnh thất bại vì nó cần quyền root (tức là touch /etc/foo), bạn có thể sử dụng sudo !!để chạy lệnh cuối cùng với quyền root.


  • Nếu bạn gõ, !manbạn sẽ thực thi lệnh cuối cùng bắt đầu bằngman
  • Nếu bạn gõ !?man?nó sẽ thực thi lệnh cuối cùng chứa man(không phải là không bắt đầu ở dòng bắt đầu)

Nếu bạn có một lỗi đánh máy trong một lệnh, bạn có thể sửa nó theo cách này. Hãy nói rằng tôi gõ cat .bash_hi, để thay thế .bash_hibởi .bash_historytôi chỉ cần gõ ^hi^history^.


Nguồn: https://www.digitalocean.com/community/tutorials/how-to-use-bash-history-commands-and-Exansions-on-a-linux-vps


2
Ngoài ra, bạn có thể nhấn Ctrl-R để thực hiện tìm kiếm trong kho lưu trữ khi bạn nhập.
Mhmd

historylàm việc cho tôi trên Ubuntu 16. Cảm ơn và nên là người được chấp nhận!
Nam G VU

9

Chỉ loại :

history > print.txt

Một tệp mới có tên print.txt sẽ được tạo trong thư mục hiện đang hoạt động của bạn.


3
Cắt các lệnh sau 1000
Antoine

3

Tôi thường chỉ muốn những lệnh gần đây, quá. Để đăng lên các ghi chú phát triển của tôi hoặc, tốt, các trang web stackexchange như thế này ... Điều này đã được chứng minh rất hữu ích, loại bỏ các số dòng không liên quan:

history | cut -c 8- | tail

hoặc, nếu bạn thích nó như một bí danh, số dòng bị xóa và thụt lề ngay lập tức (giống như cần thiết để đánh dấu trích dẫn mã)

alias lastones="history | tail | sed -e 's/^ [0-9]\{1,5\}  /    /gi'"

1
Dễ sử dụng hơn fc: Askubfox.com/a/839442/158442
muru

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.