VPS

Zsh và Oh My Zsh: terminal dễ dùng hơn

Thanh Nguyễn Đăng 9 phút đọc 5 khối lệnh

Zsh và Oh My Zsh: terminal dễ dùng hơn
Mục lục bài viết
  1. Cài trong ba phút
  2. Ba plugin đáng bật, và chỉ ba
  3. Giữ cho phiên mở nhanh
  4. Vài dòng cấu hình đáng thêm
  5. Mang cấu hình theo mọi máy chủ
  6. Ba phần mở rộng đáng bật, và chỉ ba
  7. Đo thời gian mở phiên và cắt bớt
  8. Với máy chủ: cân nhắc trước khi cài
  9. Vài dòng cấu hình đáng thêm hơn cả phần mở rộng
  10. Câu hỏi thường gặp
  11. Bài viết liên quan

Trả lời nhanh: Oh My Zsh là bộ cấu hình sẵn cho shell Zsh, đem lại ba thứ bạn cảm nhận ngay trong ngày đầu: gợi ý lệnh dựa trên lịch sử, tự hoàn thành thông minh cho đường dẫn và tham số, và dòng nhắc hiển thị nhánh Git đang đứng. Cái giá là mỗi lần mở phiên mới chậm hơn một chút, và chậm nhiều hay ít phụ thuộc vào việc bạn bật bao nhiêu plugin. Ba plugin là đủ cho hầu hết mọi người.

Người làm việc qua SSH cả ngày gõ hàng trăm lệnh, và phần lớn là lệnh đã gõ tuần trước. Shell mặc định không giúp gì trong chuyện đó. Zsh cùng bộ cấu hình quen thuộc của nó biến việc gõ lại thành việc bấm mũi tên, và đó là khác biệt cộng dồn rất lớn theo thời gian.

Cài trong ba phút

TerminalCài trong ba phútbash
sudo apt update && sudo apt install -y zsh git curl # Cai bo cau hinhsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" # Doi shell mac dinh cho tai khoan cua banchsh -s $(which zsh)

Đăng xuất rồi vào lại là thấy dòng nhắc mới. Nếu bạn đang dùng phiên tmux, nhớ tạo cửa sổ mới chứ cửa sổ cũ vẫn giữ shell cũ.

Một lưu ý an toàn hay bị bỏ qua: chỉ đổi shell cho tài khoản cá nhân của bạn. Đừng đổi shell của tài khoản hệ thống mà dịch vụ đang chạy dưới quyền, vì nhiều script khởi động giả định đang chạy trên shell chuẩn và có thể hỏng theo cách khó đoán.

Ba plugin đáng bật, và chỉ ba

Mở file ~/.zshrc, tìm dòng khai báo plugin:

TerminalBa plugin đáng bật, và chỉ babash
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)

Hai plugin sau phải tải về trước:

TerminalBa plugin đáng bật, và chỉ babash
git clone https://github.com/zsh-users/zsh-autosuggestions   ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestionsgit clone https://github.com/zsh-users/zsh-syntax-highlighting   ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

git cho một loạt lệnh tắt và hiển thị nhánh trên dòng nhắc. zsh-autosuggestions gợi ý phần còn lại của lệnh dựa trên lịch sử, bấm mũi tên phải là chấp nhận, đây là plugin tiết kiệm thời gian nhất trong ba cái. zsh-syntax-highlighting tô màu lệnh: đỏ nghĩa là gõ sai tên lệnh, thấy màu là biết trước khi bấm Enter.

Đừng bật hai chục plugin cho đủ bộ. Mỗi plugin nạp thêm mã ở mỗi lần mở phiên, và trên máy chủ nhỏ thì độ trễ đó rất dễ nhận ra.

Giữ cho phiên mở nhanh

Ba nguyên nhân thường gặp khiến terminal chậm hẳn khi mở:

Chủ đề dòng nhắc quá nặng. Những chủ đề hiển thị đủ thứ trạng thái phải chạy nhiều lệnh trước khi vẽ dòng nhắc. Trong thư mục Git lớn, mỗi lần bấm Enter phải chờ. Chủ đề mặc định hoặc một chủ đề gọn thường là lựa chọn tốt hơn trên máy chủ.

Quá nhiều plugin. Đo bằng cách chạy time zsh -i -c exit, dưới nửa giây là thoải mái, trên một giây là đáng cắt bớt.

Kiểm tra cập nhật tự động. Bộ cấu hình định kỳ hỏi máy chủ xem có bản mới không. Trên máy chỉ dùng qua SSH, bạn có thể tắt hoặc giãn chu kỳ trong file cấu hình.

Nếu bạn dùng phiên làm việc dài với tmux như trong bài tmux, độ trễ mở phiên ít phiền hơn vì bạn không mở lại thường xuyên. Nhưng nó vẫn cộng dồn mỗi lần chia thêm khung.

Vài dòng cấu hình đáng thêm

TerminalVài dòng cấu hình đáng thêmbash
# Lich su dai va dung chung giua cac phienHISTSIZE=50000SAVEHIST=50000setopt SHARE_HISTORYsetopt HIST_IGNORE_ALL_DUPS # Go ten thu muc la tu chuyen vaosetopt AUTO_CD # Lenh tat hay dungalias ll='ls -alh'alias gs='git status -sb'alias dc='docker compose'

Dòng lịch sử dùng chung đáng chú ý nhất: mở hai khung tmux thì lệnh gõ ở khung này tìm lại được ở khung kia ngay lập tức, thay vì phải đóng phiên mới ghi ra file.

Về lệnh tắt, quy tắc là chỉ đặt cho lệnh bạn thật sự gõ nhiều lần mỗi ngày. Đặt hai chục lệnh tắt xong quên sạch là chuyện rất hay xảy ra, và tệ hơn là khi sang máy chưa cấu hình bạn lại quên mất lệnh gốc.

Mang cấu hình theo mọi máy chủ

Cài lại bằng tay ở mỗi máy mới thì chỉ vài lần là chán. Cách đúng là đưa ~/.zshrc vào repo cấu hình cá nhân theo bài dotfiles, rồi máy mới chỉ cần clone và chạy script cài đặt.

Một mẹo nhỏ cho phần khác biệt giữa các máy: để cuối file .zshrc một dòng nạp file riêng nếu tồn tại, và file riêng đó không nằm trong repo. Nhờ vậy phần chung dùng ở mọi nơi, còn đường dẫn hay biến môi trường của từng máy thì để riêng.

Nếu bạn dựng máy chủ mới thường xuyên, ghép bước này vào danh sách việc ban đầu trong bài 12 việc sau khi nhận VPS là gọn nhất.

Ba phần mở rộng đáng bật, và chỉ ba

Phần mở rộngNó làm gìVì sao đáng
Gợi ý lệnh theo lịch sửGợi ý phần còn lại của lệnh khi bạn gõTiết kiệm nhiều thao tác nhất
Tô màu cú pháp lệnhLệnh sai hiện màu khác trước khi bạn bấm EnterChặn lỗi gõ sai lệnh
Nhảy nhanh tới thư mục hay dùngGõ vài ký tự là tới đúng thư mụcRất tiện khi làm nhiều dự án

Lời khuyên: dừng ở ba phần mở rộng này. Bật nhiều hơn làm phiên dòng lệnh mở chậm hẳn, và đó là thứ bạn cảm nhận mỗi lần mở cửa sổ mới, nhiều chục lần mỗi ngày.

Đo thời gian mở phiên và cắt bớt

TerminalĐo thời gian mở phiên và cắt bớtbash
# Do thoi gian mo phientime zsh -i -c exit # Duoi 0,3 giay: tot# Tren 1 giay: da qua nang, phai cat bot # Tim phan lam cham: bat che do do thoi gian# Them dong dau tep cau hinh: zmodload zsh/zprof# Them dong cuoi tep cau hinh: zprof# Mo phien moi va doc ket qua # Ba nguyen nhan pho bien nhat:# 1. Qua nhieu phan mo rong# 2. Nap cong cu quan ly phien ban ngon ngu o dau tep cau hinh# 3. Goi lenh mang trong tep cau hinh

Với máy chủ: cân nhắc trước khi cài

  • Máy chủ chạy dịch vụ thật: giữ vỏ dòng lệnh mặc định. Thêm phần mềm vào máy chủ là thêm thứ phải cập nhật và thêm bề mặt tấn công.
  • Máy chủ dùng làm nơi làm việc: cài được, và đáng cài vì bạn gõ lệnh trên đó cả ngày.
  • Đừng cài cho người dùng gốc. Cài cho tài khoản làm việc của bạn.
  • Với nhiều máy chủ: đưa cấu hình vào kho dùng chung để mỗi máy mới chỉ cần chạy một lệnh. Xem bài về mang cấu hình theo mọi máy chủ.

Vài dòng cấu hình đáng thêm hơn cả phần mở rộng

  • Tăng số dòng lịch sử lệnh và bật chia sẻ lịch sử giữa các phiên.
  • Bỏ lệnh trùng khỏi lịch sử, để tìm lại nhanh hơn.
  • Đặt bí danh cho các lệnh dài bạn gõ hằng ngày. Đây là thứ tiết kiệm thời gian thật, hơn mọi giao diện đẹp.

Câu hỏi thường gặp

Zsh và Oh My Zsh khác nhau thế nào?

Zsh là shell, tức chương trình nhận lệnh của bạn. Oh My Zsh là bộ cấu hình và plugin chạy trên Zsh, giúp bạn khỏi phải tự viết hàng trăm dòng cấu hình. Dùng Zsh trần vẫn được, chỉ là phải tự làm phần tiện nghi.

Có làm máy chủ chậm đi không?

Không ảnh hưởng tới dịch vụ đang chạy vì đây chỉ là shell của phiên đăng nhập. Thứ chậm đi là thời gian mở phiên mới, và mức độ phụ thuộc vào số plugin cùng chủ đề dòng nhắc bạn chọn.

Nên dùng chủ đề dòng nhắc nào?

Trên máy chủ, hãy chọn chủ đề gọn hiển thị đủ thư mục hiện tại và nhánh Git. Những chủ đề vẽ nhiều thông tin trạng thái phải chạy thêm lệnh trước mỗi dòng nhắc, và trong repo lớn thì cảm nhận rất rõ.

Đổi shell cho tài khoản root có nên không?

Không nên. Giữ tài khoản quản trị hệ thống ở shell chuẩn để mọi script khởi động và công cụ hệ thống hoạt động đúng như thiết kế. Cấu hình tiện nghi chỉ nên đặt cho tài khoản cá nhân bạn dùng hằng ngày.

Chia sẻ:Facebook

Thanh Nguyễn

TND

Tư vấn bản quyền, VPS và máy chủ kèm hóa đơn VAT, hợp đồng đầy đủ cho doanh nghiệp.