Nếu bạn là người dùng dòng lệnh Linux, bạn sẽ đồng ý rằng có những lúc bạn không muốn một số lệnh nhất định bạn chạy được ghi lại trong lịch sử dòng lệnh. Có thể có nhiều lý do cho việc này. Ví dụ: bạn đang ở một vị trí nhất định trong công ty của mình và bạn có một số đặc quyền mà bạn không muốn người khác lạm dụng. Hoặc, có một số lệnh quan trọng mà bạn không muốn chạy vô tình trong khi bạn đang duyệt danh sách lịch sử.

Nhưng có cách nào để kiểm soát những gì đi vào danh sách lịch sử và những gì không? Hay nói cách khác, chúng ta có thể bật chế độ ẩn danh giống như trình duyệt web trong dòng lệnh Linux không? Câu trả lời là có, và có rất nhiều cách để đạt được điều này, tùy thuộc vào chính xác những gì bạn muốn. Trong bài viết này, chúng tôi sẽ thảo luận về một số giải pháp phổ biến có sẵn.

Lưu ý : tất cả các lệnh được trình bày trong bài viết này đã được thử nghiệm trên Ubuntu.

Có nhiều cách khác nhau

Hai cách đầu tiên chúng tôi mô tả ở đây đã được đề cập đến trong một trong các bài viết trước của chúng tôi. Nếu bạn đã biết về chúng, bạn có thể bỏ qua chúng. Tuy nhiên, nếu bạn không biết, bạn nên đi qua chúng cẩn thận.

1. Chèn dấu cách trước lệnh

Đúng, ban đọc nó chính xác. Chèn một dấu cách vào đầu lệnh, và nó sẽ bị bỏ qua bởi shell, có nghĩa là lệnh sẽ không được ghi lại trong lịch sử. Tuy nhiên, có một sự phụ thuộc - giải pháp nói trên sẽ chỉ hoạt động nếu biến môi trường HISTCONTROL được đặt thành “bỏ qua” hoặc “bỏ qua”, theo mặc định trong hầu hết các trường hợp.

Vì vậy, một lệnh như sau:

 [không gian] echo "đây là một bí mật hàng đầu" 

Sẽ không xuất hiện trong lịch sử nếu bạn đã thực hiện lệnh này:

 xuất HISTCONTROL = bỏ qua không gian 

Ảnh chụp màn hình dưới đây là một ví dụ về hành vi này.

Lệnh “echo” thứ tư không được ghi lại trong lịch sử khi nó được chạy với một khoảng trống ngay từ đầu.

2. Vô hiệu hóa toàn bộ lịch sử cho phiên hiện tại

Nếu bạn muốn vô hiệu hóa toàn bộ lịch sử cho một phiên, bạn có thể dễ dàng làm điều đó bằng cách hủy biến môi trường HISTSIZE trước khi bắt đầu với công việc dòng lệnh của bạn. Để bỏ đặt biến chạy lệnh sau:

 xuất HISTFILE = 0 

HISTFILE là số dòng (hoặc lệnh) có thể được lưu trữ trong danh sách lịch sử cho một phiên bash đang diễn ra. Theo mặc định, biến này có giá trị được đặt - ví dụ: 1000 trong trường hợp của tôi.

Vì vậy, lệnh được đề cập ở trên sẽ đặt giá trị của biến môi trường là 0, và do đó không có gì sẽ được lưu trữ trong danh sách lịch sử cho đến khi bạn đóng terminal. Hãy nhớ rằng bạn cũng sẽ không thể nhìn thấy các lệnh chạy trước đó bằng cách nhấn phím mũi tên lên hoặc chạy lệnh history .

3. Xóa toàn bộ lịch sử sau khi bạn đã hoàn tất

Điều này có thể được xem như là một giải pháp thay thế cho giải pháp được đề cập trong phần trước. Sự khác biệt duy nhất là trong trường hợp này bạn chạy một lệnh SAU KHI bạn đã làm xong với tất cả công việc của mình. Thh sau đây là lệnh được đề cập:

 lịch sử -cw 

Như đã đề cập, điều này sẽ có tác dụng tương tự như giải pháp HISTFILE đã đề cập ở trên.

4. Tắt lịch sử chỉ cho công việc bạn làm

Trong khi các giải pháp (2 và 3) được mô tả ở trên thực hiện thủ thuật, họ xóa toàn bộ lịch sử, một thứ có thể không mong muốn trong nhiều tình huống. Có thể có trường hợp bạn muốn giữ lại danh sách lịch sử cho đến khi bạn bắt đầu công việc dòng lệnh của mình. Đối với các tình huống như vậy, bạn cần chạy lệnh sau trước khi bắt đầu với công việc của mình:

 [dấu cách] đặt + o lịch sử 

Lưu ý : [khoảng trắng] biểu thị khoảng trống.

Lệnh trên sẽ vô hiệu hóa lịch sử tạm thời, có nghĩa là bất cứ điều gì bạn làm sau khi chạy lệnh này sẽ không được ghi lại trong lịch sử, mặc dù tất cả các công cụ được thực thi trước lệnh trên sẽ ở đó vì nó nằm trong danh sách lịch sử.

Để kích hoạt lại lịch sử, hãy chạy lệnh sau:

 [Space] set -o history 

Điều này mang lại cho mọi thứ trở lại bình thường một lần nữa, có nghĩa là bất kỳ công việc dòng lệnh được thực hiện sau khi lệnh trên sẽ hiển thị trong lịch sử.

5. Xóa các lệnh cụ thể khỏi lịch sử

Bây giờ giả sử danh sách lịch sử đã chứa một số lệnh mà bạn không muốn được ghi lại. Điều gì có thể được thực hiện trong trường hợp này? Thật đơn giản. Bạn có thể tiếp tục và xóa chúng. Sau đây là cách thực hiện điều này:

 [không gian] lịch sử | grep "một phần của lệnh bạn muốn xóa" 

Lệnh trên sẽ xuất ra một danh sách các lệnh phù hợp (có trong danh sách lịch sử) với một số [num] đứng trước mỗi lệnh.

Khi bạn đã xác định lệnh bạn muốn xóa, chỉ cần chạy lệnh sau để xóa mục nhập cụ thể đó khỏi danh sách lịch sử:

 lịch sử -d [num] 

Ảnh chụp màn hình sau đây là một ví dụ về điều này.

Lệnh 'echo' thứ hai đã được gỡ bỏ thành công.

Ngoài ra, bạn có thể chỉ cần nhấn phím mũi tên lên để quay lại danh sách lịch sử và khi lệnh xuất hiện trên thiết bị đầu cuối, chỉ cần nhấn “Ctrl + U” để hoàn toàn trống dòng, xóa nó khỏi danh sách.

Phần kết luận

Có nhiều cách để bạn có thể thao tác lịch sử dòng lệnh Linux cho phù hợp với nhu cầu của bạn. Tuy nhiên, hãy nhớ rằng, thường không phải là cách hay để ẩn hoặc xóa lệnh khỏi lịch sử, mặc dù nó cũng không sai, nhưng bạn nên biết mình đang làm gì và có thể có tác dụng gì.