Shell Scripting là gì và tại sao bạn nên sử dụng nó

Shell Scripting là gì và tại sao bạn nên sử dụng nó

Shell là một chương trình trong hệ điều hành Linux hoặc Unix cho phép bạn nhập các lệnh để hệ thống thực thi. Khi một cửa sổ đầu cuối được mở trên máy tính linux, nó sẽ khởi động chương trình shell, chương trình này sẽ hiển thị một giao diện để nhập các lệnh. Giao diện này được gọi là giao diện dòng lệnh. Khi một lệnh được nhập vào, nó sẽ được thực thi bởi trình bao và đầu ra được hiển thị trên màn hình.





Ngoài việc có thể chấp nhận và thực hiện các lệnh một cách tương tác, shell cũng có thể thực hiện các lệnh được lưu trữ trong một tệp. Phương thức thực thi này được gọi là kịch bản shell và trong bài viết này, chúng tôi đề cập đến những điều cơ bản về shell scripting.





1. Lịch sử của Shell

Bắt đầu với Unix vào những năm 1970, có một chương trình shell được gọi là Vỏ V6 được phát triển bởi Ken Thomson. Đó là một trình bao tương tác và thiếu khả năng viết kịch bản.





Nó được theo sau bởi Bourne Shell vào năm 1977 và vẫn được sử dụng cho đến ngày nay làm trình bao mặc định cho nguồn gốc tài khoản. Lớp vỏ này bổ sung thêm khả năng viết kịch bản đã tỏ ra cực kỳ hữu ích trong thực tế qua nhiều năm.

Sự phát triển hơn nữa của vỏ trong những năm 1980 đã làm phát sinh nhiều biến thể vỏ phổ biến, trong đó phổ biến nhất là C-ShellKorn Shell . Mỗi shell này mang cú pháp riêng của nó, trong một số trường hợp, khác biệt đáng kể so với shell ban đầu.



Một trong những loại vỏ phổ biến nhất hiện nay là Bash Shell . Bash là viết tắt của Bourne-Again-Shell và là một biến thể được cải tiến rất nhiều của Bourne Shell ban đầu.

làm thế nào để bạn biết nếu ai đó đã chặn bạn trên instagram

Trong bài viết này, chúng tôi mô tả kịch bản shell cho Bash Shell .





2. Thực thi Shell Script

Làm thế nào để bạn thực hiện một tập lệnh shell? Đơn giản. Chỉ cần chuyển đường dẫn script làm đối số cho shell:

Một tập lệnh shell mẫu:





echo 'hello world'

Chạy nó như sau:

$ bash hello.sh
# prints
hello world

Ghi chú: Trình bao yêu cầu các dòng được kết thúc bằng các ký tự LF (Line-Feed). Nếu bạn viết tập lệnh shell của mình trên Windows và cố gắng thực thi nó trực tiếp trên hệ thống Linux, bạn có thể gặp lỗi. Windows sử dụng kết hợp CR-LF (Carriage-Return-Line-Feed) để kết thúc đường truyền. Điều này chỉ cần được chuyển đổi thành LF. Kiểm tra trình chỉnh sửa Windows của bạn để biết các cách thực hiện việc này.

Có một cách khác để thực thi một tập lệnh shell trực tiếp dưới dạng một lệnh. Chèn dòng sau ( hashbang khai báo) như dòng đầu tiên của tập lệnh shell của bạn.

tải phim miễn phí về điện thoại của tôi
#!/bin/bash

Với sự thay đổi này, tập lệnh shell đơn giản của chúng tôi bây giờ là:

#!/bin/bash
echo 'hello world'

Bây giờ, bạn cần làm cho tệp script có thể thực thi được như sau:

$ chmod +x hello.sh

Tại thời điểm này, bạn có thể thực thi tệp script trực tiếp mà không cần phải tham chiếu rõ ràng đến shell.

$ hello.sh
# prints
hello world

Bây giờ chúng ta hãy xem xét một số lợi thế của việc sử dụng shell script.

3. Tự động hóa tác vụ

Ưu điểm đầu tiên của việc sử dụng các tập lệnh shell là tự động hóa các tác vụ được thực thi thường xuyên. Giả sử bạn có một nhiệm vụ mà bạn cần phải thực hiện hàng ngày. Nếu bạn cần thực thi nhiều lệnh trên hệ thống linux của mình hàng ngày, bạn có thể lưu trữ các lệnh này trong một tệp và chạy tập lệnh. Những ví dụ bao gồm:

  • Lưu trữ và tải lên một tệp hoặc thư mục hàng ngày vào một cơ sở lưu trữ đám mây chẳng hạn như S3.
  • Nén các tệp nhật ký có xu hướng phát triển hàng ngày.
  • Tìm nạp giá cổ phiếu, phân tích cú pháp dữ liệu đã tìm nạp và kích hoạt email hoặc SMS khi đáp ứng các điều kiện nhất định (giá quá cao hoặc quá thấp).

4. Kết hợp nhiều lệnh

Ngoài việc tự động hóa các tác vụ thường xuyên, bạn cũng có thể thấy thuận lợi là bạn có thể kết hợp nhiều chuỗi lệnh thành một lệnh duy nhất. Việc ghi nhớ một lệnh đơn giản hơn nhiều lệnh, đó là chưa kể đến thứ tự mà chúng phải được thực hiện.

Một ví dụ sẽ là trình tự khởi động của chính Hệ điều hành Linux. Là một phần của khởi động, hệ điều hành thực hiện một số lệnh để đưa hệ thống vào trạng thái thích hợp. Các lệnh này thực sự là các tập lệnh shell nằm dưới /Vân vân danh mục. Nếu bạn nhìn vào một trong những tập lệnh shell này, bạn sẽ nhận ra sự phức tạp của việc khởi động một hệ thống, điều mà bạn có thể phải thực hiện bằng tay nếu không có các tập lệnh shell.

Sau đây là một kịch bản shell mẫu, / etc / profile , được thực thi mỗi khi người dùng đăng nhập. Hãy tưởng tượng bạn đang gõ các lệnh này bằng tay!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. Dễ dàng phát triển hơn

Có thể thực hiện các hành động tương tự như một tập lệnh shell bên trong một chương trình thông thường được viết bằng C / C ++. Tuy nhiên, việc viết và gỡ lỗi một tập lệnh shell dễ dàng hơn nhiều so với một chương trình C / C ++. Đặc biệt là đối với các tác vụ quản trị hệ thống bao gồm thực hiện các lệnh bên ngoài, tạo và xóa tệp và thư mục, chuyển hướng đầu ra, v.v.

Các chương trình C / C ++ tốt hơn cho mức hoạt động thấp hơn nhiều, chẳng hạn như thực hiện lệnh gọi hệ thống, thao tác cấu trúc dữ liệu, v.v.

6. Tính minh bạch

Một tập lệnh shell, do là một tệp văn bản, có thể dễ dàng được xem để kiểm tra những hành động mà nó đang thực hiện. Ngược lại, cách duy nhất bạn có thể biết chương trình được viết bằng ngôn ngữ như C / C ++ (và được biên dịch thành tệp thực thi) đang làm gì là nếu nó chọn cho bạn biết hoặc bạn có quyền truy cập vào mã nguồn hay không. Ví dụ: bạn có thể kiểm tra xem tập lệnh shell có đang xóa bất kỳ tệp nào không và nếu bạn cần các tệp đó, bạn có thể sao chép chúng sang một vị trí khác.

Việc chẩn đoán sự cố với các tập lệnh shell cũng dễ dàng hơn nhiều so với các chương trình thông thường vì bạn có thể nhìn vào mã nguồn. Tập lệnh đó không thành công vì một thư mục không tồn tại? Bạn có thể xem mã script và tạo thư mục (mặc dù một script shell hoạt động tốt nên kiểm tra và tạo nó để tránh những lỗi như vậy).

7. Di động

ĐẾN kịch bản shell có thể được chuyển sang các hệ điều hành giống Unix và Unix khác và được thực thi (nếu có bản thân shell). Ngay cả khi chuyển một tập lệnh shell từ các kiến ​​trúc khác nhau như x86, MIPS, Sparc, v.v., các tập lệnh shell vẫn linh động hơn nhiều so với các chương trình C / C ++.

Cách duy nhất một chương trình C / C ++ có thể được chuyển và sử dụng trên một hệ thống khác là sao chép mã nguồn, xây dựng chương trình và cố gắng chạy nó. Ngay cả khi đó, nó có thể không hoạt động như mong đợi nếu nó sử dụng mã dành riêng cho kiến ​​trúc.

Bây giờ bạn đã biết shell script là gì và nhiều ưu điểm của chúng, bạn có muốn sử dụng chúng cho các nhiệm vụ của mình không? Bạn đã gặp phải những vấn đề gì khi sử dụng chúng? Vui lòng cho chúng tôi biết trong phần bình luận bên dưới.

làm thế nào để xem bạn có bo mạch chủ nào
Đăng lại Đăng lại tiếng riu ríu E-mail 5 mẹo để nạp đầy năng lượng cho máy VirtualBox Linux của bạn

Bạn mệt mỏi với hiệu suất kém do các máy ảo cung cấp? Đây là những gì bạn nên làm để tăng hiệu suất VirtualBox của mình.

Đọc tiếp
Chủ đề liên quan
  • Lập trình
  • Linux Bash Shell
Giới thiệu về tác giả Jay Sridhar(17 bài báo đã xuất bản) Xem thêm từ Jay Sridhar

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký