Lập trình trong bash - phần 1

Mặc dù chúng tôi thường sử dụng nó cho các hoạt động quản trị hoặc quản lý tệp, thoải mái de Linux mở rộng chức năng vượt xa mục đích đó, cho phép chúng tôi lập trình kịch bản Hướng dẫn này không nhằm mục đích là tài liệu tham khảo đầy đủ về lập trình Bash mà là giới thiệu về các lệnh và cấu trúc cơ bản, cho phép chúng tôi mở rộng sức mạnh của hệ thống GNU / Linux của mình.

"Script" là gì?

Về cơ bản, chúng tôi nói rằng nó là một tệp chứa mã được viết bằng một ngôn ngữ lập trình nhất định mà hệ thống sử dụng cho một tác vụ nhất định. Nó không cần phải có đầu vào bên ngoài hoặc giao diện đồ họa, nhưng nó cần tạo ra đầu ra của dữ liệu đã xử lý (ngay cả khi người dùng không nhìn thấy nó).

Ngôn ngữ mà Bash sử dụng được định nghĩa bởi trình thông dịch riêng của nó và kết hợp cú pháp của các Shell khác, chẳng hạn như Korn Shell (ksh) hoặc C Shell (csh). Nhiều lệnh thường được sử dụng trong bảng điều khiển cũng có thể được sử dụng trong các tập lệnh, ngoại trừ những lệnh liên quan chặt chẽ đến một bản phân phối cụ thể.

Cấu trúc của một tập lệnh

Để bắt đầu, chúng ta phải có một trình soạn thảo văn bản và mong muốn lập trình. Các tệp mà chúng tôi lưu với phần mở rộng .sh có thể được thực thi (hoặc thông dịch) bởi bảng điều khiển, miễn là dòng đầu tiên như sau:

#! / bin / bash

Điều này yêu cầu hệ thống sử dụng bảng điều khiển để chạy tệp. Ngoài ra, ký tự # cho phép bạn viết bình luận. Để tạo ví dụ đơn giản nhất, chúng tôi thêm một dòng nữa, được nhìn thấy trong hình ảnh sau:

Lệnh echo hiển thị thông báo trên màn hình, trong trường hợp này là "Hello world!" Nếu chúng ta lưu nó và thực thi nó bằng bảng điều khiển, chúng ta sẽ thấy kết quả.

Các lệnh cơ bản

Các lệnh sau đây là phổ biến và rất hữu ích cho bất kỳ loại chương trình nào. Chúng tôi làm rõ rằng còn nhiều điều khác nữa, nhưng bây giờ chúng tôi sẽ đề cập đến phần sau.

Bí danh: cho phép một chuỗi từ được thay thế bằng một chuỗi ngắn hơn, cho phép giảm mã.

# tạo bí danh được gọi là per với địa chỉ của thư mục #Downloads bí danh per = '/ home / user / Downloads' # Mỗi khi muốn sử dụng, chúng tôi chỉ cần gọi # từ mới per # Để hủy bí danh đó, chúng tôi sử dụng unalias unalias per

break: cho phép bạn thoát ngay khỏi vòng lặp for, while, Until hoặc select (chúng ta sẽ nghiên cứu chi tiết về vòng lặp sau)

# Tạo vòng lặp sẽ gán các số từ 1 đến 5 # cho mỗi "lượt của vòng lặp" cho bộ đếm trong 1 2 3 4 5 do # Chúng tôi in giá trị hiện tại của biến #counter, được phân tích bởi ký tự $ echo "$ counter" #Nếu giá trị của bộ đếm bằng 3 nếu [$ counter –eq 3] thì #The break thoát khỏi vòng lặp để break fi xong

tiếp tục - Tương tự như break, ngoại trừ việc nó bỏ qua vòng lặp hiện tại và chuyển sang vòng tiếp theo.

# Tạo vòng lặp sẽ gán các số từ 1 đến 5 # cho mỗi "lượt của vòng lặp" cho bộ đếm trong 1 2 3 4 5 do # Nếu giá trị bộ đếm bằng 3 nếu [$ counter –eq 3] thì # Tiếp tục ngăn phần còn lại của chu kỳ # hiện tại không được phân tích bằng cách chuyển sang vòng tiếp theo, tức là # giá trị 3 sẽ không được in. tiếp tục fi echo "$ counter" xong

Khai báo: khai báo các biến và gán giá trị cho chúng, giống như tập hợp chữ (chúng hoạt động giống nhau). Chúng ta có thể kết hợp nó với một số tùy chọn: -i khai báo số nguyên; -r cho các biến chỉ đọc, không thể thay đổi giá trị của nó; –A cho mảng hoặc “mảng”; -f cho các chức năng; -x cho các biến có thể được "xuất" ra bên ngoài môi trường của chính tập lệnh.

khai báo –i num = 12 khai báo –x pi = 3.14

help: hiển thị trợ giúp cho một lệnh cụ thể.

job: hiển thị các tiến trình đang chạy.

# Với –c chúng ta hiển thị tên của các lệnh, với –p # là pid (id tiến trình) của mỗi tiến trình. việc làm -cp

let: đánh giá một biểu thức số học

let a = 11 let a = a + 5 # Cuối cùng chúng ta in ra giá trị của a là 16 echo "11 + 5 = $ a"

local: tạo các biến cục bộ, tốt nhất nên được sử dụng trong các hàm của chính script để tránh lỗi. Bạn có thể sử dụng các chức năng tương tự như lệnh khai báo.

local v1 = "Đây là một biến cục bộ"

đăng xuất: cho phép đăng xuất hoàn toàn khỏi Shell; hữu ích cho các trường hợp chúng ta làm việc với nhiều cửa sổ shell, trong đó lệnh exit sẽ chỉ cho phép kết thúc một cửa sổ tại một thời điểm.

printf: cho phép bạn in dữ liệu và định dạng nó. Nó có nhiều tùy chọn, vì vậy chúng tôi sẽ đề cập đến một vài.

#% f in ra dưới dạng số thực, n cho # dòng mới printf "% fn" 5 5.000000 # & d cho phép chuyển số thập phân dưới dạng đối số printf "Có% d đơn hàng có giá trị bằng% d đô la.n" 20 500 Có 20 đơn đặt hàng trị giá 500 đô la.

read: đọc một dòng từ đầu vào chuẩn (mô-đun được sử dụng để tải dữ liệu qua bàn phím chẳng hạn). Chúng ta có thể chuyển các tùy chọn như: -t để đưa ra thời gian giới hạn đọc; -a để mỗi từ được gán cho một vị trí trong mảng tên; -d để sử dụng dấu phân cách sẽ được viết ở cuối dòng; trong số những người khác.

echo "Nhập tên của bạn và nhấn ENTER" # Đọc tên biến đọc tên echo "Tên của bạn là $ name"

type: mô tả một lệnh và hành vi của nó. Nó có thể hữu ích để tìm ra các định nghĩa dữ liệu cho mỗi lệnh.

type –a '[' #type cho chúng ta biết rằng [là lệnh nội trang Shell [là lệnh nội trang Shell # -a cho phép tìm các thư mục chứa # tệp thực thi với tên đã viết. [is / usr / bin / [

ulimit: giới hạn quyền truy cập và sử dụng các tài nguyên hệ thống nhất định đối với các quy trình, lý tưởng cho các chương trình cho phép thay đổi quản trị hoặc nhằm vào các loại người dùng khác nhau. Khi đặt giới hạn, chúng ta viết một số đại diện cho số kilobyte của giới hạn.

# Chúng tôi thấy giới hạn hiện tại của chúng tôi ulimit –a # -f cho phép bạn giới hạn người dùng không thể # tạo tệp lớn hơn 512000 Kb (500 #Mb) ulimit –f 512000 # -v giới hạn bộ nhớ ảo của quá trình. ulimit –v 512000

wait: đợi một quá trình hoặc công việc nào đó được thực hiện để tiếp tục.

# Tập lệnh chờ quá trình pid # 2585 được thực hiện

đợi 2585

Các lệnh hữu ích khác mà chúng ta có thể thêm vào tập lệnh được biểu diễn bằng các ký hiệu.

!!: chạy lại lệnh cuối cùng

! wer: thực hiện lệnh cuối cùng bắt đầu bằng biểu thức “wer”.

'==', '! =', '>', '<', '> =', và '<=': toán tử quan hệ.

|: Toán tử OR thường được sử dụng để nối hai biểu thức chính quy.

: lệnh thoát cho phép bạn định dạng các biểu thức. Ví dụ: a cho cảnh báo bằng âm thanh, n cho dòng mới, b cho phím xóa lùi, v.v.

Cảm ơn Juan Carlos Ortiz!

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Khó trung bình dijo

    Tuyệt quá! Dù sao 2 nhận xét: Thẻ Ubuntu quá nhiều một nửa, vì nó khái quát một cái gì đó chung chung. Và nếu các hướng dẫn này tiếp tục phát triển, sẽ rất tốt nếu chúng được liên kết với nhau….
    Ngoài ra, động thái này thật thú vị!

  2.   Hãy sử dụng Linux dijo

    Đóng góp tốt! Tuyệt quá!

  3.   Giovanni escobar sosa dijo

    Chỉ thiếu tài liệu tham khảo cho những người muốn tìm hiểu thêm về vấn đề này. Một số tốt mặc dù không dễ tìm thấy ở nước ta là
    - Hướng dẫn thực hành về Lệnh, Trình chỉnh sửa và Lập trình Shell của Linux, Mark Sobell (Chương 8)
    - Lập trình Pro Bash, Chris FA Johnson (mặc dù điều này dành cho những người có tài liệu tham khảo khác hoặc có thêm một chút kiến ​​thức).

    Tốt bài viết.

  4.   Hãy sử dụng Linux dijo

    Hẹn hò vui vẻ! Cảm ơn bạn!

  5.   Patricio Dorantes Jamarne dijo

    : @ Chức năng "đăng nhập với tư cách" đã xóa nhận xét trước đây của tôi, vì vậy tôi sẽ tóm tắt thêm:
    việc làm -cp
    bash: công việc: -c: tùy chọn không hợp lệ
    việc làm: cách sử dụng: công việc [-lnprs] [jobspec…] hoặc lệnh job -x [args]

    -eq -gt -lt không chấp nhận biến số thập phân, giữa diễn đàn và diễn đàn, tôi phát hiện ra rằng bc là một đồng minh tốt:
    nếu [`echo 9.999> 10 | bc` -eq 1]; sau đó
    echo "9.999 lớn hơn 10, hãy đảm bảo rằng bộ xử lý của bạn vẫn hoạt động"
    khác
    echo «9.999 không lớn hơn 10, mọi thứ hoạt động bình thường
    fi

  6.   Không Đến Từ Brooklyn dijo

    Bài đăng này tóm tắt rất tốt tất cả những điều tổng quát về bash scripting:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Trên trang web này, bạn sẽ tìm thấy nhiều câu hỏi và câu trả lời về các đặc thù của bash:
    http://unix.stackexchange.com/questions/tagged/bash

    Dưới đây là một số script thực sự thú vị và bạn có thể học chúng bằng cách đọc script của người khác:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Không Đến Từ Brooklyn dijo

    Bạn đúng với những gì bạn nói, ngoại trừ sự dè bỉu. Mọi hệ thống tôi đã thấy đều có bash trong / bin / bash.

    Nhưng đối với python, perl, ruby, v.v., bạn có thể sử dụng nó. tôi làm

  8.   Guille dijo

    Thật trùng hợp, ở trường đại học, chúng tôi đang sử dụng kịch bản bash nên dữ liệu là 10, rất tốt!

  9.   alex tôi đã thấy dijo

    một phiên bản pdf để tải xuống sẽ là tốt! 😀

  10.   Marco Antonio De Fuentes dijo

    Trang web rất tốt. Cuối cùng tôi cũng tìm thấy một thứ hữu ích Cảm ơn bạn.