Liệu thiết bị đầu cuối lưu trữ dữ liệu?


9

Đây là điều mà tôi đã muốn biết trong một thời gian dài, nhưng chưa bao giờ thực sự đặt ra một câu hỏi.

Tôi biết rằng trong thiết bị đầu cuối được cung cấp trong các bản phân phối Linux, có thể nhìn thấy toàn bộ lịch sử của các lệnh bằng cách sử dụng các phím mũi tên (nếu có bất kỳ phương thức nào khác, tôi không biết về nó), vậy điều này xảy ra như thế nào?

Có nơi nào đó nơi thiết bị đầu cuối ghi lại tất cả các tổ hợp phím? Đây có phải là một số loại đệm? Nhưng, sau đó, một lần nữa, nếu nó là một bộ đệm, nó sẽ bị xóa sau một thời gian, phải không?

Làm thế nào để hệ thống này hoạt động?


viết lịch sử để nhận tất cả các lệnh đã sử dụng trước đó ..
Sukupa91

OP không hỏi về historylệnh mà là toàn bộ hệ thống ghi nhớ các lệnh cũ này hoạt động như thế nào.
Tarun

xin lỗi tôi đã hiểu sai ..
Sukupa91

2
Lưu ý ngoại lệ này: nếu lệnh bắt đầu bằng khoảng trắng, lệnh sẽ không kết thúc trong lịch sử.
Rinzwind

@Rinzwind, Nó được thêm vào lịch sử, nếu được bắt đầu bằng một khoảng trắng.
GC 13

Câu trả lời:


10

Đây là lịch sử lệnh và nó là một tính năng của shell chứ không phải là thiết bị đầu cuối.

Trên Ubuntu (và rất nhiều nếu không phải hầu hết các bản phân phối Linux khác), lớp vỏ mặc định để sử dụng tương tác là Bash ( /bin/bash). Bash giữ lịch sử của bạn, đó là một danh sách các lệnh cuối cùng tại ~/.bash_history. Khi bạn mở shell (thường bằng cách mở terminal), tệp này được đọc và tải vào lịch sử bên trong của shell này. Khi bạn đóng shell, các thay đổi sẽ được ghi lại vào tệp. Theo mặc định, điều này được giới hạn trong 500 lệnh cuối cùng.

Có một vài biến và tùy chọn shell có thể thay đổi hành vi của cách thức này hoạt động chính xác. Có một cái nhìn vào trang bash ( man bash) nếu bạn muốn biết thêm. Chỉ cần tìm kiếm LỊCH SỬ (nhập /^HISTORYvà xác nhận với Enter, chuyển sang tìm tiếp theo với n)

Ngoài ra, có khá nhiều phương pháp để đi vòng quanh lịch sử hơn là chỉ UpDown:

  • Ví dụ, nhấn Ctrl+ Rvà một phần của lệnh trước đó, bash sẽ tìm kiếm ngược trong lịch sử cho lệnh khớp, lặp lại nhấn Ctrl+ Rnếu trận đấu đầu tiên không phải là lệnh bạn đang tìm kiếm. (Xem 'Các lệnh để điều khiển lịch sử' trong trang bash)

  • Sao chép /etc/inputrcđến ~/.inputrcvà bỏ ghi chú dòng với history-search-forwardhistory-search-backwardtrong đó. Nếu bạn nhập các chữ cái đầu tiên của một lệnh và nhấn PgUp, bash sẽ chỉ hiển thị các lệnh từ lịch sử bắt đầu bằng cùng các chữ cái. (Chỉ hoạt động trong shell được mở sau khi thay đổi này được thực hiện)

  • !!thay vì một lệnh trên shell, điều này sẽ lặp lại lệnh cuối cùng (xem 'MỞ RỘNG LỊCH SỬ' trong trang bash để biết thêm thông tin về điều đó).


1
Và nếu bạn không muốn nó lưu lại lịch sử, hãy đưa unset HISTFILEvào ~ / .bashrc của bạn. Sau đó, nó sẽ chỉ giữ lịch sử trong bộ nhớ, xóa nó cho mỗi lần gọi shell mới.
một CVn

10

Lịch sử lệnh thường được lưu trữ trên cơ sở mỗi người dùng trong .bash_historytệp trong thư mục chính của bạn. Có nghĩa là, mỗi người dùng có một bộ lệnh riêng mà anh ta đã thực hiện.

Khi nhiều phiên thiết bị đầu cuối được mở, chúng có thể hiển thị cho bạn các lệnh khác nhau khi nhấn phím mũi tên, nhưng khi bạn đóng tất cả các cửa sổ đầu cuối, lịch sử từ phiên cuối khác nhau sẽ được hợp nhất vào một ~/.bash_historytệp chung .

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.