sh command in linux

Khám phá sức mạnh của lệnh sh trong Linux: Hướng dẫn toàn diện cho người mới bắt đầu

Chào mừng bạn đến với thế giới dòng lệnh Linux đầy thú vị! Nếu bạn là người mới bắt đầu làm quen với Linux, có lẽ bạn đã từng nghe đến lệnh sh. Vậy sh là gì và tại sao nó lại quan trọng? Trong bài viết này, chúng ta sẽ cùng nhau khám phá chi tiết về lệnh sh, từ những khái niệm cơ bản đến cách sử dụng nâng cao, cùng với những ví dụ thực tế giúp bạn hiểu rõ hơn về sức mạnh của công cụ này.

Hãy tưởng tượng sh như một người phiên dịch giữa bạn và hệ điều hành Linux. Khi bạn gõ một lệnh vào terminal, sh sẽ "dịch" lệnh đó thành ngôn ngữ mà hệ điều hành có thể hiểu được và thực thi. Điều này cho phép bạn tương tác trực tiếp với hệ thống, quản lý file, chạy chương trình và thực hiện vô số tác vụ khác một cách hiệu quả.

sh là gì? Giải thích chi tiết về Shell và Bash

Về cơ bản, sh là viết tắt của "Shell". Trong hệ điều hành Unix-like (bao gồm Linux), Shell là một trình thông dịch dòng lệnh (command-line interpreter) cung cấp giao diện để người dùng tương tác với kernel của hệ điều hành. Nó nhận lệnh từ người dùng, phân tích cú pháp và thực thi chúng.

Tuy nhiên, sh thường được hiểu là một phiên bản cụ thể của Shell, thường là Bourne Shell (viết tắt là sh). Ngày nay, hầu hết các hệ thống Linux đều sử dụng Bash (Bourne Again Shell) làm shell mặc định. Bash là một phiên bản cải tiến của Bourne Shell, cung cấp nhiều tính năng mạnh mẽ hơn như khả năng chỉnh sửa dòng lệnh, lịch sử lệnh, và khả năng hoàn thành lệnh tự động.

Sự khác biệt giữa sh và bash là gì?

Mặc dù Bash là shell mặc định, lệnh sh vẫn tồn tại và thường là một liên kết tượng trưng (symbolic link) đến Bash hoặc một shell tương thích với Bourne Shell. Điều này đảm bảo tính tương thích ngược cho các script cũ được viết cho Bourne Shell.

Khi bạn chạy một script bằng lệnh sh script.sh, hệ thống sẽ sử dụng shell được liên kết với sh để thực thi script. Trong hầu hết các trường hợp, nó sẽ là Bash, nhưng nó có thể là một shell khác như Dash (Debian Almquist Shell) được tối ưu hóa cho tốc độ.

Cú pháp cơ bản của lệnh sh

Cú pháp cơ bản của lệnh sh khá đơn giản. Bạn chỉ cần gõ lệnh và các tham số (nếu có) vào terminal, sau đó nhấn Enter. Ví dụ:

sh script.sh

Trong đó, script.sh là tên của file script bạn muốn thực thi. Bạn cũng có thể chạy các lệnh đơn lẻ trực tiếp từ dòng lệnh:

sh -c "echo Hello World"

Ở đây, -c cho phép bạn chỉ định một lệnh để thực thi trực tiếp.

Các lệnh sh cơ bản cần biết

Dưới đây là một số lệnh sh cơ bản mà bạn nên làm quen:

  • echo: In ra màn hình một chuỗi văn bản. Ví dụ: echo "Hello World"
  • ls: Liệt kê các file và thư mục trong thư mục hiện tại. Ví dụ: ls -l (liệt kê chi tiết)
  • cd: Thay đổi thư mục hiện tại. Ví dụ: cd /home/user/documents
  • pwd: In ra đường dẫn đầy đủ của thư mục hiện tại.
  • mkdir: Tạo một thư mục mới. Ví dụ: mkdir new_directory
  • rmdir: Xóa một thư mục trống. Ví dụ: rmdir empty_directory
  • rm: Xóa file hoặc thư mục (cẩn thận khi sử dụng!). Ví dụ: rm file.txt (xóa file), rm -r directory (xóa thư mục và nội dung bên trong)
  • cp: Sao chép file hoặc thư mục. Ví dụ: cp file.txt new_file.txt (sao chép file)
  • mv: Di chuyển hoặc đổi tên file hoặc thư mục. Ví dụ: mv file.txt new_location/ (di chuyển file), mv file.txt new_name.txt (đổi tên file)
  • cat: Hiển thị nội dung của một file. Ví dụ: cat file.txt
  • head: Hiển thị những dòng đầu tiên của một file. Ví dụ: head -n 10 file.txt (hiển thị 10 dòng đầu tiên)
  • tail: Hiển thị những dòng cuối cùng của một file. Ví dụ: tail -n 10 file.txt (hiển thị 10 dòng cuối cùng)
  • grep: Tìm kiếm một chuỗi văn bản trong một file. Ví dụ: grep "keyword" file.txt

Ví dụ thực tế sử dụng lệnh sh

Để hiểu rõ hơn về cách sử dụng lệnh sh, chúng ta hãy xem xét một vài ví dụ thực tế:

  1. Tạo một script đơn giản để in ra thông tin hệ thống:
    #!/bin/sh
    echo "Thông tin hệ thống:"
    echo "Tên máy chủ: $(hostname)"
    echo "Ngày giờ hiện tại: $(date)"
    echo "Người dùng hiện tại: $(whoami)"
    

    Lưu script này với tên system_info.sh và cấp quyền thực thi bằng lệnh chmod +x system_info.sh. Sau đó, chạy script bằng lệnh ./system_info.sh.

  2. Tạo một script để sao lưu một thư mục:
    #!/bin/sh
    SOURCE_DIR="/path/to/your/directory"
    BACKUP_DIR="/path/to/your/backup/directory"
    DATE=$(date +%Y%m%d%H%M%S)
    BACKUP_FILE="$BACKUP_DIR/backup_$DATE.tar.gz"
    
    echo "Bắt đầu sao lưu thư mục $SOURCE_DIR vào $BACKUP_FILE..."
    tar -czvf "$BACKUP_FILE" "$SOURCE_DIR"
    echo "Sao lưu hoàn tất!"
    

    Thay đổi các biến SOURCE_DIR và BACKUP_DIR cho phù hợp với hệ thống của bạn. Sau đó, lưu script này với tên backup.sh và cấp quyền thực thi bằng lệnh chmod +x backup.sh. Chạy script bằng lệnh ./backup.sh.

  3. Sử dụng grep để tìm kiếm các file chứa một chuỗi cụ thể:
    grep -r "error" /var/log/

    Lệnh này sẽ tìm kiếm tất cả các file trong thư mục /var/log/ (và các thư mục con) chứa chuỗi "error". Tham số -r cho phép tìm kiếm đệ quy.

Bảng so sánh sh và bash

Tính năng sh (Bourne Shell) bash (Bourne Again Shell)
Tính tương thích Cao, tương thích với hầu hết các hệ thống Unix-like Tương thích tốt, nhưng có thể có một số khác biệt nhỏ
Tính năng Cơ bản, ít tính năng nâng cao Nhiều tính năng nâng cao như hoàn thành lệnh, lịch sử lệnh, chỉnh sửa dòng lệnh, v.v.
Hiệu năng Có thể nhanh hơn trong một số trường hợp Thường chậm hơn một chút so với sh
Sử dụng mặc định Không còn là shell mặc định trên hầu hết các hệ thống Linux Shell mặc định trên hầu hết các hệ thống Linux
Hỗ trợ Ít được hỗ trợ và phát triển Được hỗ trợ và phát triển tích cực

Mẹo và thủ thuật khi sử dụng lệnh sh

  • Sử dụng #!/bin/sh hoặc #!/bin/bash ở đầu script: Dòng này (shebang) cho biết shell nào sẽ được sử dụng để thực thi script.
  • Sử dụng dấu ngoặc kép (") để bao quanh các chuỗi văn bản: Điều này giúp ngăn chặn việc phân tách từ không mong muốn.
  • Sử dụng dấu đô la ($) để truy cập giá trị của biến: Ví dụ: echo "Tên người dùng: $USER"
  • Sử dụng lệnh man để tìm hiểu thêm về một lệnh cụ thể: Ví dụ: man ls (hiển thị trang hướng dẫn sử dụng lệnh ls)
  • Thực hành thường xuyên: Cách tốt nhất để làm quen với lệnh sh là thực hành sử dụng nó thường xuyên.

Các tình huống thực tế khi sử dụng sh

Lệnh sh rất hữu ích trong nhiều tình huống thực tế, bao gồm:

  • Tự động hóa các tác vụ hệ thống: Viết script để tự động sao lưu dữ liệu, giám sát hiệu suất hệ thống, v.v.
  • Quản lý server: Sử dụng lệnh sh để quản lý các server từ xa thông qua SSH.
  • Xử lý dữ liệu: Sử dụng lệnh sh để lọc, chuyển đổi và phân tích dữ liệu từ các file văn bản.
  • Triển khai ứng dụng: Viết script để tự động triển khai ứng dụng lên server.
  • Tạo các công cụ dòng lệnh tùy chỉnh: Sử dụng lệnh sh để tạo các công cụ dòng lệnh nhỏ gọn để thực hiện các tác vụ cụ thể.

FAQ về lệnh sh

  1. Làm thế nào để biết shell mặc định của tôi là gì?

    Bạn có thể sử dụng lệnh echo $SHELL để hiển thị shell mặc định của bạn.

  2. Làm thế nào để thay đổi shell mặc định của tôi?

    Bạn có thể sử dụng lệnh chsh để thay đổi shell mặc định của bạn. Ví dụ: chsh -s /bin/bash để thay đổi shell mặc định thành Bash.

  3. Tại sao script của tôi không chạy?

    Đảm bảo rằng script của bạn có quyền thực thi (chmod +x script.sh) và có dòng shebang (#!/bin/sh hoặc #!/bin/bash) ở đầu file.

  4. Làm thế nào để gỡ lỗi script sh?

    Bạn có thể sử dụng tùy chọn -x để theo dõi quá trình thực thi script. Ví dụ: sh -x script.sh.

  5. Làm thế nào để thoát khỏi một script đang chạy?

    Bạn có thể nhấn tổ hợp phím Ctrl+C để dừng một script đang chạy.

Kết luận

Lệnh sh là một công cụ mạnh mẽ và linh hoạt cho phép bạn tương tác trực tiếp với hệ điều hành Linux. Mặc dù có thể hơi khó khăn để làm quen lúc ban đầu, nhưng việc nắm vững các lệnh cơ bản và cách sử dụng sh sẽ giúp bạn làm việc hiệu quả hơn với Linux và mở ra nhiều khả năng tự động hóa và quản lý hệ thống. Hãy bắt đầu khám phá và thực hành ngay hôm nay để tận dụng tối đa sức mạnh của lệnh sh!

Last Updated : 22/08/2025