Computer >> Hướng Dẫn Máy Tính >  >> Xử Lý Sự Cố >> Linux

Cách Tạo Aliases Và Shell Functions Trên Linux

Biết lệnh và script shell vẫn cần thiết để tận dụng tối đa GNU/Linux. Càng làm việc trên dòng lệnh, càng nhận ra hầu hết lệnh dùng là tập hợp nhỏ của các lệnh có sẵn. Công việc thường lặp lại, chạy cùng cách mỗi ngày.

Cách Tạo Aliases Và Shell Functions Trên Linux

Các công cụ phổ biến đã rút gọn tên lệnh (ls thay list, cd thay change-directory). Nhiều user lặp lại một lệnh nhiều lần. Gõ/sao chép lại lại giảm năng suất và mất tập trung.

Hai cách mạnh mẽ giảm thời gian dòng lệnh: shell aliases và functions, giúp tự động hóa tác vụ lặp lại, rút gọn quy trình dài, tùy chỉnh lệnh với tùy chọn thường dùng.

Bạn tự định nghĩa lệnh phù hợp nhu cầu, giảm gánh nặng tác vụ lặp.

Aliases và shell functions làm việc tương tự: đặt tên cho một tập chức năng Bash shell, gọi bằng tên đã đặt. Gõ tên dễ dàng hơn gõ toàn bộ lệnh mỗi lần.

Khác biệt: độ phức tạp và quy mô. Functions phù hợp cho đoạn code dài, phức tạp. Aliases lý tưởng cho lệnh ngắn gọn.

Shell Aliases

Alias là shortcut tùy chỉnh tham chiếu lệnh hoặc tập lệnh với tùy chọn. Tên thay thế dễ nhớ cho lệnh dài hay dùng. Khi gõ lệnh, shell tra danh sách alias. Nếu khớp, thay thế bằng nội dung alias, rồi thực thi lệnh kết quả.

Có thể bạn đã dùng alias vì hầu hết distro Linux thêm sẵn alias phổ biến trong file .bashrc của user.

Vượt qua alias: Shell functions

Khối code tương tự nhưng không giống hệt không thể dùng alias. Alias không xử lý lỗi, không trả mã thoát tùy chỉnh, không điều khiển luồng, không dùng biến. Cần những đó -> dùng shell functions.

Shell functions là khối code cấu trúc như sub-script hoàn chỉnh, viết một lần, gọi từ script nào cần.

Cú pháp alias:

Tạo alias trong bash rất trực tiếp. Cú pháp:

alias alias_name="command_to_run"

Tạo alias mới trong phiên hiện tại:

  1. Gõ "alias"
  2. Khai báo tên alias
  3. Dấu bằng
  4. Lệnh chạy khi gọi alias.

Lệnh phải trong ngoặc kép, không khoảng trắng quanh dấu bằng. Khoảng trắng làm hỏng lệnh. Mỗi alias khai báo trên dòng mới.

Ví dụ: lệnh ls thường dùng với la (liệt kê tất cả file ẩn, định dạng long). Tạo alias ll cho ls -la.

  1. Mở terminal
  2. Gõ:
    alias ll="ls -la"
    Enter Cách Tạo Aliases Và Shell Functions Trên Linux
  3. Gõ "ll" Enter
  4. Cách Tạo Aliases Và Shell Functions Trên Linux
  5. Kết quả giống ls -la.

Alias ll chỉ có hiệu lực trong phiên shell hiện tại. Đóng phiên hoặc mở terminal mới -> alias mất.

Cách Tạo Aliases Và Shell Functions Trên Linux

Sau sẽ nói cách làm alias vĩnh viễn. Ví dụ cho bash shell, nhưng khái niệm và code hầu như áp dụng cho shell khác.

Alias định sẵn (Predefined Aliases)

Một số alias đã định sẵn. Xem danh sách tất cả alias hệ thống: lệnh alias không tham số.

alias

Đây là alias trên máy Ubuntu test. Alias tùy chỉnh cũng hiện ở đây.

Nhiều alias cho ls, nhóm alias cho màu output grep (grep --color=auto). Ví dụ gõ grep thực chất chạy grep --color=auto.

Định nghĩa alias grep:

alias grep='grep --color=auto'
  1. Lệnh alias định nghĩa alias.
  2. Tên alias: "grep".
  3. Dấu bằng nối tên với body alias. Body thường trong ngoặc đơn.
  4. Body alias: đoạn chạy khi dùng alias trên dòng lệnh.
  5. Body này gọi grep với tùy chọn --color=auto.

Alias Alert

Đầu danh sách có alias phức tạp alert. Dùng để báo khi lệnh xong, thành công hay thất bại. Cảnh báo đồ họa góc màn hình.

Ví dụ: sleep 5; alert (ngủ 5s rồi gọi alert). Alias kiểm tra lệnh trước, lấy lệnh cuối từ history, xác định thành công/h thất bại, hiện cảnh báo.

sleep 5; alert
Cách Tạo Aliases Và Shell Functions Trên Linux

Sau 5s, hiện cảnh báo:

Cách Tạo Aliases Và Shell Functions Trên Linux

Icon cửa sổ terminal nhỏ -> thành công. Thử lệnh chắc chắn.fail:

DoomedToFail; alert
Cách Tạo Aliases Và Shell Functions Trên Linux

Cảnh báo hiện icon lỗi đỏ.

Cách Tạo Aliases Và Shell Functions Trên Linux

Định nghĩa alias đơn giản

Dùng lệnh alias. Tạo bí danh cho clear: alias cls gọi clear.

Alias đơn giản không cần ngoặc đơn. Phức tạp hơn hoặc có khoảng trắng -> bọc ngoặc đơn. Định nghĩa alias, dùng ls tạo output, dùng cls xóa màn hình.

alias cls=clear
ls -l
cls
Cách Tạo Aliases Và Shell Functions Trên Linux

Màn hình xóa. Thành công nhưng ngắn hạn. Alias chỉ sống khi terminal mở. Đóng cửa sổ -> alias biến mất.

Làm alias vĩnh viễn bằng file .bashrc

Alias định sẵn ở đâu? File .bashrc trong thư mục home. File này đọc và thực thi khi mở terminal (interactive shell).

Xem nội dung .bashrc với highlight cú pháp:

gedit .bashrc
Cách Tạo Aliases Và Shell Functions Trên Linux

Mở gedit với .bashrc.

Cách Tạo Aliases Và Shell Functions Trên Linux

Vùng highlight显示两处定义别名的地方。

Cuộn xuống thấy hai phần khác liên quan alias:

Cách Tạo Aliases Và Shell Functions Trên Linux

Phần đầu: định nghĩa alias alert. Phần hai: câu lệnh if. Dịch: "nếu file .bash_aliases tồn tại, đọc nó".

Nếu ít alias, để trong .bashrc (dưới phần alias ls). Nếu nhiều alias hoặc muốn tách file, dùng .bash_aliases. Lợi ích: không vô tình sửa .bashrc, dễ copy sang hệ thống mới.

Đặt tên alias dễ nhớ, thêm comment để tham khảo sau.

Lưu alias trong file .bash_aliases

File .bash_aliases không tồn tại mặc định, tự tạo:

touch .bash_aliases
Cách Tạo Aliases Và Shell Functions Trên Linux

Chỉnh sửa thêm alias:

gedit .bash_aliases
Cách Tạo Aliases Và Shell Functions Trên Linux

Thêm ba alias: cls (dùng trước), h. (history), ftc (file type count). ftc phức tạp, bọc ngoặc đơn, dùng pipe sắp xếp đếm phần mở rộng file.

Lưu .bash_aliases, alias chưa hoạt động ngay. File phải được Bash đọc khi mở interactive shell. Dùng built-in . đọc thi lệnh trong file. Vì .bash_aliases đọc khi .bashrc xử lý, test bằng cách gọi .bashrc:

gedit .bash_aliases
. .bashrc
ftc
Cách Tạo Aliases Và Shell Functions Trên Linux

Alias phản hồi -> Bash đọc cả .bashrc và .bash_aliases, alias mới hoạt động.

Bây giờ thêm alias mới vào .bash_aliases khi cần. Nếu làm gì hơn 1-2 lần, cân nhắc tạo alias.

Xóa alias

Lệnh xóa alias: unalias. Cú pháp: unalias tên_alias. Xóa alias ftc hoặc ll:

unalias ll
Cách Tạo Aliases Và Shell Functions Trên Linux

Xóa được alias tự định nghĩa và alias định sẵn. Xóa tất cả alias: unalias -a.

Mất trí nhớ Bash không vĩnh viễn. Mở terminal mới, alias "quên" quay lại. Muốn xóa hẳn: xóa khỏi .bashrc và .bash_aliases.

Nếu muốn giữ lại để dùng sau, comment bằng # đầu dòng alias. Vô hiệu .bash_aliases: đổi tên file. .bashrc không thấy -> không đọc. Khôi phục: làm ngược lại.

Tạm bỏ qua alias (vd alias ls thành ls -a): gõ \ls -> chạy lệnh gốc, không phải alias.

Cách Tạo Aliases Và Shell Functions Trên Linux

Trợ giúp lệnh alias:

  • --help: hiển thị thông tin giúp.

Cú pháp:

alias --help
Cách Tạo Aliases Và Shell Functions Trên Linux

Shell Functions

Cần alias nhận tham số -> dùng bash functions.

Cú pháp

Khai báo function theo 2 dạng:

function_name () { [commands] }

hoặc

function function_name { [commands] }

Rút gọn dạng 2 thành 1 dòng, cách lệnh bằng dấu chấm phẩy (bắt buộc sau lệnh cuối):

function_name () { command1; command2; }

Giống alias, functions có thể định nghĩa trong .bashrc, nhưng gọn hơn tách file riêng. Đặt tên .bash_functions theo quy ước .bash_aliases.

Cần báo .bashrc đọc file định nghĩa. Copy đoạn code đọc .bash_aliases, sửa thành .bash_functions. Mở gedit load .bashrc:

gedit .bashrc
Cách Tạo Aliases Và Shell Functions Trên Linux

Thêm đoạn highlight dưới. Copy phần alias (Ctrl+C), dán (Ctrl+V) vị trí mong muốn, sửa 2 chỗ .bash_aliases -> .bash_functions.

Cách Tạo Aliases Và Shell Functions Trên Linux

Lưu, đóng gedit.

Tạo và chỉnh .bash_functions, thêm định nghĩa function.

touch .bash_functions
gedit .bash_functions
Cách Tạo Aliases Và Shell Functions Trên Linux

Mở file rỗng .bash_functions trong gedit.

Tạo function đơn giản up. up nhận 1 tham số số nguyên. Gọi cd .. số lần đó. Vd up 2 -> cd .. 2 lần, lên 2 cấp thư mục.

Cách định nghĩa function khác nhau. Ví dụ:

function up() {

Từ khóa function tùy chọn. Truyền thống thì dùng, lười gõ thì bỏ.

Toàn bộ function trong gedit:

Cách Tạo Aliases Và Shell Functions Trên Linux
function up() {
levels=$1
while [ "$levels" -gt "0" ]; do
cd ..
levels=$(($levels - 1))
done
}

Giải thích: levels=$1 gán tham số thứ nhất. Vòng lặp while levels > 0: cd .. rồi giảm levels 1. Lặp lại cho đến levels <= 0.

Lưu và đóng gedit.

Đọc thi .bashrc (sẽ đọc .bash_functions):

. .bashrc
Cách Tạo Aliases Và Shell Functions Trên Linux

Test function: cd vào thư mục sâu, dùng up về cấp cao hơn.

cd ./work/backup/
up 2
Cách Tạo Aliases Và Shell Functions Trên Linux

Function hoạt động. Đi lên 2 cấp thư mục.

Theo dõi bằng lệnh type

Khi alias/functions nhiều, khó nhớ lệnh nào là alias hay function. Dùng type để xem. Hay là thấy cả định nghĩa.

Dùng type trên alias ftc và function up:

type ftc
type up
Cách Tạo Aliases Và Shell Functions Trên Linux

Nhắc nhở hữu ích: loại lệnh và định nghĩa.

Bắt đầu thu thập

Aliases và functions tăng tốc dòng lệnh đáng kể. Rút gọn chuỗi lệnh, nạp sẵn tùy chọn thường dùng. Mỗi khi thấy one-liner hay function hữu ích, cá nhân hóa, thêm vào .bash_aliases hoặc .bash_functions. Sử dụng nhiều làm việc shell thú vị, ít phức tạp hơn.

Cẩn thận không ghi đè lệnh hiện có với hành vi phá hoại. Ngược lại, alias lệnh thành biến thể an toàn hơn (luôn hỏi xác nhận trước xóa đệ quy) cũng gây rắc rối khi chuyển sang hệ thống không có alias đó. Tìm lệnh hay dùng để tạo alias: tìm trong history các lệnh dùng nhiều nhất.