
به عنوان آدمی که ذرهای علاقه به طراحی و گرافیک داره، هیچوقت مخالف رابطهای گرافیکی (GUI) نبوده و نیستم، اما انجام خیلی از کارها با استفاده از CLI به دلیل قابل برنامهنویسی بودن، به میزان بسیار زیادی راحتتر و سریعتره بهخصوص کارهایی که قاعدهمند و قابل تکرار هستند، مثل استفاده از GIT، ایجاد دایکتوریهای تودرتو، تبدیل فایلها و تحت تاثیر قرار دادن افراد!
در این قسمت از چای، خیلی کوتاه با استفاده از چند مثال، با عملگر بازه (range operator) در اسکریپت نویسی shell آشنا میشیم.

در حالت عادی نوشتن یک حلقه for در shell script بهصورت زیر است:
#!/bin/bash # Basic for loop for (( c=1; c<=5; c++ )) do echo $c done
که میتوان آن را در یک خط بهصورت زیر نوشت:
❯ for ((c=1;c<=5;c++)); do echo $c; done
با اجرای این حلقه اعداد ۱ تا ۵ بهصورت زیر چاپ میشوند:
1 2 3 4 5


عملگر بازهها نوشتن حلقههای for را سادهتر کرده و حتی این اجازه را میدهند که بدون نوشتن حلقه for، دستورات را تکرار کرده و نوشتن برنامههای تک-خطی (One-liner program) رو بسیار سادهتر میکنه.
فرمت و نحوه استفاده بازهها بهصورت زیر است:
# range operator (pseudo code) {start..end..step}
به مثالهای زیر توجه کنید:
# print numbers from 1 to 10 ❯ for i in {1..10}; do echo $i; done 1 2 3 4 5 6 7 8 9 10
# print odd numbers from 1 to 10 ❯ for i in {1..10..2}; do echo $i; done 1 3 5 7 9
همانطور که گفته شد، از عملگر بازهها میتوان خارج از حلقه for نیز استفاده کرد؛ اینکار انعطافپذیری زیادی به دستورات میده و اجازه میده بدون نوشتن حلقه for دستورات را تکرار کنیم. به مثال زیر دقت کنین:
❯ echo {1..100} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
❯ mkdir {a..z}

❯ convert {a..b}{1..2}.png output%0d.jpg
در این مثال با استفاده از imagemagick تصاویر زیر رو از png به jpg تبدیل میکنیم:

با کنارهم گذاشتن چند بازه (range) میتوان تمام جایگشتهای ترکیب آنها را تولید کرد.
در مثال فوق: a1, a2, b1, b2

برای آشنایی بیشتر و بهتر با اسکریپتنویسی shell این آموزش رو مطالعه کنید.
این پست، قسمت پنجم از چای، مجموعهای در باب «چیزی که امروز یادگرفتم» است. باقی چایها رو میتونید از اینجا مشاهده کنید و در مورد فلسفهی این کار بخونید.