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.
Rất tốt và được giải thích rõ ràng, nhưng tham số đề cập đến điều gì?
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
Ý 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.
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.