Zsh 1 Trình shell vô đối (Phần 2)

Trong phần trước Zsh 1 trình shell vô đối (phần 1), mình đã giới thiệu với các bạn về Zsh và 1 số tính năng độc đáo của chương trình này. Trong phần này, mình xin tiếp tục giới thiệu 1 số chức năng độc đáo khác của Zsh.

7. Command/Process substitution (thay thế lệnh)

Thực ra cái này dịch thế nào thì mình không rõ, lên google thì nó dịch là thay thế lệnh! 😄 Nhưng mình xin phép sử dụng cả cụm từ **Command substitution **, nghe cho nó đỡ dị và có vẻ chuyên nghiệp hơn.

Command substitution trong Zsh có thể viết theo 2 kiểu. Kiểu thứ nhất là 1 command được viết trong dấu `...` để output của nó thay thế cho 1 phần trong command line. Đây là kiểu form được sử dụng trong các shell cũ.

zsh_2_0.png

Ngoài ra zsh còn cung cấp 1 kiểu form khác là $(...). Kiểu này dễ sử dụng nên thường được sử dụng nhiều hơn.

zsh_2_2.jpg

Tuy nhiên, thông thường thì việc sử dụng command substitution/ được thay thế bằng các cơ chế khác của zsh.

zsh_2_3.jpg

1 tên của command với dấu = ở trước được thay thế cho FULL PATH của nó. Đối với hầu hết mọi người thì đây là 1 việc khá tiện lợi. Tuy nhiên, nếu bạn cảm thấy bất tiện cho bạn thì bạn có thể tắt chế độ này đi bằng lệnh setopt noequals.

zsh_2_4.jpg

Một tính năng khác của zshprocess substitution (tạm dịch là: xử lý các chuỗi thay thế trong dòng lệnh)

zsh_2_5.jpg

1 command của form =(...) được thay bằng tên của file chứa output của command đó. Với tính năng process substitution của zsh, bạn có thể chỉnh sửa output của 1 command như ví dụ bên dưới.

zsh_2_6.jpg

Lúc này, shell sẽ tạo 1 file tạm (temporary file) để lưu nội dung và kết quả của command, và sẽ xóa chúng khi command kết thúc.

Từ zsh's man page, bạn có thể thấy thêm 1 số các form khác mà zsh cung cấp cho chức năng command substitution (như <(...)).

8. Aliasing

Aliasing là việc đặt 1 tên viết tắt cho 1 command . Những command hay được sử dụng thì được viết tắt thành 1 alias:

zsh_2_7.jpg

Trong ví dụ trên mình gán 1 tên viết tắt my_command cho cd ~/Downloads/. Khi gọi my_command, hệ thống sẽ link đến và chạy command cd ~/Downloads/.

**Aliases ** cũng được sử dụng để thay thế 1 command cũ hoặc định nghĩa 1 command mới.

zsh_2_8.jpg

Mỗi 1 shell khác nhau có 1 tập alias của shell đó. Tuy nhiên, zsh cũng có hầu hết các alias thông dụng (có thể được thay thế tại bất kì đâu trong 1 dòng command line). Các alias thông dụng có thể được sử dụng như cách viết tắt của usernames, hostnames, ...

zsh_2_9.jpg

9. History (lịch sử)

Có nhiều cách để thao tác với history trong zsh. 1 trong những cách đó là sử dụng cách xem history theo kiểu csh. 1 cách khác là sử dụng command fc. Ví dụ: khi bạn gõ 1 command bị lỗi:

zsh_2_10.jpg

Sử dụng lệnh fc, hệ thống sẽ mở 1 editor để bạn có thể chỉnh sửa command ấy. (mặc định hệ thống sử dụng vi).

zsh_2_11.jpg zsh_2_12.jpg

Biến thể của lệnh fcr. Lệnh r sẽ thực hiện lại command cuối mà bạn thực hiện, với các options thay đổi.

zsh_2_13.jpg ]

10. Command Line Editing

zsh's command line editor (ZLE) là 1 trình soạn thảo command line vô cùng mạnh mẽ, được thiết kế mô phỏng emacs hoặc vi (Mặc định là emacs). Để thiết lập chế độ sử dụng vi, gõ lệnh bindkey -v. Ngoài các chức năng soạn thảo cơ bản, shell cung cấp cho bạn phương thức để gọi lại dòng trước đó trong history. Trong chế độ sử dụng emacs, bạn sử dụng tổ hợp Control + P.

zsh_2_14.jpg

Trong nhiều trường hợp ZLE loại bỏ những thứ cần cho lệnh fc, khi mà nó đã quá mạnh để handle cả những command nhiều dòng. (multiline commands).

zsh_2_15.jpg

Bạn có thể tìm kiếm history bằng cách sử dụng tổ hợp phím ESC + P. 1 cách khác là sử dụng incremental search bằng tổ hợp phím Ctrol + R.

zsh_2_16.jpg

Để thoát chế độ search này, ấn phím ESC.

1 tính năng hữu dụng khác của ZLEauto complete. Bạn chỉ cần gõ 1 số chữ cái đầu của lệnh và ấn phím TAB, hệ thống tự động đưa ra gợi ý và hoàn thiện lệnh cho bạn.

zsh_2_17.jpg

Bạn có thể list các từ khóa gợi ý bằng cách nhập 1 số chữ cái đầu của lệnh và ấn tổ hợp Ctrol + D.

zsh_2_18.jpg

1 điểm đặc biệt nữa của zsh là bạn có thể custom danh sách các từ khóa để sử dụng trong auto complete hoặc gợi ý lệnh.

Phần tiếp theo mình sẽ giới thiệu đến các bạn về bindings, parameter substitution, Shell parameters, prompting, login/logout watching, options của zsh. Cảm ơn các bạn đã theo dõi!

Tài liệu tham khảo

An Introduction to the Z Shell