0x01 – Bash Core

Bash là gì ?

Bash là một chương trình cho Shell.

Shell (dịch ra tiếng Việt là vỏ, vỏ sò) là một chương trình. Nó được biểu thị như là một lớp vỏ bao quanh nhân Linux (đó là lý do nó được gọi là Shell).

Shell sẽ dịch những câu lệnh từ người dùng, chuyển nó thành các System Calls đến API Hệ Điều Hành.

Globbing

mkdir using_glob
cd using_glob
touch file1 file2 file3 filex
ls *
echo *

Dòng 1: tạo thư mục using_glob.

Dòng 2: di chuyển vào thư mục using_glob vừa tạo.

Dòng 3: tạo lần lược các file file1 file2 file3 filex

Dòng 4: chạy lệnh ls (list file) để liệt kê các file trùng với *

Dòng 5: chạy lệnh echo với * là một argument cho nó

Kết quả sẽ là hai dòng với danh sách tên 4 files vừa tạo.

Trong ví dụ này, shell sẽ lấy ký tự * và chuyển nó sao cho trùng với các file trong thư mục hiện tại.

Nói cách khác, shell chuyển * thành file1 file2 file3 filex và tiếp tục thực thi câu lệnh.

Note:

ls '*'
ls "*"
echo '*'
echo "*"

Các câu lệnh trên sẽ lần lượt có nghĩa như sau

  1. Liệt kê các file có tên là * trong ngoặc đơn
  2. Liệt kê các file có tên là * trong ngoặc kép
  3. In ra ký tự *
  4. In ra ký tự *

Các ký tự glob các

  • ? sẽ match với bất kỳ ký tự đơn.
  • [code] sẽ match với các ký tự c, o, d hoặc e
  • [a-x] sẽ match với bất kỳ ký tự từ a đến x

Do đó chúng ta có thể tạo ra các query grob khác nhau, ví dụ

ls *txt         # liệt kê file kết thúc bằng `txt`
ls file[a-z]    # liệt kê file bắt đầu bằng `file`, kết thúc là ký tự từ `a` - `z`
ls file[0-9]    # liệt kê file bắt đầu bằng `file`, kết thúc là ký tự từ `0` - `9`

The dotfiles

Dotfiles là những file bắt đầu bằng dấu chấm (.)

Khi ls hoặc ls * thì các file này sẽ không được liệt kê.

Muốn liệt kê các file này, dùng lệnh ls với flag -a.

Folder . (folder này có tên chỉ là một dấu chấm) biểu thị cho thư mục hiện tại.

Folder .. biểu thị cho folder cha của folder hiện tại.

Dọn dẹp chiến trường

Sau khi thực hành xong, hãy xóa folder này.

cd ..
rm -drf using_glob

Note:

  1. cd .. là di chuyển ra folder cha.
  2. rm là lệnh remove
  3. -drf lần lượt là directory, recursive, force

Variables

Tạo ra một biến và echo nó.

MY_NAME=CodeChoVui
MY_AGE=10
echo $MY_NAME
echo $MY_AGE

Tạo ra một chuỗi sẽ cần dùng đến dấu ngoặc kép hoặc ngoặc đơn

GREET="Hi, welcome to my blog."
echo $GREET
GREET='Hi, welcome to my blog.'
echo $GREET

Tuy nhiên, để tạo một chuỗi với một giá trị từ biến khác, bắt buộc phải dùng ngoặc kép.

MY_GREET="Hello, i am $MY_NAME"
echo $MY_GREET
MY_GREET='Hello, i am $MY_NAME'
echo $MY_GREET

Chạy thử đoạn lệnh trên và xem kết quả nhé.

Biến của Shell

Trong shell có một số biến đặc biệt, các biến này được tạo ra khi khởi chạy bash.

Ví dụ như biến PPID, đây là biến chứa id của process cha của bash.

Các biến đặc biệt này là những biến readonly, có nghĩa là biến này chỉ được phép đọc chứ không được phép thay đổi dữ liệu.

Để tạo ra một biến readonly, thêm từ khóa này vào trước tên biến. Ví dụ

readonly MY_NAME=CodeChoVui

*export

Functions

Pipes and redirects

Basic bash scripting

CodeChoVui

CodeChoVui

Kỹ sư phần mềm, người đam mê hệ thống tối giản, web development và mã nguồn mở. Chia sẻ góc nhìn công nghệ và trải nghiệm lập trình thực chiến.

Theo dõi bản tin CodeChoVui

Nhận thông báo qua email mỗi khi có bài viết mới về lập trình, trải nghiệm phần mềm và công nghệ.

Gửi ý kiến thảo luận