قدرت و کارایی عالی خط فرمان در گنو/لینوکس (11)

#!/bin/bash

clear

if [ $# = 1 ]; then

num=$(echo $1 | grep -c -e '^[1-9][0-9]*$')

if (($num)); then

declare -i num=$1

while [ -f L1p$num.html ]; do num=num+1; done

while [ ! $num -eq $1 ]
do num=num-1
echo Renaming \'L1p$num.html\' to \'L1p$((num+1)).html\' ...
mv L1p$num.html L1p$((num+1)).html
done

else

echo Error: Invalid argument!

fi

else

echo Error: No argument!

fi

خب اینهم یک کاربرد مفید و جالب دیگه که تقریبا یادم رفته بود مطرح کنم.
یک موقعی یک پروژهء تبدیل کتاب چاپی به کتاب الکترونیکی با فرمت اچ تی ام ال گرفته بودم.
یک جزء استانداردی که داده بودن این بود که هر صفحهء کتاب اچ تی ام ال رو که باید صفحات/فایلهای مجزا میبودن با یک عدد پست سرهم شماره گذاری میکردم.
این یک نمونهء عملی از این شماره گذاری هست:
L1p1.html L1p2.html L1p3.html L1p4.html L1p5.html L1p6.html
یعنی مثلا فصل اول صفحهء یک، دو و الی آخر.
اغلب پیش می آمد که نیاز داشتم یک صفحه رو بین صفحه های دیگه اضافه کنم. مثلا بعلت اضافه کردن یکسری مطالب اضافه و توضیحات و تجدید نظر یا حتی تقسیم کردن یک صفحه به دو صفحه. اینطور کارها کاملا عادی بود و در جریان کار طبیعتا پیش میامد، بخصوص که استانداردهای محدود کننده ای هم برای حجم و شکل صفحات داشتم.
خب حالا موضوع این هست که اضافه کردن یک صفحهء شماره دار در بین یکسری صفحهء دیگر که شماره های پشت سرهم دارن، مستلزم تغییر نام تمام صفحات از اون شماره و ببعد به یک شماره بالاتر هست. این کار بصورت دستی و با استفاده از عملکرد عادی محیط گرافیکی سیستم عامل، کاری وقت گیر و خسته کننده هست و ضمنا مستعد خطا. تعداد صفحات ممکنه خیلی زیادتر از این مثال ارایه شده که تنها قسمتی از فایلهای یک فصل هست باشه.
فکر کردم چطوره اینکار رو برای بقیهء کار بصورت خودکار دربیارم.
حاصلش این شل اسکریپت هست. شما یک شماره در خط فرمان بهش میدید. مثلا:
./shift.sh 3
بدیهی هست که این اسکریپت روی فایلهای موجود در دایرکتوری جاری عمل میکنه.

نتیجهء عملی فرمان بالا رو مشاهده بفرمایید:
L1p1.html L1p2.html L1p4.html L1p5.html L1p6.html L1p7.html
حالا جای اضافه شدن یک فایل و شماره بعد از فایل صفحهء دوم وجود داره.

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>