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_globvừa tạo.Dòng 3: tạo lần lược các file
file1file2file3filexDò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
echovớ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
- Liệt kê các file có tên là
*trong ngoặc đơn- Liệt kê các file có tên là
*trong ngoặc kép- In ra ký tự
*- 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,dhoặce[a-x]sẽ match với bất kỳ ký tự từađếnx
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:
cd ..là di chuyển ra folder cha.rmlà lệnh remove-drflầ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