Unix / Linux - 什么是Shell?

Xin chào, những người học lập trình tiềm năng! Chào mừng các bạn đến với hành trình đầy thú vị vào thế giới của Unix và Linux shells. Như một giáo viên khoa học máy tính gần gũi, tôi rất vui mừng được hướng dẫn các bạn qua khái niệm cơ bản này. Hãy cùng khám phá!

Unix / Linux - What is Shell?

什么是Shell?

Hãy tưởng tượng bạn đang cố gắng giao tiếp với một người bạn nói một ngôn ngữ khác. Bạn sẽ cần một người dịch, phải không? Well, một shell giống như người dịch giữa bạn và hệ điều hành của máy tính. Nó là một bộ giải thích dòng lệnh chuyển đổi các lệnh mà bạn có thể đọc được thành thứ mà máy tính có thể hiểu và thực thi.

Trong những ngày đầu dạy học, tôi thường bảo học sinh của mình tưởng tượng shell như một con贝壳 magical talking clam sống bên trong máy tính của họ. Bạn thì thầm các lệnh cho nó, và nó làm máy tính thực hiện theo ý bạn. Nó không hoàn toàn chính xác, nhưng nó thực sự giúp khái niệm này dễ hiểu hơn!

Shell Prompt

Khi bạn mở một terminal trên hệ thống Unix hoặc Linux của bạn, bạn sẽ thấy điều gì đó như thế này:

username@hostname:~$

Đây là shell prompt của bạn. Nó giống như máy tính nói, "Tôi sẵn sàng nhận lệnh của bạn, oh người dùng thông thái!" Hãy phân tích nó:

  • username: Đó là bạn!
  • @: Chỉ có nghĩa là "at"
  • hostname: Tên của máy tính của bạn
  • ~: Thư mục hiện tại của bạn (~ có nghĩa là thư mục home)
  • $: Chỉ ra bạn là một người dùng thông thường (nó sẽ là # cho người dùng root)

Các loại Shell

Có nhiều loại shell khác nhau可供选择 trong hệ thống Unix/Linux. Nó giống như có nhiều hương vị kem - chúng đều ngon, nhưng mỗi loại có hương vị riêng! Dưới đây là một số loại phổ biến:

Tên Shell Mô tả
Bourne Shell (sh) Shell gốc của Unix
Bourne Again Shell (bash) Phiên bản được cải tiến của sh, phổ biến nhất trên Linux
C Shell (csh) Cú pháp tương tự như ngôn ngữ lập trình C
Korn Shell (ksh) Kết hợp các tính năng từ sh và csh
Z Shell (zsh) Phiên bản mở rộng của bash với nhiều cải tiến

Bash là shell phổ biến nhất bạn sẽ gặp, vì vậy chúng ta sẽ tập trung vào đó cho các ví dụ của mình.

Các Script Shell

Bây giờ, chúng ta đến phần kỳ diệu! Các script shell giống như sách công thức cho máy tính của bạn. Thay vì gõ các lệnh một cách riêng lẻ, bạn có thể viết một loạt các lệnh trong một tệp và chạy chúng cùng một lúc. Nó giống như dạy máy tính một trick mới!

Ví dụ Script

Hãy tạo script shell đầu tiên của chúng ta. Chúng ta sẽ gọi nó là hello_world.sh:

#!/bin/bash

echo "Hello, World!"
echo "Chào mừng bạn đến với thế giới kỳ diệu của shell scripting!"
echo "Ngày hôm nay là $(date)"
echo "Thư mục hiện tại của bạn là $(pwd)"

Hãy phân tích này:

  1. #!/bin/bash: Đây được gọi là shebang. Nó告诉 hệ thống sử dụng bộ giải thích nào (trong trường hợp này là bash).
  2. echo: Lệnh này in văn bản ra màn hình.
  3. $(date)$(pwd): Đây là các thay thế lệnh. Chúng chạy các lệnh trong dấu ngoặc và chèn kết quả vào câu lệnh echo của chúng ta.

Để chạy script này:

  1. Lưu nó dưới tên hello_world.sh
  2. Làm cho nó khả thi: chmod +x hello_world.sh
  3. Chạy nó: ./hello_world.sh

Bạn nên thấy điều gì đó như thế này:

Hello, World!
Chào mừng bạn đến với thế giới kỳ diệu của shell scripting!
Ngày hôm nay là Mon May 15 10:30:45 PDT 2023
Thư mục hiện tại của bạn là /home/username

Có phải đó là cool không? Bạn đã tạo script shell đầu tiên của mình!

Bình luận trong Shell

Bình luận giống như những ghi chú nhỏ bạn để lại cho mình (hoặc các lập trình viên khác) trong mã của bạn. Trong các script shell, bình luận bắt đầu bằng một #:

# Đây là một bình luận
echo "This will be printed"
# echo "But this won't be printed"

Tôi luôn bảo học sinh của mình: bình luận mã của bạn như thể người đọc nó là một kẻ tâm thần bạo lực biết nơi bạn sống. Bình luận rõ ràng có thể cứu mạng! (Hoặc ít nhất là ngăn chặn sự thất vọng.)

Các Script Shell Mở rộng

Khi bạn trở nên thoải mái hơn với shell scripting, bạn có thể tạo các script phức tạp hơn. Dưới đây là một ví dụ demonstrate biến, đầu vào người dùng và các câu điều kiện:

#!/bin/bash

# Hỏi tên người dùng
echo "Tên của bạn là gì?"
read name

# Chào người dùng
echo "Hello, $name! Rất vui được gặp bạn."

# Hỏi tuổi người dùng
echo "Bạn bao nhiêu tuổi?"
read age

# Kiểm tra xem người dùng có đủ tuổi投票
if [ $age -ge 18 ]
then
echo "Bạn đã đủ tuổi để投票!"
else
echo "Bạn chưa đủ tuổi để投票."
years_left=$((18 - age))
echo "Bạn sẽ có thể投票 trong $years_left năm."
fi

Script này:

  1. Hỏi tên và tuổi của người dùng
  2. Sử dụng các biến để lưu và sử dụng thông tin này
  3. Sử dụng một câu điều kiện (if-else) để kiểm tra tuổi
  4. Thực hiện một phép toán để xác định năm còn lại cho tuổi投票

Nhớ rằng, học lập trình giống như học骑自行车. Ban đầu, bạn có thể ngã một vài lần, nhưng với sự练习习, bạn sẽ nhanh chóng zooming around!

Tôi hy vọng rằng giới thiệu về shells này đã làm bạn tò mò. Hãy tiếp tục khám phá, tiếp tục hỏi câu hỏi, và quan trọng nhất, hãy tiếp tục lập trình! Ai biết được? Có lẽ một ngày nào đó bạn sẽ dạy thế hệ lập trình viên tiếp theo về thế giới kỳ diệu của shells!

Credits: Image by storyset