Linux shell và shell script đóng vai trò quan trọng trong việc quản lý và tự động hóa các tác vụ trên hệ thống Linux. Shell cho phép thực thi lệnh trực tiếp, trong khi shell script giúp tự động hóa những công việc lặp lại, từ đó tiết kiệm thời gian. Để hiểu rõ hơn cách thức tận dụng tối đa tiềm năng của 2 công cụ này thông qua Shell Script, mời bạn đọc bài viết dưới đây.
Những điểm chính
- Nắm được khái niệm và tầm quan trọng của Linux Shell và Shell Script trong việc quản lý và tự động hóa hệ thống.
- Hiểu rõ cách phân biệt giữa Command Line Shell và Graphical Shell, từ đó áp dụng chúng hiệu quả trong công việc.
- Biết cách viết Shell Script để tự động hóa các tác vụ, giảm thiểu sai sót và tiết kiệm thời gian.
- Vietnix – Nhà cung cấp VPS tốc độ cao và hiệu suất ổn định.
Khái niệm Kernel là gì?
Kernel là chương trình máy tính cốt lõi của hệ điều hành, có toàn quyền kiểm soát mọi thứ trên hệ thống, trong đó có các tài nguyên quan trọng như: quản lý file, process, I/O, bộ nhớ, thiết bị,…

Vì vậy, có thể xem một hệ thống Linux hoàn chỉnh bao gồm kernel, công cụ và thư viện GNU, cùng với theo đó là những script quản lý và cài đặt.
Shell là gì?
Shell là một chương trình đặc biệt cung cấp giao diện người dùng khi sử dụng các dịch vụ của hệ điều hành. Shell nhận lệnh từ con người rồi chuyển sang ngôn ngữ tương ứng của kernel, do đó có thể xem shell là một trình phiên dịch với đầu vào là các thiết bị ngoại vi hoặc file. Khi người dùng đăng nhập hoặc khởi động terminal trong Linux thì shell cũng sẽ được khởi chạy.

Shell được phân thành hai loại chính: Command Line Shell và Graphical Shell.
Command Line Shell
Shell có thể được truy cập bằng giao diện command line hoặc terminal. Dưới đây là giao diện trong terminal của Ubuntu 16.4:

Việc sử dụng shell command line có thể hơi khó khăn với những người mới vì phải làm việc với nhiều câu lệnh phức tạp. Mặt khác, đây lại là một công cụ vô cùng mạnh mẽ, cho phép lưu trữ và thực thi nhiều file cùng lúc, thậm chí có thể được tự động hóa. Các file này thường được gọi là file batch trong Windows, hoặc Shell script trong Linux/macOS.
Graphical Shell
Graphical shell cung cấp các phương thức thao tác với chương trình dựa trên giao diện GUI, cho phép mở, đóng, di chuyển và điều hướng giữa các cửa sổ. Với cách này, người dùng không cần phải nhập lệnh để thực hiện các thao tác trên hệ thống mà có thể tương tác trực tiếp với chương trình như trên Windows hay Ubuntu.

Hầu hết các shell đều thực hiện cùng một nhiệm vụ, nhưng cung cấp nhiều lệnh và hàm khác nhau để thực hiện. Một số shell có sẵn trên hệ thống Linux gồm có:
- BASH (Bourne Again Shell) – Shell phổ biến nhất trên Linux, được dùng làm shell đăng nhập mặc định trên Linux và macOS. Ngoài ra người dùng Windows cũng có thể cài đặt shell này nếu cần.
- CSH (C Shell) – Có cú pháp và cách sử dụng giống với ngôn ngữ lập trình C.
- KSH (Korn Shell) – Cơ sở cho các thông số kỹ thuật tiêu chuẩn của POSIX Shell.
Shell Scripting là gì?
Shell nhận lệnh từ người dùng để thực thi, tuy nhiên đôi khi ta có thể cần thường xuyên thực hiện một số lệnh, mà việc nhập từng lệnh mỗi khi cần thực thi sẽ tốn rất nhiều thời gian.
Shell cũng có thể lấy input là các lệnh từ file, vì vậy người dùng cũng có thể viết các lệnh này trong file rồi thực thi để tránh việc nhập lại lệnh nhiều lần. Các file này được gọi là Shell Script/Shell Program. Shell script cũng tương tự như các file batch trong MS-DOS, được lưu với phần mở rộng là .sh.

Một shell script có cú pháp tương tự như các ngôn ngữ lập trình nên những người dùng đã có sẵn kinh nghiệm với Python hay C/C++ sẽ làm quen rất nhanh với shell script.
Một shell script bao gồm các thành phần sau:
- Keyword:
if, else, break,...
- Lệnh:
cd, ls, echo, pwd,...
- Hàm
- Control flow:
if..then..else,...
Vì sao nên sử dụng shell script?
Có rất nhiều lý do khác nhau để sử dụng shell script, chẳng hạn như:
- Hạn chế việc thực thi code nhiều lần.
- Dễ dàng backup hệ thống thường xuyên bằng shell script.
- Giám sát hệ thống.
- Bổ sung chức năng vào shell.
Bên cạnh đó ta cũng không thể không kể đến các ưu điểm chính của việc sử dụng shell script như:
- Câu lệnh và cú pháp tương tự như trong command line.
- Giao diện debug có tính tương tác cao.

Mặc dù shell script là công cụ mạnh mẽ, nhưng tốc độ thực thi không cao khi xử lý các tác vụ phức tạp và yêu cầu tài nguyên cao, hiệu suất có thể bị hạn chế. Để tối ưu hóa hiệu suất và đáp ứng nhu cầu công việc đòi hỏi tài nguyên cao, bạn có thể kết hợp với dịch vụ VPS AMD của Vietnix. Với bộ vi xử lý AMD EPYC mạnh mẽ và ổ cứng NVMe Enterprise siêu tốc, VPS của Vietnix mang lại hiệu suất vượt trội, giúp bạn xử lý các tác vụ phức tạp một cách nhanh chóng và hiệu quả.
Bên cạnh đó, việc sử dụng shell script cũng làm tăng rủi ro dẫn đến lỗi hàng loạt khi thực thi lệnh, vì vậy người dùng phải hết sức cẩn thận khi viết và thay đổi bất kỳ lệnh nào.
Ví dụ về shell scripting
Trong phần cuối cùng của bài viết, hãy cùng xem qua một trường hợp sử dụng shell script đơn giản. Khi làm việc với terminal, việc điều hướng giữa các thư mục đôi khi tốn giá nhiều thời gian và cần sử dụng các câu lệnh lặp đi lặp lại nhiều lần. Giả sử ta cần quay trở về python từ thư mục hiện tại thì sẽ phải thực hiện câu lệnh như dưới đây:

Cảm giác rất cồng kềnh đúng không nào? Bây giờ hãy thử tạo một công cụ cho phép điều hướng đến thư mục chỉ bằng cách nhập tên của thư mục đó:
# !/bin/bash
# A simple bash script to move up to desired directory level directly
function jump()
{
# original value of Internal Field Separator
OLDIFS=$IFS
# setting field separator to "/"
IFS=/
# converting working path into array of directories in path
# eg. /my/path/is/like/this
# into [, my, path, is, like, this]
path_arr=($PWD)
# setting IFS to original value
IFS=$OLDIFS
local pos=-1
# ${path_arr[@]} gives all the values in path_arr
for dir in "${path_arr[@]}"
do
# find the number of directories to move up to
# reach at target directory
pos=$[$pos+1]
if [ "$1" = "$dir" ];then
# length of the path_arr
dir_in_path=${#path_arr[@]}
#current working directory
cwd=$PWD
limit=$[$dir_in_path-$pos-1]
for ((i=0; i<limit; i++))
do
cwd=$cwd/..
done
cd $cwd
break
fi
done
}
Tiếp theo, ta cần chạy lệnh sau để cho phép thực thi shell script:
$ chmod +x path/to/our/file/jump.sh
Để áp dụng cho mọi phiên terminal thì ta phải đưa script này vào file .bashrc – một shell script được chạy bởi Bash, file này được dùng đề thiết lập các biến, hàm, alias, định nghĩa các thiết lập muốn sử dụng khi mở một cửa sổ terminal bất kỳ.
Mở terminal rồi chạy lệnh sau:
$ echo “source ~/path/to/our/file/jump.sh”>> ~/.bashrc
Bây giờ ta có thể thử dùng lệnh jump vừa định nghĩa ở trên:
$ jump file1

Vậy là ta đã rút gọn việc sử dụng lệnh cd nhiều lần bằng shell scripting. Tất nhiên khả năng của shell scripting còn có thể được mở rộng hơn nữa, các bạn đọc hãy thử tự khám phá nhé!
Vietnix – Nhà cung cấp VPS tốc độ cao và hiệu suất ổn định
Với nhiều năm kinh nghiệm trong ngành giải pháp công nghệ tại Việt Nam, dịch vụ VPS của Vietnix cung cấp hiệu suất vượt trội, tốc độ ổn định và bảo mật cao, phù hợp cho nhiều nhu cầu sử dụng khác nhau. VPS của Vietnix sử dụng CPU riêng biệt, không giới hạn băng thông và hỗ trợ nhiều hệ điều hành từ Linux đến Windows. Dịch vụ còn bao gồm sao lưu tự động và hỗ trợ kỹ thuật 24/7, giúp người dùng yên tâm về sự ổn định và bảo mật của hệ thống và dữ liệu.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Bài viết này đã cung cấp những kiến thức cơ bản về Linux shell và một công cụ vô cùng tiện lợi là Shell Script. Nếu có bất kỳ câu hỏi nào thì hãy để lại ở phần comment ở bên dưới để được giải đáp nhanh chóng. Dưới đây là một số bài tham khảo có thể giúp ích cho bạn khi tìm hiểu về Linux: