Tìm hiểu làm việc với Shell#
I. Command#
1. Arguments#
Shell có tính năng quét dòng lệnh. Khi bạn nhập một command vào dòng lệnh (terminal) và nhấn Enter, shell sẽ quét và chia nó thành các phần. Quá trình này được gọi là shell expansion. Sau khi sửa đổi, lệnh sẽ được thực thi.
- Các phần của dòng lệnh chia nhau bằng dấu cách (hoặc tab) gọi là arguments. Argument đầu là lệnh thực thi, các argument sau là đầu vào. Ví dụ:
2. Dấu nháy đơn#
Dùng nháy đơn để không xóa dấu cách, nội dung trong nháy đơn được coi như một argument. Ví dụ:
3. Dấu nháy kép#
Giống nháy đơn, dấu nháy kép cũng bảo toàn nội dung trong nó thành một argument.
4. Echo và trích dẫn#
Một số ký tự đặc biệt trong dòng trích dẫn được nhận diện bởi lệnh echo -e. Ví dụ:
5. Lệnh#
5.1. Các loại câu lệnh#
- Builtin command: Lệnh có sẵn trong shell. Ví dụ:
cd,source. - External command: Lệnh không có sẵn trong shell, shell phải tìm đường dẫn và tạo process mới để chạy.
- Alias: Tạo lệnh viết tắt để tiết kiệm thời gian, thường lưu trong file
~/.bashrchoặc~/.bash_profile.
5.2. Lệnh type#
Lệnh type xác định loại command (builtin hoặc external) hoặc alias. Ví dụ:
5.3. which, whatis, whereis#
whatis: Hiển thị mô tả ngắn về một command.which: Tìm kiếm file thực thi của một command trong$PATH.whereis: Liệt kê đường dẫn tới các file thực thi, manual, và source.
6. Alias#
Tạo alias với cú pháp alias [alias]="[lệnh muốn thay thế]". Alias giúp rút gọn câu lệnh và đặt tùy chọn mặc định.
II. Các toán tử điều khiển thi thực hiện command#
1. ; (dấu chấm phẩy)#
Sử dụng ; để gõ nhiều lệnh trên một dòng, các lệnh thực thi tuần tự.
2. & (kí hiệu và)#
Ký hiệu & cho phép chạy lệnh dưới dạng background, trả lại dòng lệnh ngay sau đó.
3. $? (dollar hỏi chấm)#
Exit code của lệnh trước được lưu trong $?. Exit code 0 nghĩa là lệnh thành công.
4. && (hai dấu và)#
Sử dụng && để thực hiện lệnh thứ hai chỉ khi lệnh đầu thành công.
5. || (hai thanh dọc)#
Sử dụng || để thực thi lệnh thứ hai khi lệnh đầu thất bại.
6. Kết hợp && và ||#
Kết hợp && và || để viết cấu trúc if-then-else trên dòng lệnh.
7. # (dấu thăng)#
Dấu # giúp viết comment trong shell mà không ảnh hưởng đến quá trình thực thi.
8. \ (dấu gạch chéo ngược)#
\ dùng để escape ký tự.
9. Gạch chéo ngược ở cuối dòng#
Các dòng kết thúc với \ sẽ tiếp tục ở dòng tiếp theo.
III. Biến trong Shell#
- Dấu
$: Shell tìm biến môi trường có tên giống chuỗi đi sau$và thay bằng giá trị của biến. - Phân biệt hoa thường: Biến shell phân biệt chữ hoa và chữ thường.
- Tạo biến và gán giá trị: Tạo biến với cú pháp
[tên biến]=[giá trị].
set: Hiển thị danh sách biến môi trường.unset: Xóa biến môi trường.$PATH: Chứa danh sách thư mục nơi shell tìm kiếm lệnh khi thực thi.
IV. Nhúng trong shell#
- Nhúng shell: Một shell có thể được nhúng trong một câu lệnh khác.
- Backticks: Sử dụng dấu backtick (`) để nhúng lệnh.
V. Shell history#
!!: Thực thi lại lệnh trước đó.!<ký tự>: Thực thi lại lệnh gần nhất có chứa ký tự.history: Xem lịch sử câu lệnh trong shell.
VI. Regular Expressions#
1. Regular Expressions là gì?#
Regular Expressions (regex) là các ký tự đặc biệt giúp tìm kiếm dữ liệu sâu và mạnh mẽ.
2. Các regex cơ bản#
| Ký hiệu | Mô tả |
|---|---|
| . | Khớp bất kỳ kí tự đơn nào |
| ^ | Đầu chuỗi |
| $ | Cuối chuỗi |
| * | Khớp với 0 hoặc nhiều lần ký tự trước |
| \ | Đại diện cho ký tự đặc biệt |
| () | Nhóm biểu thức chính quy |
| ? | Khớp tối đa 1 kí tự |
Một số ký hiệu thông dụng:
- Dấu *: Khớp với cụm ký tự bất kỳ (hoặc không có ký tự nào).
- Dấu ?: Khớp với chính xác một ký tự.
- Dấu []: Khớp với bất kỳ một ký tự nào trong [].











