NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
05/12/2022
Lượt xem

Giới thiệu về Linux Shell và Shell Script

05/12/2022
8 phút đọc
Lượt xem

Đánh giá

5/5 - (68 bình chọn)

Mỗi khi bạn sử dụng terminal trong Ubuntu, Linux Mint hay bất cứ bản phân phối nào của Linux, bạn luôn tương tác một cách gián tiếp với shell. Vậy shell là gì? Bài viết này sẽ cung cấp mọi kiến thức cơ bản cần biết về Linux Shell và Shell Script.

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ị,…

Kernel là gì?
Kernel là gì?

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 là gì?
Shell là gì?

Shell được phân thành hai loại chính: Command Line ShellGraphical 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:

Giao diện của Command Line Shell
Giao diện của Command Line Shell

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.

Giao diện file Ubuntu 24.04
Giao diện file Ubuntu 24.04

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.

linux shell và shell script
Linux shell và Shell script

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.
Vì sao nên sử dụng shell script?
Vì sao nên sử dụng shell script?

Mặt khác, shell script lại có tốc độ thực thi không cao, không phù hợp với các tác vụ nặng và phức tạp. 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:

Ví dụ về shell scripting
Ví dụ về shell scripting

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 dir_name
Output hiển thị lệnh jump
Output hiển thị lệnh jump

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é!

Lời kết

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 nhé!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Black Friday Hosting & VPS

Chương trình bắt đầu sau

Giảm giá 40% hosting VPS

50 coupon mỗi ngày

Gia hạn giá không đổi

NHẬN DEAL NGAY
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG