صرف نظر از توزیع لینوکس که ما از آن استفاده می کنیم ، شکی نیست که مورد علاقه من اوبونتو است به محض استفاده از این سیستم ، نیازهای اتوماسیون. یعنی: ما را ایجاد کنید دستورات خود که دستورات خاصی را به روشی شخصی انجام می دهند. این نیاز می تواند به دلایل خاصی باشد:
- نحو را ساده کنید از دستوراتی که معمولاً اجرا می کنیم.
- اقداماتی انجام دهید که هر عملی را پوشش دهد نیازی که در سیستم پیش بینی نشده است عملیاتی.
- دستورات ترتیب که ما به سختی تکرار می کنیم
اگرچه یک اسکریپت bash می تواند در / از هر دایرکتوری اجرا شود ، اما معمولاً چنین است برای میزبانی این اسکریپت ها دایرکتوری ایجاد کنید. در مورد من:
$ mkdir /home/pedro/.bin
من این را باور دارم فهرست (با هدایت دوره در مقابل نام پنهان شده است) تا همه اسکریپت هایی که استفاده می کنم را در آنجا نگه دارم. مخفی بودن نام فهرست معنای دیگری ندارد - مگر اینکه صریحاً در غیر این صورت مشخص شده باشد - هنگام مشاهده / خانه / پدرو از بیننده پرونده در حالت گرافیکی ظاهر نمی شود.
حالا شما مجبورید به لینوکس اطلاع دهید که باید آنجا را نیز جستجو کند (/home/pedro/.bin) دستوراتی که از ترمینال اجرا می شوند.
$ PATH=$PATH;/home/pedro/.bin
به این ترتیب سیستم به دنبال سفارشات ما در آنجا خواهد بود تا جلسه را ببندیم. تا این انجمن دائمی شود:
$ sudo nano /etc/environment
و اضافه می کنیم
:/home/pedro/.bin
در انتهای خط PATH ، بسیار مهم است که قبل از آدرس دایرکتوری که ما در آن قرار داریم ، نقطه عطف را فراموش نکنید ، این مکانیزم جمع است.
اولین اسکریپت گام به گام ما
ما پرونده خود را ایجاد می کنیم ، در مورد من مانند این است:
$ touch ~/.bin/donde
و برای ویرایش آن می توانید از ویرایشگر دلخواه خود استفاده کنید یا این نشانه را دنبال کنید:
$ gedit ~/.bin/donde &
و ما محتوای زیر را اضافه می کنیم:
#!/usr/bin/env bash if [ $# -lt 1 ]; then echo "Necesitas pasar un parámetro" else whereis $1 fi
تحلیل اسکریپت
اولین خط تماس ما «شبانگ»(#! / Usr / bin / env bash) از لینوکس بخواهید گزارش دهد پوسته bash کجا قرار دارد و آنچه در زیر می آید با توجه به نیازهای bash اجرا می شود. این احتیاط راحت است اطمینان حاصل کنید که اسکریپت های ما روی هر نصب کار می کنند. ممکن دیگر شبانگ او خندید:
#!/bin/bash
تفاوت بین آنها می تواند بسیار هولناک باشد ، و من آن را توضیح خواهم داد. در این آخرین من فرض می کنم که در سیستم ما پوسته bash در آدرس / bin / bash است. با این حال ، جایی که من در فیلمنامه پیشنهاد می دهم حدس می زنم نمی دانم کجاست مفسر bash. من از سیستم می خواهم که او آن آدرس را ارائه دهد.
خط سوم: همانطور که مشاهده می کنید ، خط دوم اگر است. برای bash شخصیت ها «$#« شامل تعداد پارامترهایی است که ما از خط فرمان عبور می دهیم. بنابراین ، »اگر [$ # -lt 1] ؛» به معنای واقعی کلمه به معنای "اگر تعداد پارامترها کمتر از 1 باشد".
خط چهارم: سپس (ترجمه به معنای واقعی کلمه از انگلیسی: پس) ، در اینجا نشان داده شده است که آنچه بعدی می آید هنگام ارزیابی شرایط اجرا خواهد شد if درست باش: به عبارت دیگر ، تعداد پارامترها کمتر از 1 است ، یعنی صفر.
خط پنجم: اگر اسکریپت خود را بدون هیچ پارامتری اجرا کنیم ، در ترمینال "شما باید یک پارامتر را عبور دهید" را نشان می دهیم.
سطر ششم: نشان می دهد آنچه در زیر اجرا می شود وقتی شرطی که اعلام کردیم درست نیست.
خط هفتم: سه دستور را اجرا کنید «کجاست« همراه با محتوایی که ما به عنوان منتقل کرده ایم اولین پارامتر.
خط هشتم: با «fi»نشان می دهد که بلوک به پایان می رسد if.
در حال آزمایش اسکریپت ما
مهم است مجوزهای نوشتن را اضافه کنید به متن:
$ chmod -x ~/.bin/donde
بدون این ، خطای "اجازه رد شد" ظاهر می شود.. پس از آن ، می توانیم اسکریپت خود را اجرا کنیم.
$ donde php
این باید مکان باینری های php ، پرونده های منبع آنها و صفحات man را به ما نشان دهد. یه چیزی شبیه اون:
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
بازیابی مجدد
- ما یک را فعال می کنیم فهرست ".bin" برای قرار دادن اسکریپتهای ما.
- ما فراهم می کنیم اطلاعات را به لینوکس وارد کنید تا این فهرست در جستجوی دستورات خود باشد.
- ما اسکریپت خود را ایجاد می کنیم.
- تفاوت بین ناهمسان شبانگ.
- استفاده از تعداد پارامترهای عبور شده با $ #.
- استفاده از اولین پارامتر با $1.
امیدوارم و آرزو می کنم که این متن برای شما مفید باشد.
4 نظر ، نظر خود را بگذارید
بسیار خوب و خوب توضیح داده شده است ، اما یک پارامتر به چه چیزی اشاره دارد؟
ممنون میگل!
من با پارامتر تمام اطلاعات مکمل را که به یک برنامه ، عملکرد یا سیستم ارائه می شود درک می کنم. از آنجا که این می تواند دست و پا گیر باشد ، بگذارید با چند مثال به شما پاسخ دهم.
در دستور linux برای کپی کردن فایل a.txt در پرونده b.txt ، موارد زیر را می نویسیم:
$ cp a.txt ب. txt
برنامه cp در اینجا دو پارامتر دریافت می کند که نام دو فایل است ، اولین (باید وجود داشته باشد) a.txt و دیگری b.txt.
مثال دیگر: اگر با دستور از کنسول برای چاپ ارسال می کنید
$ lp file.pdf
در این حالت "file.pdf" یک پارامتر برای برنامه lp است.
امیدوارم شک شما را برآورده کنم
توجه
نظرات من ظاهر نمی شود ، این عدم احترام است ، من دیگر به این انجمن بر نمی گردم.
من نمی دانم چه اتفاقی افتاده است ، در هر صورت منتشر شده است.
سلام.