Tạo tập lệnh của riêng bạn bằng cách sử dụng bash

Học Linux

Bất kể bản phân phối Linux chúng tôi đang sử dụng là gì, tôi không nghi ngờ điều yêu thích của tôi là Ubuntu― ngay sau khi chúng tôi bắt đầu sử dụng hệ thống này, nhất định nhu cầu tự động hóa. Đó là: tạo của chúng tôi lệnh riêng thực hiện các lệnh nhất định theo cách được cá nhân hóa. Nhu cầu này có thể do một số nguyên nhân:

  • Đơn giản hóa cú pháp của các lệnh mà chúng tôi thường thực hiện.
  • Thực hiện các hành động bao gồm bất kỳ cần điều đó không được thấy trước trong hệ thống hoạt động.
  • Đơn đặt hàng theo trình tự mà chúng tôi sẵn sàng lặp lại.

Mặc dù một tập lệnh bash có thể được chạy trong / từ bất kỳ thư mục nào, nhưng nó thường tạo một thư mục để lưu trữ các tập lệnh này. Trong trường hợp của tôi:

$ mkdir /home/pedro/.bin

tôi tin thư mục (ẩn bằng cách đứng đầu dấu chấm ở phía trước tên) để giữ tất cả các tập lệnh tôi sử dụng ở đó. Tên của thư mục bị ẩn không có ý nghĩa nào khác ngoài - trừ khi được chỉ định rõ ràng khác - sẽ không xuất hiện khi xem / home / pedro từ trình xem tệp ở chế độ đồ họa.

Bây giờ bạn phải thông báo cho Linux rằng nó cũng nên tìm ở đó (/home/pedro/.bin) các lệnh được thực hiện từ thiết bị đầu cuối.

$ PATH=$PATH;/home/pedro/.bin

Bằng cách này, hệ thống sẽ tìm kiếm các đơn đặt hàng của chúng tôi ở đó cho đến khi chúng tôi kết thúc phiên họp. Để làm cho liên kết này tồn tại vĩnh viễn:

$ sudo nano /etc/environment

và chúng tôi thêm

:/home/pedro/.bin

ở cuối dòng PATH, điều rất quan trọng là không được quên dấu hai chấm trước địa chỉ của thư mục mà chúng ta đang bao gồm, vì đây là cơ chế bổ sung.

Tập lệnh từng bước đầu tiên của chúng tôi

Chúng tôi tạo tệp của mình, như thế này trong trường hợp của tôi:

$ touch ~/.bin/donde

Và để chỉnh sửa nó, bạn có thể sử dụng trình chỉnh sửa ưa thích của mình hoặc làm theo chỉ dẫn sau:

$ gedit ~/.bin/donde &

Và chúng tôi thêm nội dung sau:

#!/usr/bin/env bash

if [ $# -lt 1 ];
then
    echo "Necesitas pasar un parámetro"
else
    whereis $1
fi

Phân tích kịch bản

Cuộc gọi đầu tiên của chúng tôi «công việc»(#! / Usr / bin / env bash) yêu cầu Linux báo cáo bash shell nằm ở đâu và những gì tiếp theo được thực thi theo yêu cầu của bash. Đề phòng này thật thuận tiện để đảm bảo rằng tập lệnh của chúng tôi hoạt động trên bất kỳ cài đặt nào. Có thể khác công việc anh ấy cười:

#!/bin/bash

Sự khác biệt giữa chúng có thể rất kỳ lạ, và tôi sẽ giải thích điều đó. Trong này cuối cùng Tôi giả định rằng trong hệ thống của chúng tôi bash shell ở địa chỉ / bin / bash. Tuy nhiên, nơi tôi đề xuất trong kịch bản Tôi đoán tôi không biết nó ở đâu thông dịch viên bash. Tôi yêu cầu hệ thống cung cấp cho anh ta địa chỉ đó.

Dòng thứ ba: Như bạn có thể thấy, dòng thứ hai là dấu nếu. Đối với bash các ký tự «$#« chứa số lượng tham số mà chúng tôi đang chuyển từ dòng lệnh. Do đó, »if [$ # -lt 1];» nghĩa đen có nghĩa là "nếu số lượng tham số nhỏ hơn 1".

Dòng thứ tư: Sau đó (dịch theo nghĩa đen từ tiếng Anh: sau đó), ở đây nó được chỉ ra rằng điều gì xảy ra tiếp theo sẽ được thực hiện khi đánh giá điều kiện if đúng: nói cách khác, số lượng tham số nhỏ hơn 1, tức là số không.

Dòng thứ năm: Nếu chúng tôi thực thi tập lệnh của mình mà không có bất kỳ tham số nào, chúng tôi sẽ hiển thị trong terminal «Bạn cần truyền một tham số».

Dòng thứ sáu: Cho biết những gì tiếp theo sẽ được thực thi khi điều kiện chúng tôi đã khai báo không đúng sự thật.

Dòng thứ bảy: Se chạy lệnh «ở đâu« kèm theo nội dung mà chúng tôi đã thông qua là tham số đầu tiên.

Dòng thứ tám: với «fi»Cho biết rằng khối kết thúc if.

Kiểm tra tập lệnh của chúng tôi

Điều quan trọng là thêm quyền ghi vào kịch bản:

$ chmod -x ~/.bin/donde

Nếu không có điều này, lỗi "quyền bị từ chối" sẽ xuất hiện.. Sau đó, chúng ta có thể chạy tập lệnh của mình.

$ donde php

Nó sẽ hiển thị cho chúng tôi vị trí của các tệp nhị phân php, các tệp nguồn của chúng và các trang người dùng. Một cái gì đó như thế:

php: /usr/bin/php7.0 /usr/bin/php /usr/lib/php /etc/php 
/usr/share/php7.0-readline /usr/share/php7.0-json /usr/share/php7.0-opcache 
/usr/share/php7.0-common /usr/share/php /usr/share/man/man1/php.1.gz

Khai thác

  • Chúng tôi cho phép một Thư mục ".bin" để chứa các tập lệnh của chúng tôi.
  • Chúng tôi cung cấp thông tin cho Linux để đưa thư mục này vào các tìm kiếm lệnh của nó.
  • Chúng tôi tạo ra kịch bản của chúng tôi.
  • Sự khác biệt giữa khác nhau công việc.
  • Sử dụng số tham số được truyền với $ #.
  • Sử dụng tham số đầu tiên với $1.

Tôi hy vọng và ước rằng kịch bản này hữu ích cho bạn.


Để 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.   miguel dijo

    Rất tốt và được giải thích rõ ràng, nhưng tham số đề cập đến điều gì?

    1.    Hình ảnh trình giữ chỗ Pedro Ruiz Hidalgo dijo

      Cảm ơn Miguel!

      Tôi hiểu theo tham số tất cả thông tin bổ sung được cung cấp cho một chương trình, chức năng hoặc hệ thống. Vì điều này có thể phức tạp, hãy để tôi trả lời bạn bằng một vài ví dụ.

      Trong lệnh linux để sao chép tệp a.txt vào tệp b.txt, chúng tôi sẽ viết như sau:

      $cp a.txt b.txt

      Chương trình cp ở đây nhận hai tham số là tên của hai tệp, tệp đầu tiên (phải tồn tại) a.txt và b.txt thứ hai.

      Một ví dụ khác: Nếu bạn gửi để in từ bảng điều khiển bằng lệnh

      $ lp file.pdf

      Trong trường hợp này "file.pdf" là một tham số cho chương trình lp.

      Tôi hy vọng tôi đã thỏa mãn những nghi ngờ của bạn.

      Liên quan

  2.   miguel dijo

    Ý kiến ​​của tôi không được đưa ra, đó là sự thiếu tôn trọng, tôi không quay lại diễn đàn này một lần nữa.

    1.    Hình ảnh trình giữ chỗ Pedro Ruiz Hidalgo dijo

      Tôi không biết những gì đã xảy ra, trong mọi trường hợp nó đã được xuất bản.

      Chúc mừng.