Mẹo thao tác với lịch sử các lệnh đã được dùng trong UNIX/Linux shell
Unix
31
White

Lơi Rệ viết ngày 23/05/2015

UNIX cung cấp chức năng tra vấn history (những gì đã được nhập vào shell) rất dễ dàng và tôi sẽ giới thiệu sơ lược qua sau đây. Câu hỏi đầu tiên là tại sao lại cần tra vấn những gì trong quá khứ? Có nhiều áp dụng, có thể dùng để tìm lại những lệnh dài khó nhớ để tiết kiệm thời gian đánh lại hoặc dùng để kiểm tra xem có một user nào đó đã thực hiện những gì trên hệ thống, và còn nhiều ví dụ khác, mong các độc giả phản hồi thêm.

Tra vấn lịch sử

Chúng ta nhập vào trước 2 lệnh:

ls /
ls -la /tmp

2 lệnh trên sẽ được lưu vào history và có thể truy vấn với lệnh history:

history
16  ls /
17  ls -la /tmp

Các bạn có thể thấy là mỗi lệnh đều có con số đi trước đó, đây là ID của lệnh đã được nhập vào, và có thể được gọi theo shortcut như sau !<history line number>, vd:

!16

Lệnh trên sẽ gọi lại lệnh ls / cho bạn, quá lợi hại phải không?

Sẵn tiện tôi chỉ thêm một chiêu nữa, bây giờ bạn muốn gọi lại lệnh vừa mới đánh thì sao? Bạn có thể dùng phím lên để trỏ lại lệnh đã đánh và gõ Enter nhưng chúng ta có thể áp dụng lệnh ! trên cho trường hợp này:

!-1

Sử dụng -1 sẽ nói UNIX đi ngược dòng thời gian 1 dòng.

Xoá bỏ dấu vết lịch sử

Lịch sử không lúc nào cũng vẻ vang, có những trang tối và như các bạn đã thấy đá số những trang này đều bị xoá đi hoặc dấu đi, nếu bạn là hacker đột nhập vào hệ thống, thì nên dọn dẹp trước khi rời khỏi máy bị tấn công, dùng lệnh sau để xoá history:

history -c

Tìm kiếm dòng thời gian

Nếu bạn có cả trăm dòng lệnh đã đánh vào thì cách nào để tìm kiếm những gì đã đánh vào? Thực dụng nhất là sử dụng chức năng tìm kiếm text của Terminal bạn đang dùng, mình biết là GNOME Terminal hay OSX Terminal đều có chức năng này, tuy là hơi củ chuối vì tìm kiếm kiểu đó tìm toàn bộ text đang hiển thị trên terminal, nếu bạn khởi tạo terminal mới thì text đấy không tìm kiếm được nữa.

Cái gì mà in ra STDOUT thì grep tìm được

Có một cách khác hay hơn, đó là kết hợp với lệnh grep:

history | grep 'từ khoá cần tìm'

Lệnh trên tôi nói history trỏ toàn bộ output vào grep và nói grep trích ra từ khoá mà tôi cần tìm.

Sử dụng chức năng tìm kiếm của shell

Cách grep ở trên có lẽ vẫn còn chậm cho các thao tác vì vẫn phải đánh vào nhiều, mà tôi thì tôi khá là lười đánh tuy là tôi có mua rất nhiều bàn phím...

Cảm ơn thay là các shell đều cung cấp chức năng tìm kiếm history với lệnh Ctrl + r, gõ vào tổ hợp phím trên sẽ trả về prompt:

(reverse-i-search)`': bạn gõ từ khoá bạn muốn tìm ở đây

Bạn chỉ việc gõ vào từ khoá là shell sẽ trả về kết quả, trong trường hợp có trên một kết quả trả về thì bạn có thể di chuyển đến từ khoá trùng cũ nhất với tổ hợp Ctrl + r và mới nhất với Ctrl + s

Kết luận

UNIX cung cấp rất nhiều lệnh giúp thao tác dễ dàng, trong đó có lệnh history để tra vấn các lệnh đã được nhập vào. Hi vọng các bạn học được thêm một mẹo hay, mong các bạn tiếp tục học hỏi để lười biếng một cách thông minh.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Lơi Rệ

43 bài viết.
206 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
65 12
Sự sống còn của các công ty kỹ thuật phụ thuộc vào nguồn nhân lực chất xám của họ. Thế nên rất thiết yếu cho việc đầu tư xây dựng team có khả năng ...
Lơi Rệ viết gần 2 năm trước
65 12
White
38 7
Trời se se lạnh, Melbourne chuyển mùa, ngồi trong quán cafe bắt đầu một ngày làm việc mới với suy nghĩ tại sao các bạn Việt Nam không muốn tham gia...
Lơi Rệ viết gần 3 năm trước
38 7
White
36 15
Thế nào là làm việc từ xa? Internet, một trong những phát minh vĩ đại nhất của con người thế kỷ 20. Công nghệ này xoả bỏ rào cản vật lý giữa các n...
Lơi Rệ viết 2 năm trước
36 15
Bài viết liên quan
White
1 0
Sử dụng option I với xargs Với option I thì bạn có thể sử dụng place holder với biến được lấy ra từ xargs man của option này: I replacestr R...
LinhPT viết gần 2 năm trước
1 0
White
45 1
Chương 1. Tổng quan một hệ thống Linux Thiên chúa thấy mọi sự người đã làm, và thấy rằng nó đuợc làm rất tốt. Bible King James Version. Genesis 1:3...
Trần Đạt viết hơn 1 năm trước
45 1
White
17 1
Chương 2. Tổng quan về cây thư mục Chương này mô tả các phần quan trọng của cây thư mục trong Linux , dựa trên Tiêu chuẩn phân cấp cây thư mục Fil...
Trần Đạt viết hơn 1 năm trước
17 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
43 bài viết.
206 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!