Lab002: Tùy chỉnh giao diện dòng lệnh Windows Terminal và Linux CLI
"Nội dung của bài lab ngày hôm nay sẽ tập trung vào Terminal, nơi chúng ta làm việc chủ yếu trên hệ điều hành mã nguồn mở. Chúng ta sẽ cài đặt và tùy biến giao diện Windows Terminal thay cho PowerShell khô khan. Điều này sẽ mang cho chúng ta nhiều thông tin hơn khi gõ câu lệnh và giảm cảm giác chán nản khi thường xuyên phải cắm đầu vào đống chữ nghĩa nguệch ngoạc của mấy cái Terminal"
I. Tùy chỉnh giao diện dòng lệnh trên Windows
- Tại sao cần tùy chỉnh giao diện dòng lệnh: Để có thêm nhiều thông tin hơn so với giao diện dòng lệnh mặc định, để có thêm tính năng như lưu lịch sử câu lệnh và nhắc lệnh (rất tiện lợi).. Hoặc đơn giản hơn thì "Ở đây chúng tôi thích thế"
- Phạm vi áp dụng: PowerShell, WindowsTerminal, CLI của Ubuntu (tương tự trên Kali và các Distro khác)
- Bài hướng dãn gốc các bạn có thể tham khảo ở đây, xin cảm ơn sự chia sẻ của tác giả DynoNguyen
https://dynonguyen.com/tuy-chinh-windows-terminal-sieu-xin-xo/
Đại khái là sau khi tân trang chúng ta sẽ có kết quả như
hình:
1.1 Cài đặt Windows Terminal
Đầu tiên, chúng ta cài đặt WT thông qua Store:
Start -> gõ "store" -> Search -> gõ "terminal" -> chọn
phiên bản Windows Terminal mà bạn thích -> Get. Trong bài này, mình sẽ chọn phiên bản Windows Terminal Preview.
Khởi chạy Windows Terminal bằng cách:
Start -> gõ "ter" -> ..
Để tiện dùng thì ghim luôn vào taskbar:
Chuẩn bị xong rồi, chúng ta vào việc thôi.
Chuẩn bị xong rồi, chúng ta vào việc thôi.
1.2 Tùy chỉnh giao diện Windows Terminal
Bước 1: Truy cập vào trang web sau và chọn lấy 1 cái theme
ưng ý. Ở bước này hãy nhớ tên của theme và bấm "Get theme" để copy đoạn
code JSON.
https://windowsterminalthemes.devBước 2: truy cập
Windows Terminal Preview -> Setting -> Open JSON file. File JSON này là một file text chứa một phần cấu hình của WTP, chúng ta
sẽ
chèn thêm đoạn code lúc nãy vào file này.
Nhân tiện hãy mở tính năng Automaticaly
Copy khi bạn bôi đen text lên nhé, sẽ tiết kiệm được khá nhiều thời gian
trên WTP.
1.3 Cài đặt PowerLine cho WTP
Bước 1: tải và cài đặt Caskaydia Nerd Font tại trang web
dưới đây. Sau khi tải file .zip về, chúng ta giải nén và cài đặt
toàn bộ 4 file .ttf bằng cách
Chuột phải -> Install for All Users.
https://www.nerdfonts.com/font-downloads
Bước 2: cài đặt gói oh-my-posh bằng cách mở PowerShell với quyền
Administrator và chạy lần lượt 2 câu lệnh cài đặt sau. Nếu PowerShell có hỏi
gì thì cứ A (Yes to All) hoặc Y (Yes) là được:
Install-Module oh-my-posh -Scope AllUsersInstall-Module posh-git
Bước 3: chỉnh sửa profile của PowerShell bằng cách gõ câu lệnh
sau. PS sẽ hỏi
có muốn tạo mới tệp profile hay không -> Yes.
notepad $profile
Bước 4: dán đoạn mã sau vào profile và
lưu lại. Ở đây nhớ thay đổi tên Theme theo ý muốn của bạn, như trong trường
hợp này là Abernathy.
Import-Module posh-gitImport-Module oh-my-poshSet-PoshPrompt -Theme {<ThemeName>}
Sau đó chạy câu lệnh sau để
áp dụng các tham số này cho PowerShell và WTP. Bản chất của câu lệnh này chính là
thực thi tệp profile.ps1:
& $profile
Ở bước này có thể bạn sẽ gặp phải lỗi "Execution Policies" như
hình ảnh trên. Lỗi này do Windows mặc định không cấp quyền thực thi file
*.ps1 cho chúng ta. Để lấy quyền thực thi trong trường hợp này, ta
sẽ dùng câu lệnh như sau và chạy lại tệp profile.ps1:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned& $profile
Chi tiết về Execution Policies các bạn có thể tham khảo tại link sau:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-7.1
Sau khi được cấp quyền thực thi file profile.ps1 thì giao diện PowerLine đã lên hình rồi, nhưng vẫn lỗi font và lỗi kí tự. Để giải quyết lỗi này thì chúng ta chỉ cần chỉnh font chữ của Console về 1 trong các font Caskaydia Cove Nerd Font là xong.
Bây giờ chúng ta có thể tắt cửa sổ PowerShell đi, mở WTP lên và sẽ thấy giao diện PowerLine cũng đã được cài đặt cho WTP, công việc còn lại là chỉnh font chữ về họ Caskaydia nữa là ổn.
Ngoài ra thì vẫn còn một dòng cảnh báo do chúng ta đã khai báo module Git vào profile nhưng lại chưa cài đặt Git nên Console không thể tìm thấy module này. Git là công cụ mà sớm muộn chúng ta cũng sẽ dùng đến, vậy chúng ta chỉ cần tải và cài đặt Git tại địa chỉ này là đã giải quyết hết các lỗi cũng như cảnh báo trong quá trình cài đặt giao diện PowerLine.
https://git-scm.com/download/win
Sau đây chúng ta sẽ đến với phần cài đặt một công cụ khá hữu dụng là Auto-suggestion, thực chất công cụ này sẽ ghi nhớ lịch sử câu lệnh của chúng ta để đưa ra gợi ý câu lệnh trong tương lai, như vậy trong một số trường hợp thì sẽ giúp ta tiết kiệm được khá nhiều thao tác.
1.4 Thay đổi theme PowerLine
PowerLine được tích hợp khá nhiều theme đẹp mắt, để lựa chọn một theme phù hợp cho bản thân, chúng ta có thể ghé thăm trang web sau để tham khảo:
https://ohmyposh.dev/docs/themes
Ngoài ra OhMyPosh cung cấp cho chúng ta câu lệnh liên quan đến themes như sau:
Get-PoshThemes -list
Và câu lệnh set theme:
Set-PoshPrompt -Theme <ThemeName>
Vậy chúng ta thử đổi sang night-owl theme xem sao:
Set-PoshPrompt -Theme night-owl
Và tốt nhất là fix cứng vào tệp profile.ps1 như sau:
**
1.5 Cài đặt Auto-suggestion
Để cài đặt module này chúng ta sẽ lại mở PowerShell với quyền admin, thao tác đều tương tự như cài đặt PowerLine
Install-Module PSReadLine -RequiredVersion 2.1.0
Sau đó dùng lệnh "notepad $profile" để mở profile.ps1 và thêm vào 2 dòng code sau:
notepad $profile
Import-Module PSReadLineSet-PSReadLineOption -PredictionSource History
Và thực thi lại profile.ps1, ở đây chúng ta có thể hiểu profile.ps1 chính là tệp chứa một phần config của PowerShell và WindowsTerminal. Ta sẽ thử nghiệm hiệu quả của lời nhắc lệnh do công cụ này tạo ra bằng cách gõ phần đầu của một câu lệnh xem sao:
Chúng ta có thể thấy phần mình gạch chân là phần câu lệnh được gợi ý
**
II. Tùy chỉnh giao diện dòng lệnh trên Linux
Trong phần này, chúng ta sẽ tiếp tục với việc tùy chỉnh giao diện dòng lệnh trên Windows Sub-system for Linux. Để thực hiện bài Lab này, mình sẽ thực hiện trong kali-linux trên nền WSL.
Để khởi chạy kali-linux trong WSL, trước tiên ta sẽ kiểm tra những Distro Linux đang được cài đặt trên máy tính:
wsl --list --all
Và khởi chạy kali-linux như cách chúng ta đã làm quen trong bài Lab001. Sau đó dùng lệnh cd để đi đến thư mục gốc, tiếp tục dùng lệnh pwd để kiểm tra thư mục chúng ta đang đứng:
wsl -d kali-linuxcd ~/pwd
Bây giờ chúng ta se bắt đầu quá trình cài đặt và config PowerLine
2.1 Cài đặt PowerLine trên Linux
2.1.1 Update hệ thống và cài đặt các gói cần thiết
Đầu tiên chúng ta mở WindowsTerminal đã cài đặt ở bài Lab001 lên, sử dụng câu lệnh wsl --list --all để biết có các Distro Linux nào đã cài đặt trên máy và wsl -d <DistributionName> để khởi chạy một bản Linux theo ý muốn, trong trường hợp này ta sẽ thực hành trên kali-linux:
wsl --list --allwsl -d kali-linux
Tiếp theo, chúng ta sẽ cập nhật hệ thống bằng cách chạy lần lượt hai câu lệnh nhưng sử dụng kí tự nối để chỉ phải gõ một dòng lệnh. Câu lệnh này cần quyền SuperUser (RootUser) để có thể thực thi, vậy chúng ta cần "sudo" và gõ password đăng nhập:
sudo apt-get update && sudo apt-get upgrade
Tiếp theo chạy lần lượt 2 câu lệnh dưới đây để cài đặt gói PowerLine và NerdFont
sudo apt install zshsudo apt-get install powerline fonts-powerline
2.1.2 Clone mã nguồn của PowerLine
Ở bước này, chúng ta sẽ download mã nguồn của PowerLine về máy để thực hiện config về sau bằng câu lệnh:
git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
Giải thích:
- Ta có cú pháp câu lệnh git clone <link đến mã nguồn trên mạng> <file chứa mã nguồn ở trên máy do ta tự chỉ định>
- git clone là câu lệnh sẽ sao chép toàn bộ mã nguồn của một Project từ kho lưu trữ trên mạng (github) về máy tính của ta (local), việc nhân bản này cũng sẽ giữ nguyên hệ thống sắp xếp thư mục bên trong Project
- Với các tham số trên, Project này sẽ được lưu tại thư mục "~/.oh-my-zsh" tức là đường dẫn "/home/l/.oh-my-zsh". Ở đây chúng ta được tiếp xúc với thư mục hoặc tệp có tiền tố là dấu chấm "." như trên, mặc định chúng ta sẽ không thể list ra folder và file dạng này bằng câu lệnh ls nhưng vẫn có thể cd vào thư mục đó để tiến hành thao tác như bình thường.
Ồ, hệ thống báo lỗi không hiểu câu lệnh "git" nghĩa là gì, đó là do chúng ta chưa cài đặt gói "git". Để có thể thực thi được câu lệnh này, hãy tiến hành cài đặt gói như sau:
sudo apt-get install git
và chạy lại câu lệnh git clone sẽ được kết quả như sau:
Sau khi đã tạo được bản sao của Project PowerLine trên máy local, ta sẽ tạo một tệp config mới để tiến hành cấu hình cho PowerLine trong phần tiếp theo. Tệp config thực chất là 1 tệp văn bản, trong đó chứa các setting của đối tượng cần cấu hình và được viết theo cú pháp nhất định, tùy từng ứng dụng.
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
Giải thích:
- Câu lệnh "cp": có chức năng copy một folder / file với cú pháp cp <file nguồn> <file đích> Vậy chúng ta có thể hiểu ý nghĩa câu lệnh trên như sau: hãy copy file "zshrc.zsh-template" tại thư mục "~/.oh-my-zsh/templates/" thành file ".zshrc" đặt trong thư mục "~/" !!!!! Các huynh đệ hiểu cả chứ?!? Nếu chưa thì cũng chả sao, điều đó chứng tỏ thần kinh của chúng ta hoàn toàn bình thường, đấy là thầy tôi bảo thế.
- Chú ý tiếp theo: để sử dụng câu lệnh copy được chính xác, đối với cả file nguồn và file đích, chúng ta nên viết rõ toàn bộ đường dẫn. Tới đây ta đã thấy sự hữu ích của việc thay thế "/home/l" bằng "~/" sẽ tiết kiệm được nhiều thao tác và tránh sai sót trong quá trình thực hiện.
Clone source code của gói PowerLevel9k về máy local bằng câu lệnh git clone:
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
**
2.2 Config và tùy chỉnh CLI
Ở phần trên, chúng ta đã hoàn thành việc cài đặt các gói cần thiết. Vậy ở phần này, chúng ta sẽ thực sự tùy chỉnh giao diện dòng lệnh bằng các config như sau.
Đối với tệp "~/.zshrc" đã tạo ở trên, ta sử dụng trình soạn thảo Nano để chỉnh sửa nội dung:
cd ~/sudo nano ~/.zshrc
Lúc này, chúng ta đã mở và xem được nội dung có sẵn do nhà phát triển viết trong file config. Nếu bạn nhìn thấy nội dung tương tự như thế này thì từ đầu đến giờ chúng ta đã làm đúng, còn nếu không thì hãy comment cho mình, chúng ta sẽ cùng san bằng tất cả =)))
Tiếp theo, kéo xuống cuối nội dung file config và dán đoạn mã sau vào
ZSH_THEME="powerlevel9k/powerlevel9k"POWERLEVEL9K_DISABLE_RPROMPT=true POWERLEVEL9K_PROMPT_ON_NEWLINE=true POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="▶" POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=""
Để thoát và lưu nội dung thì chúng ta cần làm theo đúng thao tác của trình soạn thảo Nano như sau:
- Nhấn tổ hợp Ctrl + X
- Nano sẽ hỏi bạn có muốn lưu nội dung vừa chỉnh sửa hay không -> nhấn "y"
- Nano sẽ hỏi để xác nhận tên file bạn muốn lưu, ở đây chúng ta không có nhu cầu đổi tên file config nên chỉ cần Enter là xong
Vậy là bạn đã thành công sử dụng trình soạn thảo Nano để chỉnh sửa nội dung một file text rồi đấy.
Đến đây chúng ta sẽ làm thao tác cuối cùng: chuyển đổi giao diện mặc định của Kali-linux sang giao diện PowerLine mà chúng ta cài đặt bằng câu lệnh sau:
chsh -s /bin/zsh
Sau đó, "khởi động lại" hệ thống Linux của chúng ta bằng cách thoát ra ngoài WindowsTerminal và đăng nhập lại Kali-linux
exit
Các bạn đã thấy CLI của Kali-linux thay đổi chưa, ở đây mình đã gõ thêm câu lệnh pwd và cd để xem theme này hiển thị ra sao?!? Nhưng nếu bạn vẫn chưa vừa ý với style này của PowerLine, vậy hãy cùng chỉnh sửa lại một chút nhé.
Cũng giống như tùy chỉnh WindowsTerminal, chứng ta sẽ vào trang web của OhMyZsh để chọn một theme ưng ý. Lần này mình sẽ chọn theme Jispwoso làm ví dụ:
https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
Ở đây, ví dụ như bạn muốn đổi sang theme Jispwoso chẳng hạn, chúng ta sẽ chỉnh sửa trực tiếp vào file config của PowerLine như sau: Mở WindowsTerminal -> đăng nhập vào Kali-linux -> vào thư mục gốc -> gõ lệnh la để list ra các file / folder ở đây, trong đó chú ý file .zshrc chính là file config của PowerLine cần chỉnh sửa:
Tiếp tục sử dụng trình soạn thảo Nano để chỉnh sửa file .zshrc bằng câu lệnh:wsl -d kali-linuxcd ~/la
nano ~/.zshrc
Khi mở được file .zshrc ta cần chú ý config tại mục ZSH_THEME="<ThemeName>":
Hiện tại theme mặc định là robbyrussell và chúng ta sẽ thử đổi sang jispwoso xem sao:
Để lưu nội dung vừa chỉnh sửa, chúng ta cần làm đúng thao tác của trình soạn thảo Nano như mình đã hướng dẫn: Ctrl + X -> y (Yes) -> Enter. Và sau đó hãy logout khỏi Kali-linux rồi login lại để xem sự thay đổi:
**
2.3 Cài đặt Syntax Highlighting
Để cài đặt tính năng nhắc lỗi câu lệnh, chúng ta sẽ clone gói ZSH Syntax Highlighting về máy local, cụ thể là về thư mục gốc của chúng ta bằng hai câu lệnh sau:
cd ~/git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "$HOME/.zsh-syntax-highlighting" --depth 1
nano ~/.zshrc
Kéo xuống dưới cùng nội dung của file config và dán đoạn mã sau vào. Sau đó lưu nội dung file config bằng thao tác mình đã huớng dẫn ở các phần trước (Ctrl+X -> y -> Enter)
source $HOME/.zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Sau đó chúng ta sẽ "khởi động lại" hệ thống bằng cách exit khỏi Kali-linux và dùng câu lệnh wsl để đăng nhập trở lại. Chúng ta sẽ kiểm nghiệm hiệu quả của Syntax Highlighting bằng cách thử gõ câu lệnh bất kì, ví dụ như "sudo apt update".
Lúc này, đối với phần câu lệnh được gõ hoàn chỉnh sẽ có dấu gạch chân để xác nhận.
Đối với phần câu lệnh chưa hoàn chỉnh, ta sẽ được cảnh báo bởi chỉ thị màu đỏ:
Vậy là chúng ta đã thành công tùy chỉnh giao diện dòng lệnh sao cho dễ nhìn và mang lại nhiều thông tin hơn trên cả 2 môi trường là WindowsTerminal và WSL Kali-linux. Ở bài lab sau chúng ta sẽ tiếp tục thực hành một nghiệp vụ cơ bản trên hệ điều hành là Scripting.
**
Nhận xét
Đăng nhận xét