Hướng dẫn lệnh lịch sử Linux cho người mới bắt đầu (8 ví dụ)

theanh

Administrator
Nhân viên
Nếu công việc của bạn liên quan đến việc chạy các công cụ và tập lệnh trên dòng lệnh Linux, tôi chắc chắn rằng có rất nhiều lệnh bạn sẽ chạy mỗi ngày. Những người mới làm quen với dòng lệnh nên biết rằng có một công cụ - được gọi là history - cung cấp cho bạn danh sách các lệnh bạn đã thực hiện trước đó.

Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của lệnh history bằng một số ví dụ dễ hiểu. Nhưng trước khi làm điều đó, cần phải đề cập rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 16.04LTS.

Lệnh lịch sử Linux​

Nếu bạn biết cách sử dụng hiệu quả lịch sử dòng lệnh, bạn có thể tiết kiệm được rất nhiều thời gian hàng ngày. Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách sử dụng lệnh lịch sử để mang lại lợi ích cho mình.

Câu hỏi 1. Lệnh history hoạt động như thế nào?​

Cách sử dụng cơ bản rất đơn giản - chỉ cần thực hiện lệnh 'history'.
Mã:
history


Vì vậy, bạn có thể thấy các lệnh đã chạy trước đó của mình được hiển thị trong đầu ra. Lưu ý rằng tôi đã sử dụng lệnh 'more' để đảm bảo màn hình đầu ra bị tạm dừng ở trang đầu tiên (đầu ra đầy đủ của 'history' thường rất dài).

Câu hỏi 2. Làm thế nào để lịch sử hiển thị cả ngày và giờ?​

Nếu bạn muốn lệnh history hiển thị ngày và giờ thực hiện cho từng lệnh, bạn có thể thực hiện việc này bằng cách xuất biến HISTTIMEFORMAT theo cách sau:
Mã:
export HISTTIMEFORMAT="%F %T: "
Vậy là xong. Bây giờ khi bạn chạy lệnh 'history', bạn sẽ thấy thông tin ngày và giờ trong đầu ra.



Trong trường hợp bạn thấy ngày và giờ giống nhau đối với tất cả các lệnh, giải thích sau sẽ giúp bạn hiểu rõ hơn:
Mã:
Nếu bạn đặt HISTTIMEFORMAT trong bash, các mục nhập mới của bạn sẽ được lưu trữ trong tệp lịch sử với 
dấu thời gian, các lệnh cũ hơn không có dấu thời gian (các lệnh trước khi bạn đặt HISTTIMEFORMAT 
sẽ hiển thị một dấu thời gian giống nhau (tôi cho rằng dấu thời gian từ mục nhập đầu tiên được tìm thấy có 
dấu thời gian thực).

Vấn đề này sẽ tự khắc được giải quyết sau khi toàn bộ lịch sử của bạn được được cập nhật trong vài ngày nữa.

Bạn có thể xem trong ~/.bash_history để xem dòng đầu tiên có dấu thời gian là gì. 
Đó là những dòng bắt đầu bằng # theo sau là số (hiện tại) gồm 10 chữ số.

Câu hỏi 3. Làm thế nào để lịch sử dừng ghi lại các lệnh?​

Nếu có tình huống phát sinh mà bạn không muốn hệ thống lưu lịch sử lệnh của mình, thì bạn có thể thực hiện việc này bằng cách sử dụng biến HISTSIZE. Chỉ cần xuất nó với giá trị bằng không là xong.

Xem ví dụ sau:



Vì vậy, bạn có thể thấy, việc chạy lệnh 'history' hiện không tạo ra bất kỳ kết quả nào.

Lưu ý rằng cũng có một biến HISTFILESIZE.Đây là sự khác biệt giữa hai biến:
Mã:
HISTSIZE là số dòng hoặc lệnh được lưu trữ trong bộ nhớ trong danh sách lịch sử trong khi phiên 
bash của bạn đang diễn ra.

HISTFILESIZE là số dòng hoặc lệnh (a) được phép có trong tệp lịch sử khi khởi động 
thời điểm của phiên và (b) được lưu trữ trong tệp lịch sử khi kết thúc phiên bash của bạn để sử dụng trong
các phiên trong tương lai.

Câu hỏi 4. Làm thế nào để lịch sử không ghi lại một lệnh duy nhất?​

Bạn có thể thực hiện việc này bằng cách đặt biến HISTCONTROL thành 'ignorespace'. Bạn có thể thực hiện theo cách sau:
Mã:
export HISTCONTROL=ignorespace
Bây giờ, bất cứ khi nào bạn chạy một lệnh mà bạn không muốn được ghi lại trong lịch sử, chỉ cần thực hiện lệnh đó với một khoảng trắng ở đầu.

Câu hỏi 5. Làm thế nào để thực hiện tìm kiếm lịch sử nhanh?​

Tất nhiên, bạn có thể sử dụng lệnh grep để tìm kiếm các từ khóa hoặc lệnh cụ thể trong đầu ra do lệnh history tạo ra. Tuy nhiên, cũng có một phương pháp nhanh hơn nhiều: reverse-i-search.

Khá dễ dàng - tất cả những gì bạn phải làm là nhấn CTRL+R khi đang ở trên dòng lệnh, và bạn sẽ thấy lời nhắc của mình chuyển thành thứ gì đó như thế này:



Bây giờ hãy nhập từ khóa bạn muốn tìm kiếm và bạn sẽ thấy các gợi ý phù hợp từ lịch sử ở bên phải. Ví dụ, tôi đã nhập 'man' (không có dấu ngoặc kép) và kết quả đầu tiên tôi nhận được là 'man apropos'.



Nếu đây không phải là những gì bạn đang tìm kiếm, bạn có thể nhận được kết quả khớp tiếp theo bằng cách nhấn CTRL+R một lần nữa. Vì vậy, trong trường hợp của tôi, kết quả tiếp theo tôi nhận được là 'man find search.'



Bạn có thể tiếp tục tìm kiếm theo cách này. Khi bạn nhận được kết quả mong muốn, chỉ cần nhấn phím mũi tên phải và bạn sẽ nhận được toàn bộ lệnh trên dấu nhắc của mình.



Bây giờ bạn có thể chạy lệnh này hoặc sử dụng theo bất kỳ cách nào bạn muốn.

Câu hỏi 6. Làm thế nào để chạy lệnh trước đó?​

Có hai cách dễ dàng để bạn có thể chạy lệnh đã thực thi gần đây nhất: nhấn CTRL+P hoặc chạy lệnh sau:
Mã:
!!
Bạn không tin (đặc biệt là cách thứ hai)? Hãy thử xem.

Trong trường hợp yêu cầu là thực thi nhanh lệnh cuối cùng thứ hai, bạn có thể thực hiện theo cách sau:
Mã:
!-1
Vân vân và vân vân.

Câu hỏi 7. Làm thế nào để lịch sử bỏ qua các mục trùng lặp trong đầu ra?​

Điều này có thể được thực hiện bằng cách đặt biến HISTCONTROL thành 'ignoreboth' và 'erasedups.' Bạn có thể thực hiện theo cách sau:
Mã:
echo HISTCONTROL=ignoreboth:erasedups
Bây giờ khi bạn chạy lệnh history, đầu ra sẽ không chứa các mục trùng lặp.

Câu hỏi 8. Làm thế nào để xóa lịch sử?​

Nếu bạn muốn xóa lịch sử hiện tại để có thể bắt đầu lại, hãy sử dụng tùy chọn dòng lệnh -c.
Mã:
history -c

Kết luận​

Bạn có thể đồng ý rằng history là một lệnh rất quan trọng mà bạn nên biết. Trong hướng dẫn này, chúng tôi đã thảo luận về một số mẹo/thủ thuật quan trọng để tận dụng tối đa công cụ này. Sau khi thực hành những mẹo này, hãy đến trang hướng dẫn của công cụ để biết thêm thông tin.
 
Back
Bên trên