Học bằng cách đọc theo thứ tự

Shell Script đầu tiên của bạn — Tạo và chạy nó

Tạo một tệp script bằng trình soạn thảo vi, đặt #!/bin/sh cùng một comment ở dòng đầu, thêm quyền thực thi bằng chmod +x rồi chạy bằng ./hello.sh — thực hành từng bước với sơ đồ và terminal ngay trên trình duyệt.

Tạo một script — vi và #!/bin/sh

Một shell script gom các lệnh mà bạn thường gõ vào terminal thành một tệp để bạn có thể chạy tất cả cùng một lúc.

Thay vì gõ tay một loạt bước cố định mỗi lần, bạn viết chúng vào một tệp, và bạn có thể lặp lại đúng cùng một công việc bao nhiêu lần tùy thích.

Ở đây bạn sẽ học những điều cơ bản về cách tạo và chạy một shell script.

Mở tệp bằng vi hello.sh, nhấn i để vào chế độ chèn rồi gõ nội dung, sau đó nhấn Esc rồi lưu và đóng bằng :wq (các thao tác vi cơ bản chính là những thao tác bạn đã học lần trước).

Đặt dòng đầu là #!/bin/sh, một shebang, để chỉ định shell nào sẽ chạy script.

Những dòng bắt đầu bằng # được bỏ qua như comment khi chạy.

Ngoại lệ duy nhất là dòng đầu: dù #!/... bắt đầu bằng #, nó không phải comment — nó được diễn giải đặc biệt như chỉ thị về shell nào sẽ chạy.

Tạo → cấp quyền → chạy, và ls -l thay đổi ra sao
Viết bằng vihello.sh đã tạo-rw-r--r--Kiểm tra quyềnbằng ls -lThêm quyền thực thi-rwxr-xr-xx xuất hiệnCó x rồi, chạybằng ./Chạy scriptrun info: v.v.được in ravi hello.shchmod +x hello.sh./hello.sh
Tạo bằng vi hello.sh cho ra -rw-r--r-- (không có x); chmod +x đổi nó thành -rwxr-xr-x (có x), và ./hello.sh chạy nó. Phần giữa cho thấy việc kiểm tra bằng ls -l.
Cú phápÝ nghĩaVí dụ
vi fMở một tệp trong trình soạn thảo (tạo mới nếu chưa có)vi hello.sh
iEscViết nội dung trong chế độ chèn, Esc quay về chế độ normalNhấn iEsc
:wqLưu và thoát vi:wq
#!/bin/shShebang ở dòng đầu (chỉ định shell sẽ chạy)#!/bin/sh
# commentMột dòng chú thích bị bỏ qua khi chạy# create backup
chmod +x fThêm quyền thực thi cho một tệpchmod +x hello.sh
./fChạy script trong thư mục hiện tại./hello.sh
>> fGhi thêm (append) vào cuối tệp (không ghi đè)date >> run.log
vi note.sh        # mở script trong trình soạn thảo
# nhấn i để vào chế độ chèn và viết:
#   #!/bin/sh
#   # show a short message
#   echo "build step 1"
#   echo "build step 2"
# nhấn Esc rồi lưu và thoát bằng :wq
chmod +x note.sh  # thêm quyền thực thi
./note.sh         # in ra build step 1 / build step 2

Bạn sẽ xây một công cụ nhỏ ghi lại ngày bạn chạy nó và thư mục làm việc.

① Mở hello.sh bằng vi hello.sh và nhấn i để vào chế độ chèn.

② Ở dòng đầu viết #!/bin/sh, rồi thêm một dòng comment nêu script dùng để làm gì cùng các lệnh in ra ngày hiện tại và thư mục làm việc (bạn có thể copy và paste nội dung từ bảng đáp án).

③ Nhấn Esc rồi lưu và thoát bằng :wq.

④ Thêm quyền thực thi cho hello.sh mà bạn đã tạo.

⑤ Chạy ls -l hello.sh và xác nhận có một x xuất hiện ở mép trái, cho thấy quyền thực thi đã thay đổi.

⑥ Chạy script và xác nhận ngày cùng thư mục làm việc được in ra. (Nếu chạy đúng, một phần giải thích sẽ hiện ra.)

Linux console
0 / 4 đã hoàn thành
Loading Linux Terminal...

Chạy nó — chmod +x và ./

Một tệp vừa mới tạo không thể chạy ngay như vậy.

Khi bạn thêm quyền thực thi bằng chmod +x file, bạn có thể chạy nó dưới dạng ./file.

./ là cách trỏ tới một tệp trong thư mục hiện tại; nếu thiếu nó, shell chỉ tìm lệnh bên trong PATH và sẽ không tìm thấy.

vi greet.sh        # mở trong trình soạn thảo, viết #!/bin/sh và echo hi, lưu bằng :wq
ls -l greet.sh      # chưa có quyền thực thi
chmod +x greet.sh   # thêm quyền thực thi
ls -l greet.sh      # một x xuất hiện ở mép trái
./greet.sh          # in ra hi

Cũng có cách chạy mà không cần quyền thực thi

Khi bạn muốn chạy mà không thêm quyền thực thi, cũng có cách giao tệp cho một shell, như sh file.

Trong khóa học này, chúng ta dùng dạng cơ bản là thêm quyền thực thi và chạy bằng ./file.

Bạn có thể kiểm tra quyền thực thi đã được thêm hay chưa bằng việc có một x xuất hiện ở mép trái của ls -l hay không.

Bạn sẽ đi qua luồng tạo một script, thêm quyền thực thi và chạy nó.

① Mở run.sh bằng vi run.sh, viết #!/bin/sh ở dòng đầu và một lệnh in ra một thông điệp ngắn ở dòng kế tiếp, rồi lưu bằng :wq.

② Kiểm tra quyền hiện tại bằng ls -l run.sh (chưa có quyền thực thi).

③ Thêm quyền thực thi cho run.sh mà bạn đã tạo.

④ Chạy lại ls -l run.sh và xác nhận một x đã xuất hiện ở mép trái.

⑤ Chạy script bằng ./ và xác nhận thông điệp được in ra.

Linux console
0 / 4 đã hoàn thành
Loading Linux Terminal...

Xây một công cụ nhỏ ghi lại các lần chạy

Luồng tạo, cấp quyền và chạy mà bạn đã học có thể dùng trực tiếp trong các công cụ nhỏ thực tế.

Ở đây bạn sẽ xây một công cụ ghi log, ghi thêm "khi script được chạy" vào một tệp log duy nhất.

Khi bạn ghi thêm bằng >>, các dòng chồng lên nhau mỗi lần bạn chạy, nên về sau bạn có thể xem lại lịch sử chạy.

Hai hành động của who.sh và sự tích lũy lịch sử
Chạy who.shGhi thêm một dòngthời gian vào run.log>> thêm vào cuối,không ghi đèHiển thị tất cảdòng của run.logChạy thêmmột lần nữarun.log tăng lên2 rồi 3 dòngLịch sử chạychồng lêndate >> run.logcat run.log./who.sh
Một lần chạy gây ra việc ghi thêm date >> run.log và hiển thị cat run.log, và mỗi lần lặp lại chồng thêm một dòng vào run.log.

Bạn sẽ xây một công cụ nhỏ ghi lại thời gian bạn chạy nó vào một tệp log.

① Mở who.sh bằng vi who.sh, nhấn i để vào chế độ chèn, và viết #!/bin/sh ở dòng đầu.

② Thêm một dòng comment nêu script dùng để làm gì, ghi thêm thời gian hiện tại vào một tệp log (>>), rồi viết một lệnh hiển thị toàn bộ log.

③ Nhấn Esc, lưu bằng :wq, rồi thêm quyền thực thi cho tệp.

④ Chạy script và xác nhận dòng đã ghi xuất hiện trong log.

Linux console
0 / 3 đã hoàn thành
Loading Linux Terminal...
QUIZ

Kiểm tra kiến thức

Hãy trả lời từng câu hỏi một.

Câu 1#!/bin/sh ở dòng đầu của một shell script chỉ định điều gì?

Câu 2Lệnh nào thêm quyền thực thi cho một script bạn đã tạo?

Câu 3Đâu là cách chạy hello.sh trong thư mục hiện tại?