Cài đặt Zsh, hiểu rõ hơn, tối ưu và 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ệmBash
,Console
,Terminal
... hay thậm chí là sự khác nhau giữaLinux
vàLinux 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
rồixóa trắng cả màn hình Terminal
trong khi bạn phải giữ phímBack 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ấythoải mái
khi áp dụng chúng.
Bạn nào muốn tìm hiểu Zsh
luôn thì chuyển qua phần dưới đây !
Còn bây giờ, ta tìm hiểu một chút về họ hàng nhà shell
đã nhé ! 💪💪💪
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ânUnix 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ữngsai sót
của người sử dụng, shell đã được xây dựng thànhlớ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)
-> Thông dịch hay biên dịch ?
Thông dịch
- interpret nhé, chứ không phảibiên dịch
- compile. Điểm khác biệt giữa cách thức hoạt động của shell và trình biên dịch (compiler) đó là:-
Các chương trình shell sẽ làm nhiệm vụ thông dịch các lệnh của người dùng sang chương trình có sẵn trên hệ thống từ đó thực thi các chức năng tương ứng. Shell đọc các lệnh trong script
tuần tự
từ trên xuống, tìm vị trí các lệnh đó trong hệ thống để thực thi. -
Còn
compiler
sẽ biên dịch các lệnh trong script sang mộtdạng mà máy tính có thể hiểu được
, ví dụ mã máy và sinh ra một chương trình (program) tương ứng.Ví dụ: Trình compiler của C biên dịch từ file
.cpp
ra file.exe
. Sau đó hệ điều hành mới thực thi file.exe
đó.
-
-> 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
hayUbuntu
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ề bash
và zsh
nhé.
3. Tìm hiểu Bash
3.1 Thông tin cơ bản
-
Là
shell
được cài đặt mặc định trên các hệ thốngLinux
! -
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ặcVirual 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ímMũi tên trỏ lên trên
hoặcMũ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
- Những câu lệnh sẽ được thực thi khi
-
.bashrc
- Đây là file cấu hình của
bash
. - Mỗi khi bạn mở tab
Terminal
, cấu hình sẽ được cập nhật từ đây.
- Đây là file cấu hình của
-
3.2 Giao diện
-
Chuột phải vào
Terminal
, chọnPreferences
-
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.
-
Trên đây là custom mà tác giả quen dùng khi sài
bash
, trông có vẻ dịu mắt hơn.
3.3 Tùy biến
-
Bạn đã bao giờ thắc mắc về dòng chữ
[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âu trả lời là
CÓ
, chính ở file~/.bashrc
-
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
- Chúng ta cũng có thể tự tạo ra một file back_up riêng cho mình
4. Tìm hiểu Zsh
4.1 Cài đặt
Zsh là một trình shell rất mạnh mẽ có thể tương tác như là một trình thông dịch và tương thích với Bash
.
Oh-my-zsh là một plugin của Zsh dùng để thay đổi giao diện của Terminal
và hỗ trợ các plugin khác, hiện đang cung cấp hơn 200 plugins và hơn 140 themes được phát triển từ cộng đồng.
A delightful community-driven (with 1700+ contributors) framework for managing your zsh configuration. Includes nearly 300 optional plugins (rails, git, OSX, hub, capistrano, brew, ant, php, python, etc), over 140 themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.
Cài đặt szh:
sudo apt-get install zsh
cd
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
4.2 Cài đặt themes
Mình xin giới thiệu themes Agnoster - khá đẹp và dịu mắt mà mình đang sử dụng.
Hình ảnh demo trên trang chủ của họ, lưu ý là mình có thể custom được tất cả các font và color cho nó nhé !
Cài đặt qua các bước sau:
-
Install Powerline Font
cd
wget https://github.com/powerline/powerline/raw/develop/font/PowerlineSymbols.otf
wget https://github.com/powerline/powerline/raw/develop/font/10-powerline-symbols.conf
mkdir ~/.fonts/
#nếu chưa có thư mụcmv PowerlineSymbols.otf ~/.fonts/
mkdir -p .config/fontconfig/conf.d
#nếu chưa có thư mục -
Clear fonts cache
fc-cache -vf ~/.fonts/
-
Move config file
mv 10-powerline-symbols.conf ~/.config/fontconfig/conf.d/
-
Config ZSH
gedit ~/.zshrc
Thay đổi dòng
ZSH_THEME="robbyrussell"
thànhZSH_THEME="agnoster"
Restart Terminal
-
Change terminal color to Solarize
sudo apt-get install dconf-cli
git clone git://github.com/sigurdga/gnome-terminal-colors-solarized.git ~/.solarized
cd ~/.solarized
./install.sh
Mình chọn Option 1 (Dark themes) vì nó khá dịu mắt
Để active đc Dark themes thì phải chuột ở terminal
Profiles>Profiles Preferences>Colors
Text and Background Color >>> Built-in schemes: Solarized dark
Palette >>> Built-in schemes: Tango
Còn để thiết lập zsh là terminal mặc định trên Ubuntu:
-
Change directory color to Solarize
cd
wget https://raw.githubusercontent.com/seebi/dircolors-solarized/master/dircolors.ansi-dark
mv dircolors.ansi-dark .solarized
gedit ~/.zshrc
Thêm vào câu lệnh sau:
eval `dircolors ~/.solarized/dircolors.ansi-dark`
Khởi động lại Terminal và bạn đã có một Terminal hoàn hảo hơn rất nhiều !
Xem thử thành quả nào:
-
Không bao giờ cần đến câu lệnh
git branch
nữa nhé ! -
Đối với git, Oh-my-zsh hỗ trợ một phím tắt như sau:
gst
->git status
gco
->git checkout
gp
->git push
...Bạn có tham khảo thêm ở đây.
Hoàn hảo hơn chỗ nào nữa ? Hãy nhìn thêm bức ảnh sau.
- 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 bạn có thấy sự khác biệt gì chưa ?
- Và còn nhiều điều nữa, bạn tự cảm nhận nhé !
Note:
- Nếu như bạn cài zsh sau khi bạn cài ruby thì zsh sẽ không nhận được cấu hình cho ruby:
-
Cấu hình ruby (cài từ rvm) cho zsh, bạn thêm dòng sau vào file ~/.zshrc:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
-
Nếu bạn cài ruby từ rbenv, chạy các câu lệnh sau:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshenv
echo 'eval "$(rbenv init -)"' >> ~/.zshenv
echo 'source $HOME/.zshenv' >> ~/.zshrc
exec $SHELL
-
Chuyển đổi giữa zsh và bash:
Cũng khá đơn giản, các bạn làm như sau:
4.3 Cài đặt plugin
Như đã nói ở trên, zsh hỗ trợ rất nhiều plugin, bạn có thể tham khảo ở đây Chính bạn hãy tự sử dụng và trải nghiệm. Mình xin suggest plugin này:
- zsh-autosuggestions: Hiển thị gợi ý, auto suggest
4.4 Fix một số lỗi
Không mở tab với với current directory
nano ~/.zshrc
Thêm vào cuối file đoạn code sau:
# 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)"
5. Phím tắt
5.1 Tab
-
Ctrl + Alt + T
: Mở Terminal -
Ctrl + Shirt + T
: Mở Tab mới -
Ctrl + D
: Đóng tab hiện tại -
Alt + [1-> 9]
: Di chuyển đến tab số 1->9
5.2 Văn bản
-
Ctrl + W
: Xóa một từ -
Ctrl + U
: Xóa trắng 1 dòng -
Ctrl + L
: Xóa toàn màn hình -
Ctrl + R
: Hiển thị gợi ý trong khi gõ lệnh
5.3 Toàn chương trình
-
Ctrl + Super + Mũi tên lên
: Max size terminal -
Ctrl + Super + Mũi tên xuống
: Thu nhỏ kích thước terminal hoặc thu về task bar -
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 -
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
- Thời gian đầu mới sử dụng Terminal để lập trình RoR , mình mở rất nhiều của sổ Terminal, mỗi khi cần chuyển Terminal cũ để làm việc lại mất thời gian để mò xem nó ở đâu,
Alt + Tab
mỏi cả tay. - Sau đó mình sử dụng
Ctrl + Shirt + T
để mở tab mới trên cửa sổ hiện tại luôn. - Thường sẽ là 3 tab:
- Tab thứ nhất chạy
rails s
- Tab thứ hai chạy
rails c
- Tab thứ ba chạy
git
- Cố định vậy, mọi thứ có vẻ đã vào quy cũ, đỡ rối hơn rồi hehe.
- Tab thứ nhất chạy
Bạn có thể tham khảo thêm ở đây.
5.4 Tạo alias
Ví dụ: Khi bạn muốn ghi nhận tất cả thay đổi vào commit gần nhất mà không cần chỉnh sửa nội dung commit, bạn dùng câu lệnh sau:
git commit --amend --no-edit
Hơi dài phải không, bạn có thể tạo một alias cho nó, chỉ cần gõ gcne
chẳng hạn, câu lệnh trên sẽ được thực thi. Cách làm như sau:
gedit ~/.zshrc
alias gcne="git commit --amend --no-edit"
Mỗi lần bạn mở Terminal thì Shell sẽ load cấu hình từ file tương ứng.
Nếu bạn dùng Bash thì Shell sẽ load từ file ~/.bashrc
Nếu bạn dùng Zsh thì Shell sẽ load từ file ~/.zshrc
Do đó sau khi bạn sửa file config thì cần mở new terminal tab nhé !
Bạn có thể thiết kế bộ alias cho riêng mình rồi đấy !
Note: Bạn nên cẩn thận với con dao hai lưỡi này !
Nếu bạn tạo alias là alias git status="sudo rm -rf /"
rồi chạy thử thì sẽ được một bài học lớn đó.
Đừng thử khi chưa hiểu nhé
6. 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:
All Rights Reserved