Viblo Code
+48

Cài Oh My Zsh, Powerlevel10k, tối ưu và sử dụng phím tắt cho Terminal

1.Mở đầu

  • Đã bao giờ bạn:

    👉 Rất ngại phải gõ lệnh trên Terminal.

    👉 Cảm thấy bối rối với các khái niệm Bash, Console, Terminal ... hay thậm chí là sự khác nhau giữa LinuxLinux Mint.

    👉 Nhìn thấy giao diện Terminal ở đâu đó rất đẹp, màu sắc hài hòa trong khi của mình thấy chữ nào cũng giống nhau.

    👉 Đã bao giờ bạn thấy đống nghiệp ấn phím tắt nào đó xóa trắng cả màn hình Terminal trong khi bạn phải giữ phím Back Space để xóa từng kí tự một.

  • Vậy thì hôm nay,

    ✌️ Chúng ta sẽ cùng tìm hiểu cách tùy chỉnh, tối ưu cho Terminal

    ✌️ Hi vọng sẽ giúp các bạn tiết kiệm đôi chút thời gian và cảm thấy thoải mái khi áp dụng chúng.

Trước tiên, ta tìm hiểu một chút xem Terminal từ đâu mà ra đã nhé ! 💪💪💪

Bạn nào muốn tìm hiểu Oh My Zsh luôn thì chuyển qua Phần 4: Tìm hiểu Zsh !

2. Shell

2.1 Shell là gì ?

  • Shell là một trình thông dịch dòng lệnh phát triển dành cho các máy tính chạy hệ điều hành có nhân Unix và Linux.
  • Nó cung cấp giao diện người dùng dưới dạng văn bản nằm giữa bạn và Linux (hay nói chính xác hơn là giữa bạn với nhân hệ điều hành).

-> Chức năng của Shell là gì ?

  • Việc thao tác trực tiếp tới phần nhân Linux là rất phức tạp và đòi hỏi ký thuật cao, để trách sự phức tạp cho người sử dụng và để bảo vệ nhân HĐH từ những sai sót của người sử dụng, shell đã được xây dựng thành lớp bao quanh nhân. Thuật ngữ Shell xuất phát từ nghĩa đen của nó (Shell -> Vỏ).
  • Người sử dụng gửi yêu cầu tới shell, chức năng chính của Shell là thông dịch chúng và sau đó gửi tới nhân HĐH.
  • Các lệnh này người dùng có thể nhập trực tiếp (khi bạn gõ lệnh trên Terminal chẳng hạn) hoặc thông qua dạng script (chạy file .sh)

-> Một vài thông tin khác

  • Ngay khi user đăng nhập vào hệ thống, user đã sử dụng 1 shell nào đó. Shell là phương thức cơ bản mà user có thể tương tác với hệ thống, Shell giấu đi các chi tiết phức tạp bên dưới của hệ điều hành mà người dùng không thấy được.

  • Trên Mac OS X hay Ubuntu thì chương trình Shell có tên là Terminal.

  • Hoặc khi bạn tạo kết nối SSH tới máy chủ thì bạn cũng đang sử dụng chương trình Shell trên remote server (thường gọi là Console).

-> Okie, đó là lý do vì sao sinh ra thằng Shell, shell ở đâu thì gọi là Terminal, ở đâu thì gọi là Console, cơ bản là thế 👉👀👌

2.2 Các loại Shell

Trong thế giới Unix/Linux có rất nhiều loại Shell.

  • Shell Bourne (SH)

    Do Steven Bourne viết, đó là Shell nguyên thuỷ có mặt trên hầu hết các hệ thống Unix/Linux…

    Nó rất hữu dụng cho việc lập trình Shell nhưng nó không xử lý tương tác người dùng như các Shell khác.

  • Bourne Again Shell (Bash)

    Thuộc nhóm Bourne Shell được viết bởi Brian Fox trong khuôn khổ một dự án của GNU cho việc thay thế sh, được công bố rộng rãi vào khoảng 1989.

    Đây là phần mở rộng của sh, nó kế thừa những gì sh đã có và phá huy những gì sh chưa có.

    Nó có giao diện lập trình rất mạnh và linh hoạt…Cùng với giao diện lệnh dễ dung…

    Đây là Shell được cài đặt mặc định trên các hệ thống Linux, Mac OS X, Darwin hiện nay.

  • Shell C (CSH)

    Đáp ứng tương thích cho người dùng.

    Nó hỗ trợ rất mạnh cho những Programmer C và với đặc tính tự động hoàn thành dòng lệnh

  • Zsh

    Đây là shell được đánh giá là mạnh nhất trong thời gian gần đây.

    Hỗ trợ rất nhiều những tính năng cực mạnh, nhưng việc cài đặt lại rất đơn giản.

Ngoài ra còn có một số Shell khác như: ssh, nfssh, mcsh

Sau đây chúng ta sẽ tìm hiểu về bashzsh nhé.

3. Tìm hiểu Bash

3.1 Cơ bản

  • shell được cài đặt mặc định trên các hệ thống Linux !

  • Ctrl + Alt + T: Phím tắt để mở Terminal

  • Giao diện của em nó đây các bác, nhìn quen nhỉ 😂

  • Gõ câu lệnh:

    ls -la ~/ | grep bash
    

    để liệt kê ra một số file cấu hình của bash.

  • Ta có thể dùng nano, vim, gedit hoặc Virual Studio Code để mở các file trên và xem chi tiết, cụ thể như sau:

    • .bash_history

      • Lưu lại lịch sử gõ lệnh
      • Trên màn hình Terminal, ấn phím Mũi tên trỏ lên trên hoặc Mũi tên trỏ xuống dưới để chuyển qua câu lệnh trước đó.
      • Note: Sau khi bạn thoát Terminal thì nội dung file này mới được cập nhật.
    • .bash_logout

      • Những câu lệnh sẽ được thực thi khi shell exits
    • .bashrc

      • Đây là file cấu hình của bash.
      • Sẽ được đọc lên mỗi khi bạn mở tab Terminal mới

3.2 Giao diện

  • Chuột phải vào Terminal, chọn Preferences

  • Ta có các tabs sau: Text / Colors / Scrolling / Command / Compatibility

  • Cứ lần lượt đi từng tab một, đọc hiểu và tùy biến chúng.

  • Dưới đây là custom mà tác giả quen dùng khi sài bash.

    Trông có vẻ dịu mắt hơn (Mấy cái icon trên góc phải có vẻ khác khác là do mình cài theme Mac OS lên Ubuntu đó nhé ! )

3.3 Tùy biến

  • Bạn đã bao giờ thắc mắc về dòng chữ hiện ở phía trước con trỏ chuột ([email protected]:~$) chưa ? Liệu chúng ta có thể thay đổi nội dung và màu sắc của nó không ?

    Có chứ, chính ở biến PS1 trong file ~/.bashrc.

    PS là viết tắt của Prompt Statement, ngoài ra còn có PS2, PS3, PS4 ở những vị trí khác.

  • Có 2 cách để sửa các PSx:

    • Cách 1: Sửa file ~/.bashrc, cập nhật giá trị của biến PS1="Hello World"

      Rồi gõ source ~/.bashrc hoặc khởi động lại Terminal để reload PS1

    • Cách 2: Export trực tiếp luôn

      export PS1="\[email protected]\H >"  // trong đó \u: user_name, \H: host_name, @: kí tự đặc biệt.
      

  • Một vài tùy chỉnh phổ biến khác:

    • \d: Ngày tháng năm

    • \j: Số lượng jobs mà được quản lý bởi shell

    • \n: Dòng mới

    • \s: Loại shell đang sử dụng (bash, zsh, ...)

    • \t: Thời gian (giờ:phút:giây)

    • \@: Giờ với định dạng 12-hour (AM/PM)

    • \A: Giờ với định dạng 24-hour

    • \v: BASH version

    • \w: Đường dẫn tới thư mục làm việc hiện tại. (Nếu là $HOME thì sẽ hiển thị ~)

    • \w: Tên của thư mục làm việc hiện tại. (Nếu là $HOME thì sẽ hiển thị ~)

    • \$: Nếu người dùng là root thì dấu nhắc lệnh sẽ hiển thị là #, còn không thì $

  • Chỉnh màu:

    export PS1="\e[0;36m\[email protected]\h \W\$\e[0m"
    

    Trong đó:

    • \e[: Bắt đầu sử dụng tùy chỉnh màu từ đây

    • 0;36m: Mã màu, trong đó:

      • Trước dấu phẩy

        • 0 – Bình thường
        • 1 – In đậm
        • 2 – Làm mờ
        • 4 – Gạch chân
      • Sau dấu phẩy

        • 30 – Black
        • 31 – Red
        • 32 – Green
        • 33 – Brown
        • 34 – Blue
        • 35 – Purple
        • 36 – Cyan
        • 37 – Light gray
    • \[email protected]\h \W\$: Đoạn text hiển thị

    • \e[0m: Kết thúc tùy chỉnh màu ở đây

  • Note:

    • Nếu như bạn sửa cấu hình cho bash ở file này, mà lỗi lầm hết cả, muốn khôi phục về mặc định thì bản gốc có ở đây nhé:

      ls -la /etc/skel
      cp /etc/skel/.bashrc ~/
      

    • Chúng ta cũng có thể tự tạo ra một file back_up riêng cho mình

      cp ~/.bashrc ~/.bashrc_bak
      

4. Tìm hiểu Zsh

4.1 Cơ bản

  • Cài đặt

    sudo apt-get install zsh
    

    Nếu muốn dùng zsh làm cài đặt mặc định thì

    chsh -s $(which zsh)
    

    Logout rồi login lại là được

  • Tương tự bash, bạn có thể mở lên và xem file ~/.zshrc xem cài đặt của zsh có gì hay.

  • Chuyển đổi giữa zshbash

    Cũng khá đơn giản, chỉ cần gõ:

  • Nhìn chung thì dùng Zsh mượt và sướng hơn.

    • Tính năng gợi ý

      Ấn cd rồi ấn tabs, tabs, tabs ... để cảm nhận thử sự khác biệt.

    • Tính năng tự động sửa lỗi

    • Tối ưu performance, chạy nhanh hơn

    • Rồi còn nhiều nữa, các bạn có thể xem thêm ở đây

4.2 Plugin & theme

  • Có tới hàng trăm plugins, themes cho Zsh, việc cài đặt và quản lý chúng bằng cơm có vẻ khó khăn.

  • Thế là bác Robby Russell mới nghĩ ra code một plugin, dùng nó để quản lý tất cả các plugin và theme khác, đó chính là Oh-my-zsh, được cộng đồng đánh giá khá cao.

  • Danh sách mà Oh my zsh hỗ trợ quản lý:

  • Cài đặt Oh my zsh

    cd
    sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
    
  • File cấu hình

    Lúc này, kiểm tra lại file ~/.zshrc sẽ thấy nội dung cũ của file đã được comment hết, thay vào đó.

    export ZSH="/home/trevn/.oh-my-zsh"
    ZSH_THEME="robbyrussell" // Dòng này để chỉ ra theme robbyrussell đang được sử dụng
    plugins=(git) // Dòng này để liệt kê các plugins đang sử dụng, hiện có git.
    source $ZSH/oh-my-zsh.sh // Câu này dùng để load cấu hình cho oh-my-zsh, bạn có thể mở file này lên xem thử.
    

4.2.1 Cài đặt plugin

  • Vầy là lúc này, Terminal đã được cài plugin git, để xem có gì xịn xò:

    • api-gateway: Tên thư mục

    • dev: Tên branch

    • Alias:

      Thay vì gõ git status thì chỉ cần gõ gst là đủ.

    • Còn nhiều điều lý thú nữa ở đây

  • Ngoài ta, còn một plugin nữa khá hay ho nên tham khảo là zsh-autosuggestions.

    • Plugin này gợi ý cho bạn câu lệnh bạn đang gõ, dựa trên lịch sử và số lần hoàn thành.

    • Cập nhật danh sách như sau plugins=(git zsh-autosuggestions)

    • Và cái kết

    • Nhấn mũi tên để đồng ý gợi ý này.

4.2.2 Cài đặt theme

  • Và mặc định đang sử dụng theme robbyussell

  • Mình thấy theme này cũng khá ổn rồi, bên cạnh đó giang hồ cũng hay đồn 2 themes xịn xò sau:

    • Agnoster

      Sửa ZSH_THEME="robbyrussell" thành ZSH_THEME="agnoster"

      Đúng như khuyến nghị, theme này tối ưu cho những người hay dùng Git.

      Có sự khác biệt ở màu nền của vùng hiển thị tên branch khi mình thêm file mới.

      Sau khi gõ git add ., có icon + kìa.

      Sau khi commit sẽ thấy có sự khác biệt !

    • Powerlevel10k

      Hướng dẫn cài đặt

      git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
      ZSH_THEME="powerlevel10k/powerlevel10k"
      

5. Phím tắt

5.1 Tab

  1. Ctrl + Alt + T: Mở cửa sổ Terminal mới

  2. Ctrl + Shirt + T: Mở Tab Terminal mới trên cửa sổ Terminal hiện tại

  3. Ctrl + D: Đóng tab Terminal hiện tại

  4. Alt + [1-> 9]: Di chuyển đến tab Terminal số 1->9

5.2 Văn bản

  1. Ctrl + W: Xóa một từ

  2. Ctrl + U: Xóa trắng 1 dòng

  3. Ctrl + L: Xóa toàn màn hình

  4. Ctrl + R: Hiển thị gợi ý trong khi gõ lệnh

5.3 Toàn chương trình

  1. Ctrl + Super + Mũi tên lên: Max size terminal

  2. Ctrl + Super + Mũi tên xuống: Thu nhỏ kích thước terminal hoặc thu về task bar

  3. Ctrl + Super + Mũi tên trái: Hiện thị terminal với 1 nửa màn hình bên trái

  4. Ctrl + Super + Mũi tên phải: Hiện thị terminal với 1 nửa màn hình bên phải

5.4 Tạo alias

  • Thay vì cần gõ câu lệnh dài như này

    git commit --amend --no-edit

  • Thì mình chỉ cần gán bí danh cho nó.

    alias gcn!=git commit --amend --no-edit
    

    Từ đó về sau, chỉ cần gõ gcn! là được.

  • Vầy là chúng ta có thể tự tạo một bộ alias cho mình nhé !

  • Cài đặt theo cách trên chỉ khả dụng trong tabs Terminal hiện tại.

    Để lâu dài thì cần sửa file ~/.bashrc hoặc ~/.zshrc, thêm vào dòng sau:

    alias gcn!='git commit --amend --no-edit'
    

6. Fix một số lỗi

  • Không mở tab mới với current directory

    # emulate bash PROMPT_COMMAND (only for zsh)
    precmd() { eval "$PROMPT_COMMAND" }
    # open new terminal in same dir
    PROMPT_COMMAND='pwd > "${HOME}/.cwd"'
    [[ -f "${HOME}/.cwd" ]] && cd "$(< ${HOME}/.cwd)"
    
  • Không tải được nvm

    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
    

7. Phím tắt trong Google Chrome

Như đã nói ở đầu bài viết, mình xin chia sẻ một vài phím tắt mình mong là sẽ hữu dụng và giúp ích các bạn, có một chút tương tự như đối với Terminal:

Bạn có thế tìm kiếm tất tần tật ở đây. Mình liệt kê một số phím tắt hay dùng.

Ctrl + Shirt + N: Mở tab ẩn danh

Ctrl + T: Mở Tab mới

Alt + D sau đó Alt + Enter: Nhân đôi tab hiện tại

Ctrl + W hoặc Ctrl + F4: Đóng tab hiện tại

Ctrl + R / F5: Reload trang

Ctrl + H: Mở trang Lịch sử trong tab mới

Ctrl + J: Mở trang hiển thị list các tài nguyên đã tải xuống trong tab mới

Ctrl + U: Hiển thị mã nguồn HTML không thể chỉnh sửa của trang hiện tại


Ctrl + Super + Mũi tên lên: Max size GC

Ctrl + Super + Mũi tên xuống: Thu nhỏ kích thước GC hoặc thu về taskbar

Ctrl + Super + Mũi tên trái: Hiện thị GC với 1 nửa màn hình bên trái

Ctrl + Super + Mũi tên phải: Hiện thị GC với 1 nửa màn hình bên phải

Ctrl + Shift + B: Hiển thị hoặc ẩn thanh Dấu trang


Ctrl + -: Phóng to trang

Ctrl + -: Thu nhỏ trang

Ctrl + 0: Trả lại mọi nội dung trên trang về kích thước mặc định

Ctrl + 9: Mở tab cuối cùng

Alt/Ctrl + [1-> 9]: Di chuyển đến tab số 1->9


Alt + D hoặc Ctrl + L: Bôi đen đường link trên URL

Ctrl + E: Search với Google

Nhập tên trang web + Ctrl + Enter -> Thêm www. và .com vào tên trang web rồi mở trang web đó trong tab hiện tại

Nhập cụm từ tìm kiếm + Alt + Enter -> Mở tab mới và thực hiện tìm kiếm trên Google.


Alt + Mũi tên trái: Mở trang trước từ lịch sử duyệt web của bạn trong tab hiện tại

Alt + Mũi tên phải: Mở trang tiếp theo từ lịch sử duyệt web của bạn trong tab hiện tại

Ctrl + Shift + Delete: Xóa dữ liệu duyệt web

Shift + F5 hoặc Ctrl + Shift + r: Tải lại trang bỏ qua dữ liệu được lưu trong cache.

F: Full màn hình youtube.

Tham khảo:

  1. https://google.com
  2. https://phoenixnap.com/kb/change-bash-prompt-linux
  3. https://viblo.asia/p/terminal-bot-te-nhat-va-de-su-dung-voi-terminator-va-zsh-tren-ubuntu-pDOKjkrXzPr

All Rights Reserved