آموزش‌های خط فرمانی

این وبلاگ تلاش می‌کند گامی در حد بضاعت در جهت آموزش خط فرمان و اسکریپت‌نویسی پوسته گنو-لینوکس بردارد.

آموزش‌های خط فرمانی

این وبلاگ تلاش می‌کند گامی در حد بضاعت در جهت آموزش خط فرمان و اسکریپت‌نویسی پوسته گنو-لینوکس بردارد.

چرا سطرهای فایل را با "for" نخوانید؟


چرا سطرهای فایل را با "for" نخوانید

بسیاری گمان می‌کنند برای خواندن سطرهای یک فایل متن، باید یک حلقه for را به کار ببرند. این در بهترین حالت، بد ترکیب و کم بازده است، و در بسیاری از موقعیت‌ها شکست می‌خورد. شما در عوض باید یک حلقه while به کار ببرید. چرای آن در اینجاست.

اول، روش درست:

    $ cat afile
    ef gh
    
    *
    $ while IFS= read -r aline; do echo "$aline" ; done < afile
    ef gh
    
    *

حال، سعی در استفاده از for:

ادامه مطلب


چرا نباید خروجی ls را تجزیه کنید؟


فرمان ‎ls(1)‎ برای نشان دادن صفات یک فایل منفرد به شما(حداقل در برخی حالت‌ها) نسبتاً مناسب است، اما وقتی از آن تقاضای یک لیست از فایلها را دارید، مشکل عظیمی وجود دارد: یونیکس در نام فایل تقریباً هر کاراکتری، از جمله فضای سفید، سطر جدید، علامت لوله(pipe)، و تقریباً هر مورد دیگری را که شما همیشه به عنوان جدا کننده استفاده می‌کنید، به استثنای NUL مجاز می‌داند. طرح‌های پیشنهادی برای کنار گذاشتن و اصلاح این مطلب داخل POSIX وجود دارد، اما در مواجه با موقعیت جاری، آنها کمکی نخواهند بود (همچنین صفحه چگونه به طور صحیح با نام فایلها رفتار کنیم را ببینید).

ادامه مطلب


Bash Parser


بدون چون و چرا شما باید از اینکه Bash چگونه فرمانهای شما را می‌خواند و آنها را به کُد قابل اجرا تجزیه می‌کند،، درک مناسبی داشته باشید. دانستن آنکه Bash چطور با کُد شما کار می‌کند، کلید نوشتن کُدی است که در Bash به خوبی کار کند.

ادامه مطلب

Arithmetic Expression


محاسبات در BASH فقط حساب اعداد صحیح است. شما نمی‌توانید حساب ممیز شناور در Bash انجام دهید، اگر آن توانایی را لازم دارید، پرسش و پاسخ شماره 22 را ببینید.

همچنین گفتار Bash hackers را در باره نظریه دستور زبان کامل، ملاحظه کنید.

/!\ ترکیب ‎$[ ]نکوهیده شده است.

برای آنکه به Bash بگوییم با اعداد به جای رشته، به عنوان اعداد صحیح رفتار نماید، و عملیات اصلی حساب را با آنها انجام بدهد، چند روش وجود دارد. اولین آنها استفاده از فرمان let است: ادامه مطلب


Arguments


این مطلب مقوله‌ای را تشریح می‌نماید که احتمالاً مهمترین مبحث در باره برنامه‌نویسی پوسته است و بیش از همه به طور نادرست فهمیده شده است.

بدون قید وشرط واجب است شما قبل از انجام هر کار مهم در پوسته، به طور کامل تمام آنچه در اینجا تشریح می‌گردد را درک کنید . درست نفهمیدن آنکه شناسه‌ها کدامند و تفکیک کلمه چطور عمل می‌کند، حتی در کُدی که شما کنترل کرده‌اید و به نظر می‌رسد به خوبی کار می‌کند، منجر به باگهای غیر منتظره، و در حالت‌های وخیم‌تر، انحراف شدید و از دست رفتن داده‌ها می‌گردد.

ادامه مطلب