Giới thiệu về Shell Script và lập trình C cơ bản trong UNIX
- 30-10-2024
- Toanngo92
- 0 Comments
Mục lục
1. Giới thiệu về Shell Script trong UNIX
- Mô tả: Shell script là một chuỗi các lệnh UNIX được kết hợp thành một tập tin thực thi, giúp tự động hóa các tác vụ, tiết kiệm thời gian và giảm thiểu thao tác lặp đi lặp lại.
- Nội dung:
- Giới thiệu về Shell và các loại Shell phổ biến như Bourne Shell (
sh
), Bash (bash
), C Shell (csh
), Korn Shell (ksh
). - Cấu trúc cơ bản của một shell script, cú pháp, và cách lưu tệp script với phần mở rộng
.sh
.
- Giới thiệu về Shell và các loại Shell phổ biến như Bourne Shell (
2. Cấu trúc Shell Script Cơ bản
- Mô tả: Cách viết shell script đơn giản với cú pháp cơ bản, bao gồm dòng shebang và các lệnh cơ bản.
- Nội dung:
- Dòng shebang (
#!/bin/sh
) ở đầu tệp để xác định shell sẽ chạy script. - Cú pháp viết lệnh và các phép gán biến trong shell.
- Ví dụ:
bash #!/bin/sh echo "Xin chào, đây là script đầu tiên của tôi!"
- Dòng shebang (
3. Biến trong Shell Script
- Mô tả: Các loại biến trong Shell script, cách khai báo và sử dụng.
- Nội dung:
- Biến cục bộ: Khai báo bằng cách gán giá trị, không có kiểu dữ liệu cố định.
- Ví dụ:
bash name="UNIX" echo "Hệ điều hành của tôi là $name"
- Biến hệ thống: Các biến mặc định như
$HOME
,$PATH
,$USER
. - Biến tham số: Sử dụng các biến đặc biệt để truy cập tham số dòng lệnh (
$1
,$2
,…).
4. Câu lệnh Điều kiện và Vòng lặp trong Shell Script
- Mô tả: Hướng dẫn viết cấu trúc điều kiện (
if
,else
) và vòng lặp (for
,while
) trong Shell. - Nội dung:
- Cấu trúc
if
: - Ví dụ:
bash #!/bin/sh if [ "$1" -gt 0 ]; then echo "Tham số lớn hơn 0" else echo "Tham số nhỏ hơn hoặc bằng 0" fi
- Vòng lặp
for
: - Ví dụ:
bash for file in *.txt; do echo "Đang xử lý $file" done
- Vòng lặp
while
: - Ví dụ:
bash i=1 while [ $i -le 5 ]; do echo "Số $i" i=$((i + 1)) done
- Cấu trúc
5. Hàm trong Shell Script
- Mô tả: Tạo hàm để tái sử dụng các đoạn mã, giúp code ngắn gọn và dễ quản lý hơn.
- Nội dung:
- Cú pháp định nghĩa hàm:
bash function tên_hàm { # Lệnh thực thi trong hàm }
- Ví dụ về hàm:
bash greet() { echo "Xin chào, $1!" } greet "Người dùng"
- Cú pháp định nghĩa hàm:
6. Truyền dữ liệu giữa các tiến trình và điều hướng (Redirection)
- Mô tả: Cách truyền dữ liệu giữa các tiến trình bằng pipeline (
|
) và điều hướng đầu vào/đầu ra. - Nội dung:
- Pipeline (
|
): Sử dụng đầu ra của lệnh này làm đầu vào cho lệnh tiếp theo. - Ví dụ:
bash ls | grep ".txt"
- Điều hướng đầu vào (
<
) và đầu ra (>
/>>
): - Ví dụ:
bash echo "Đây là dữ liệu" > file.txt # Ghi đè vào file.txt echo "Thêm dữ liệu" >> file.txt # Ghi thêm vào file.txt
- Pipeline (
7. Giới thiệu về Lập trình C trong UNIX
- Mô tả: Giới thiệu cơ bản về lập trình C trong UNIX, từ cấu trúc chương trình, biên dịch, và chạy chương trình C trong môi trường UNIX.
- Nội dung:
- Cấu trúc cơ bản của chương trình C: Hàm
main()
, khai báo thư viện#include
. - Các bước biên dịch và chạy chương trình C:
- Sử dụng
gcc
để biên dịch:bash gcc -o ten_chuong_trinh chuong_trinh.c ./ten_chuong_trinh
- Cấu trúc cơ bản của chương trình C: Hàm
8. Gọi Hệ thống (System Call) trong C
Mô tả: Cách sử dụng các lời gọi hệ thống (system calls) để tương tác với hệ điều hành từ chương trình C.
Lời gọi hệ thống phổ biến:
fork()
: Tạo một tiến trình con.
exec()
: Thay thế tiến trình hiện tại bằng một chương trình khác
- .
wait()
: Đợi tiến trình con kết thúc.
Ví dụ:
#include <stdio.h>
#include <unistd.h>
int main() {
printf("Tiến trình hiện tại có PID: %d\n", getpid());
fork(); // Tạo tiến trình con
printf("Tiến trình sau khi fork, PID: %d\n", getpid());
return 0;
}
9. Quản lý Tệp tin trong Lập trình C
Mô tả: Cách thao tác với tệp tin trong C, như tạo, đọc, ghi và đóng tệp tin.
Nội dung Sử dụng thư viện stdio.h
để thao tác tệp tin với fopen()
, fread()
, fwrite()
, và fclose()
.
Ví dụ:
#include <stdio.h>
int main() {
FILE *f = fopen("file.txt", "w");
if (f == NULL) {
printf("Không thể mở tệp\n");
return 1;
}
fprintf(f, "Nội dung ghi vào tệp.\n");
fclose(f);
return 0;
}
Bài tập
Bài tập Thực hành Shell Script và Lập trình C cơ bản trong UNIX
- Mô tả: Các bài tập giúp củng cố kiến thức về Shell Script và lập trình C.
- Nội dung:
- Viết shell script để tự động sao lưu tệp tin trong thư mục.
- Viết chương trình C để tạo một tệp, ghi dữ liệu vào đó, và đọc nội dung đã ghi.
- Thực hành với các lời gọi hệ thống
fork()
vàexec()
để tạo tiến trình mới và thực thi chương trình từ tiến trình đó.