Tài liệu hướng dẫn (man page) của Zsh hiển thị thông tin về chỉnh sửa dòng lệnh.
Máy Tính

Nâng Tầm Hiệu Suất: Hướng Dẫn Chỉnh Sửa Dòng Lệnh Nâng Cao trong Terminal Linux

Bạn đã bao giờ làm việc với terminal Linux và ước rằng có một cách để quay lại các lệnh trước đó mà không cần phải gõ lại mọi thứ? Các shell Linux hiện đại cho phép bạn thực hiện chính xác điều đó với tính năng chỉnh sửa dòng lệnh (command-line editing). Đây là một kỹ thuật mạnh mẽ giúp bạn thao tác với các lệnh đã nhập một cách nhanh chóng và hiệu quả, giảm thiểu thời gian gõ phím và sửa lỗi. Thay vì phải vật lộn với những cú pháp phức tạp của lịch sử lệnh truyền thống, bạn có thể áp dụng các phương pháp chỉnh sửa quen thuộc từ các trình soạn thảo văn bản, biến terminal Linux thành một môi trường làm việc năng suất hơn đáng kể.

Chỉnh Sửa Dòng Lệnh (Command-Line Editing) Là Gì?

Chỉnh sửa dòng lệnh là một tính năng cho phép bạn gọi lại và sửa đổi các lệnh đã nhập bằng cách sử dụng các thao tác chỉnh sửa văn bản trực tiếp trong môi trường shell. Về cơ bản, nó hoạt động tương tự như việc bạn sử dụng các lệnh trong một trình soạn thảo văn bản. Vì các trình soạn thảo văn bản thường được sử dụng cùng với shell trong terminal, nhiều shell hiện đại đã cung cấp các tổ hợp phím tương tự như của các trình soạn thảo lớn, như Emacs và Vi.

Với chỉnh sửa dòng lệnh, bạn có thể dễ dàng di chuyển con trỏ trên dòng lệnh hiện tại, hoặc thậm chí duyệt qua và gọi lại các lệnh đã nhập trước đó trong lịch sử shell của mình, giống như cách bạn di chuyển trong một tập tin văn bản trong trình soạn thảo.

Tại Sao Nên Sử Dụng Chỉnh Sửa Dòng Lệnh?

Lý do chính để sử dụng chỉnh sửa dòng lệnh là vì nó hiệu quả hơn rất nhiều so với cơ chế lịch sử shell truyền thống. Mặc dù các lệnh lịch sử shell được giới thiệu cùng với BSD C shell rất hữu ích khi chúng được phát triển vào những năm 1980, nhưng giống như nhiều cấu trúc shell khác, chúng có thể khó nhớ và rườm rà.

Khi Unix ra đời, lịch sử shell ban đầu chỉ là một cuộn giấy, bởi vì các thiết bị đầu cuối ban đầu là máy in chữ từ xa, còn được biết đến với tên thương hiệu Teletype. Cơ chế lịch sử shell được phát minh cho BSD C shell cũng được thiết kế cho các thiết bị đầu cuối này, vì chúng vẫn còn phổ biến vào giữa đến cuối những năm 1970. Sau này, các thiết bị đầu cuối video cho phép chỉnh sửa và xóa ký tự, và một số lập trình viên đã nảy ra ý tưởng rằng bạn có thể duyệt qua lịch sử lệnh của mình và chỉnh sửa chúng tùy ý.

Tài liệu hướng dẫn (man page) của Zsh hiển thị thông tin về chỉnh sửa dòng lệnh.Tài liệu hướng dẫn (man page) của Zsh hiển thị thông tin về chỉnh sửa dòng lệnh.

Chúng ta đã đi một chặng đường dài từ những chiếc Teletype. Các lệnh lịch sử shell truyền thống thường mang tính biểu tượng và không trực quan. Ngược lại, các cơ chế chỉnh sửa dòng lệnh dựa trên các tổ hợp phím mà bạn có thể đã quen thuộc, như của Emacs hoặc Vi/Vim.

Bạn cũng có thể di chuyển trên dòng lệnh dễ dàng hơn rất nhiều với khả năng chỉnh sửa dòng lệnh. Nếu bạn nhận ra mình đã mắc lỗi ở phần đầu của lệnh, bạn có thể nhảy về đầu để sửa. Nếu bạn đang cố nhớ một lệnh đã chạy, bạn có thể thực hiện tìm kiếm để tìm nó. Bạn có thể nhảy đến một lệnh cũ và sau đó sửa đổi nó. Nếu bạn muốn thay đổi một lệnh, bạn chỉ cần di chuyển lên, thay đổi các lệnh hoặc tên tệp mà bạn muốn sử dụng, và sau đó thực thi lệnh.

Hãy xem việc sử dụng chỉnh sửa dòng lệnh giống như việc bạn di chuyển qua lịch sử lệnh shell của mình như thể nó là một tập tin văn bản.

Những Shell Nào Hỗ Trợ Chỉnh Sửa Dòng Lệnh?

Nhiều shell Linux hiện đại có sẵn trên các hệ thống Linux đều hỗ trợ chỉnh sửa dòng lệnh. Shell đã phổ biến khái niệm này là KornShell, được viết ban đầu vào những năm 1980 tại Bell Labs. Shell này, được đặt tên theo người tạo ra nó là David Korn, cung cấp khả năng cho người dùng chạy các lệnh tương tự như những lệnh được sử dụng trong các trình soạn thảo Emacs và Vi. Mô hình này phần lớn vẫn được sử dụng cho đến ngày nay trên các shell khác.

Bash cũng đã cung cấp tính năng chỉnh sửa dòng lệnh ngay từ đầu, cũng như Zsh. Với Bash, shell mặc định phổ biến nhất trên các bản phân phối Linux, hầu hết các bản phân phối Linux đều cung cấp nó ngay khi cài đặt. Các shell khác, như fish, cũng cung cấp tính năng này. tcsh, lấy cảm hứng từ C shell, cũng cung cấp các tính năng Vi và Emacs. Điều này có nghĩa là việc học các kỹ thuật chỉnh sửa dòng lệnh sẽ mang lại lợi ích dù bạn sử dụng shell nào.

Việc lựa chọn chế độ editor nào để sử dụng thường được thiết lập trong một biến môi trường hoặc lệnh cấu hình của shell.

Một thiết bị Teletype cổ điển bên cạnh màn hình video terminal trong bối cảnh retro.Một thiết bị Teletype cổ điển bên cạnh màn hình video terminal trong bối cảnh retro.

Hướng Dẫn Chỉnh Sửa Kiểu Emacs

Cách dễ nhất để bắt đầu với chỉnh sửa dòng lệnh là sử dụng chế độ Emacs, ngay cả khi bạn sử dụng một trình soạn thảo khác. Đây cũng là kiểu mặc định trên hầu hết các shell. Lý do là chế độ này có vẻ tự nhiên hơn, vì Emacs không phân biệt giữa chế độ lệnh (command mode) và chế độ chèn (insert mode) như Vi và Vim. Mặc dù trình soạn thảo yêu thích của tôi là Vim, nhưng tôi nghĩ bộ lệnh của nó phù hợp hơn để chỉnh sửa trong chương trình đó, và nó không hoạt động tốt bằng trong shell. Tôi sẽ minh họa tính năng chỉnh sửa dòng lệnh trong Zsh, shell mà tôi lựa chọn, nhưng chúng cũng sẽ hoạt động trong các shell khác như Bash.

Để thiết lập kiểu chỉnh sửa Emacs, bạn sẽ sử dụng một trong hai lệnh, tùy thuộc vào shell bạn đang dùng.

Trong Bash, gõ:

set -o emacs

Hoặc trong Zsh:

bindkey -e

Trên hầu hết các shell hiện đại, chỉnh sửa kiểu Emacs là mặc định.

Di Chuyển Trong Lịch Sử Lệnh và Dòng Lệnh

Các lệnh đầu tiên bạn nên thành thạo là di chuyển tới và lui trong lịch sử shell của mình. Bạn có thể sử dụng các phím mũi tên lên và xuống. Bạn cũng có thể sử dụng Ctrl+pCtrl+n để di chuyển tiến và lùi qua lịch sử của mình. Bạn có thể nhớ các ký hiệu này một cách dễ dàng vì “p” là viết tắt của “previous” (trước đó) và “n” là viết tắt của “next” (tiếp theo).

Hãy sử dụng các chữ cái viết thường, vì các ký tự viết hoa có ý nghĩa đặc biệt trong shell và ở khắp mọi nơi khác trong Linux.

Bạn cũng có thể sử dụng các phím mũi tên để di chuyển tiến và lùi trên dòng lệnh hiện tại. Ctrl+fCtrl+b di chuyển tiến và lùi. Một lần nữa, bạn có thể nhớ các ký hiệu này với “f” cho “forward” (tiến) và “b” cho “backward” (lùi). Tốt nhất là thử chúng vài lần để phát triển “cơ bắp quen thuộc”, đặc biệt là đối với những việc bạn thường xuyên làm. Việc sử dụng các phím mũi tên hoặc tổ hợp phím Ctrl+chữ cái là vấn đề sở thích và sự thoải mái cá nhân.

Tìm Kiếm Lệnh

Bạn có thể di chuyển tới lui trong lịch sử của mình, nhưng điều hữu ích là có thể tìm kiếm. Để tìm kiếm ngược trong lịch sử, nhấn Ctrl+r. Sau đó, bạn có thể bắt đầu gõ những gì bạn muốn tìm, và kết quả sẽ xuất hiện theo thời gian thực chứa chuỗi tìm kiếm đó. Chuỗi tìm kiếm sẽ được làm nổi bật. Nhấn Ctrl+r để lặp lại tìm kiếm ngược. Tìm kiếm xuôi là Ctrl+f và nó hoạt động tương tự. Khi bạn đến một lệnh trước đó, bạn có thể nhấn Enter để chạy lại hoặc bạn có thể chỉnh sửa nó. Bạn có thể muốn làm điều này nếu bạn muốn sử dụng một lệnh hoặc tên tệp khác.

Xóa Ký Tự và Dòng Lệnh

Bạn có thể xóa các ký tự trước đó bằng phím backspace, nhưng bạn cũng có thể xóa ký tự tiếp theo bằng cách nhấn Ctrl+d. Để xóa một từ, nhấn Meta+d (Meta key thường là phím Alt hoặc Escape). Để xóa toàn bộ dòng, nhấn Ctrl+k.

Di Chuyển Nhanh Đầu/Cuối Dòng và Theo Từ

Một thao tác tôi sử dụng rất nhiều là nhảy đến đầu và cuối dòng. Để đi đến đầu dòng, nhấn Ctrl+a. Để đi đến cuối dòng, nhấn Ctrl+e. Các lệnh này rất tiện dụng khi tôi nhận ra mình muốn thay đổi điều gì đó trong dòng đang làm việc, nhưng con trỏ lại gần một trong hai đầu dòng hơn.

Bạn cũng có thể di chuyển theo ranh giới từ thay vì chỉ di chuyển con trỏ riêng lẻ. Bạn có thể sử dụng phím Meta, thường là phím Alt hoặc Escape. Phím Meta sửa đổi các lệnh trước đó. Ví dụ, để di chuyển tiến một từ, nhấn Meta+f, và để lùi lại, nhấn Meta+b.

Hướng Dẫn Chỉnh Sửa Kiểu Vi

Bạn có thể sử dụng các tổ hợp phím kiểu Vi trong các shell hỗ trợ chỉnh sửa dòng lệnh, nhưng ngay cả khi tôi là người dùng Vim, tôi vẫn khuyên bạn nên cân nhắc các lệnh Emacs. Lý do chính là, không giống như trong Vim, không có chỉ báo trực quan nào cho biết bạn đang ở chế độ chèn (insert mode) hay chế độ lệnh (command mode). Tôi thấy các lệnh kiểu Vi không hoạt động tốt bằng trong shell. Emacs dường như phù hợp hơn với chỉnh sửa dòng lệnh, và việc sử dụng các lệnh kiểu Emacs làm mặc định có vẻ hợp lý.

Một máy tính xách tay chạy Ubuntu với cửa sổ Linux Terminal đang mở.Một máy tính xách tay chạy Ubuntu với cửa sổ Linux Terminal đang mở.

Tuy nhiên, nếu bạn thực sự muốn sử dụng các lệnh kiểu Vi, bạn có thể thiết lập chúng theo một trong hai cách:

set -o vi
bindkey -v

Các Chế Độ và Di Chuyển Cơ Bản

Trong chế độ Vi, bạn sẽ bắt đầu ở “insert mode” (chế độ chèn), nơi bạn gõ các lệnh shell. Để thoát sang chế độ lệnh (command mode), nơi bạn di chuyển, nhấn Escape. Để di chuyển lùi một ký tự, nhấn h. Để di chuyển tiến một ký tự, nhấn l. Để di chuyển lên trong các lệnh lịch sử trước đó, nhấn k. Để di chuyển xuống, nhấn j.

Hình ảnh minh họa cách di chuyển con trỏ trong Zsh với chế độ chỉnh sửa Vi.Hình ảnh minh họa cách di chuyển con trỏ trong Zsh với chế độ chỉnh sửa Vi.

Bạn có thể di chuyển tiến theo từ bằng phím w, và lùi bằng phím e khi ở chế độ nhập (input mode).

Tìm Kiếm và Xóa

Bạn có thể tìm kiếm ngược bằng phím ? trong chế độ lệnh, và tìm kiếm xuôi bằng phím /, tương tự như các lệnh tìm kiếm tiến và lùi.

Để xóa văn bản trong chế độ lệnh, hãy định vị con trỏ lên đó và nhấn phím d. Để xóa một từ, nhấn dw. Để xóa toàn bộ dòng, sử dụng “dd” bằng cách nhấn phím d hai lần.

Các lệnh này chỉ là một phần nhỏ trong số những gì có sẵn cho chỉnh sửa dòng lệnh trong các shell Linux hiện đại. Với đủ thực hành và rèn luyện các ngón tay, bạn sẽ có thể “bay” qua lịch sử lệnh của mình, chạy lại và chỉnh sửa các lệnh tùy ý. Điều này sẽ tăng tốc đáng kể việc sử dụng terminal Linux của bạn. Hãy bắt đầu khám phá và chia sẻ những thủ thuật chỉnh sửa dòng lệnh yêu thích của bạn trong phần bình luận bên dưới nhé!

Related posts

Cách Dùng AI Nghe Bài Viết: Tối Ưu Thời Gian Đọc Nội Dung Công Nghệ

Administrator

5 Dự Án Raspberry Pi Độc Đáo Bạn Nên Thử (Nếu Có Thời Gian Rảnh)

Administrator

7 Tựa Game Giải Đố Trên Trình Duyệt Miễn Phí Hay Nhất Bạn Không Nên Bỏ Lỡ

Administrator