Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Hướng dẫn giới thiệu về Bash Scripting với 5 ví dụ thực tế

Hướng dẫn giới thiệu về Bash Scripting với 5 ví dụ thực tế Tương tự như loạt Unix Sed và Unix Awk đang phát triển của chúng tôi, chúng tôi sẽ đăng một số bài viết về Bash scripting, sẽ bao gồm tất cả các kỹ thuật kịch bản bash với các ví dụ thực tế.

Shell là một chương trình thông dịch các lệnh của người dùng. Các lệnh được nhập trực tiếp bởi người dùng hoặc được đọc từ một tệp được gọi là shell script.

Shell được gọi là shell tương tác, khi nó đọc trực tiếp đầu vào từ người dùng.

Shell được gọi là shell không tương tác, khi nó đọc các lệnh từ một tệp và thực thi nó. Trong trường hợp này, shell đọc từng dòng của tệp script từ trên xuống dưới và thực hiện từng lệnh như thể nó được người dùng gõ trực tiếp.

In giá trị của biến shell tích hợp sẵn $ -, để biết shell là tương tác hay không tương tác.

# echo $-
himBH

Lưu ý:biến $ - chứa “i” khi shell tương tác .

Unix có nhiều loại Vỏ. Bourne shell (sh), Bourne lại shell (bash), C shell (csh), Korn shell (ksh), Tenex C shell (tcsh). Sử dụng lệnh which hoặc whereis unix để tìm ra vị trí của một trình bao cụ thể như được hiển thị bên dưới.

# which bash
/bin/bash

# whereis bash
bash: /bin/bash /usr/share/man/man1/bash.1.gz

Bạn có thể chuyển đổi giữa các trình bao bằng cách nhập tên trình bao. Ví dụ:gõ csh để chuyển sang C. shell.

Viết và thực thi tập lệnh shell

Ví dụ 1. Tập lệnh Hello World Bash

  1. Tạo tập lệnh bằng cách nhập hai dòng sau vào tệp bằng trình chỉnh sửa yêu thích của bạn.
  2. $ cat helloworld.sh
    #!/bin/bash
    echo Hello World
  3. Bạn có thể chọn bất kỳ tên nào cho tệp. Tên tệp không được giống với bất kỳ lệnh nào được tích hợp sẵn trong Unix.
  4. Tập lệnh luôn bắt đầu bằng hai ký tự ‘#!’ được gọi là she-bang. Điều này cho thấy rằng tệp là một tập lệnh và phải được thực thi bằng trình thông dịch (/ bin / bash) được chỉ định bởi phần còn lại của dòng đầu tiên trong tệp.
  5. Thực thi tập lệnh như được hiển thị bên dưới. Nếu bạn gặp bất kỳ sự cố nào khi thực thi tập lệnh shell, hãy tham khảo hướng dẫn thực thi tập lệnh shell
  6. $ bash helloworld.sh
    Hello World
  7. Khi bạn thực thi lệnh “bash helloworld.sh”, nó sẽ khởi động trình bao không tương tác và chuyển tên tệp làm đối số cho nó.
  8. Dòng đầu tiên cho hệ điều hành biết trình bao nào sẽ sinh ra để thực thi tập lệnh.
  9. Trong ví dụ trên, trình thông dịch bash thông dịch tập lệnh và thực hiện các lệnh lần lượt từ trên xuống dưới.
  10. Bạn thậm chí có thể thực thi tập lệnh, không có “bash” ở đầu bởi:
    • Thay đổi quyền trên tập lệnh để cho phép bạn (Người dùng) thực thi nó bằng cách sử dụng lệnh “chmod u + x helloworld.sh”.
    • Thư mục chứa tập lệnh phải được đưa vào biến môi trường PATH. Nếu không được bao gồm, bạn có thể thực thi tập lệnh bằng cách chỉ định đường dẫn tuyệt đối của tập lệnh.
  11. echo là một lệnh chỉ xuất ra đối số mà chúng tôi cung cấp cho nó. Nó cũng được sử dụng để in giá trị của biến.

Tệp Bash-Startup

Như chúng ta đã thảo luận trước đó trong bài viết về trình tự thực thi cho .bash_profile và các tệp liên quan, khi bash được gọi dưới dạng một shell tương tác, trước tiên nó sẽ đọc và thực thi các lệnh từ / etc / profile. Nếu / etc / profile không tồn tại, nó sẽ đọc và thực thi các lệnh từ ~ / .bash_profile, ~ / .bash_login và ~ / .profile theo thứ tự đã cho. Tùy chọn –noprofile có thể được sử dụng khi trình bao được khởi động để ngăn chặn hành vi này.

Thông thường, bash_profile của bạn thực thi ~ / .bashrc. Nếu bạn thích, bạn có thể hiển thị một thông báo chào mừng. Điều này chỉ chạy khi bạn đăng nhập lần đầu tiên. Bạn có thể xuất các biến bất cứ thứ gì bạn muốn và bạn có thể đặt bí danh sẽ chạy và khả dụng sau khi bạn mở trình bao. Khi trình bao đăng nhập thoát ra, Bash đọc và thực thi các lệnh từ tệp ~ / .bash_logout.

Ví dụ 2. In thông báo chào mừng khi bạn đăng nhập

Nhập nội dung sau vào tệp bash_profile của bạn. Nếu tệp không tồn tại, hãy tạo tệp có nội dung bên dưới.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

Khi bạn đăng nhập vào một trình bao tương tác, bạn sẽ thấy thông báo chào mừng như được hiển thị bên dưới.

login as: root
root@dev-db's password:
Welcome on dev-db

Ví dụ 3. In thông tin liên quan đến hệ thống

Khi bạn đăng nhập vào một trình bao tương tác, bạn có thể hiển thị tên của hạt nhân được cài đặt trong máy chủ, phiên bản bash, thời gian hoạt động và thời gian trong máy chủ.

$cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

Khi bạn khởi chạy một trình bao tương tác, nó sẽ in thông báo như được hiển thị bên dưới.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information: Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime: 11:24:01 up 21 days, 13:15, 3 users, load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Ví dụ 4. In chi tiết đăng nhập lần cuối

Nếu nhiều người dùng đang sử dụng cùng một máy với cùng một thông tin đăng nhập, thì các chi tiết như máy mà lần đăng nhập cuối cùng đã xảy ra và thời gian họ đăng nhập sẽ là chi tiết hữu ích nhất. Ví dụ này in chi tiết đăng nhập cuối cùng trong quá trình khởi động trình bao tương tác.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

lastlog | grep "gốc" | awk {'print "Lần đăng nhập cuối cùng từ:" $ 3

print "Ngày &Giờ đăng nhập lần cuối:", $ 4, $ 5, $ 6, $ 7, $ 8, $ 9;} '
Trong khi khởi động, bạn sẽ nhận được thông báo như hình dưới đây.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information: Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime: 11:24:01 up 21 days, 13:15, 3 users, load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Lần đăng nhập cuối cùng từ:sasikala-laptop

Ngày và giờ đăng nhập lần cuối:Thứ ba 22 tháng 2 11:24:01 +0100 2010

Ví dụ 5. Xuất biến và đặt bí danh trong quá trình khởi động

Các lệnh phổ biến nhất mà bạn sẽ sử dụng trong các tệp .bashrc và .bash_profile của mình là lệnh xuất và bí danh.

Bí danh chỉ đơn giản là thay thế một đoạn văn bản này cho một đoạn văn bản khác. Khi bạn chạy một bí danh, nó chỉ đơn giản thay thế những gì bạn đã nhập bằng những gì bí danh tương đương. Ví dụ:nếu bạn muốn đặt bí danh cho lệnh ls để liệt kê các tệp / thư mục với màu sắc, hãy làm như sau:

alias ls 'ls --color=tty'

Nếu bạn thêm lệnh này vào một trong các tệp khởi động, bạn có thể thực hiện lệnh ls, tại đây lệnh này sẽ tự động được thay thế bằng lệnh ls –color =tty.

Lệnh Export được sử dụng để thiết lập một biến môi trường. Các biến môi trường khác nhau được sử dụng bởi hệ thống hoặc các ứng dụng khác. Chúng chỉ đơn giản là một cách thiết lập các tham số mà bất kỳ ứng dụng / tập lệnh nào cũng có thể đọc được. Nếu bạn đặt một biến mà không có lệnh xuất, thì biến đó chỉ tồn tại cho quy trình cụ thể đó.

Trong ví dụ dưới đây, nó đang xuất biến môi trường HISTSIZE. Dòng bắt đầu bằng # là dòng nhận xét.

$ cat /etc/profile
alias ls 'ls --color=tty'

# Setup some environment variables.
export HISTSIZE=1000

PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc

export PATH

export SVN_SH=${SVN_RSH-ssh}