انجمن کاربران لینوکس ایران - تکنوتاکس سابق

نسخه ي کامل: تاریخ شمسی در Shell
شما در حال مشاهده نسخه ي متني اين صفحه هستيد. مشاهده نسخه کامل تر با قالب بندي صحيح
صفحات : 1 2
سلام

من توی شل نیاز دارم که تاریخ شمسی رو بگریم و داخل یک متغییر ذخیره کنم.

حالا این متغییر مثلا قرار که اسم یک پوشه باشه.
تا حالا نتونستم تابع یا برنامه ای برای این کار پیدا کنم.

Jcal هم تا اونجایی که من سعی کردم به کار من نمیاد.


ممنون میشم اگر کسی از دوستان راه حلی میدونه به من بگه.
تاریخ شمسی رو به چه صورت بگیری یعنی؟ با فرمت بخصوصی؟
مثلا اگر امروز ۲۵ دی ماه ۱۳۸۸ باشه. یک پوشه با نام زیر درست کنه.

88-11-25
از lib های خود jcal چه جوری میشه برای این کار استفاده کرد ؟
دیجیتال این تیکه کد رو میخوای پچ کنی به یک برنامه‌ی زبان سی یا چیزی شبیه به اون یا اینکه میخوای با یکی از اینترپرترها یا شل باهاش کار کنی؟ من هنوز نتونستم داکیومنت برای تقویم جلالی درست کنم، اما سعی میکنم تا قبل از سال جدید، هم ای-پی-آی اش رو تروتمیز کنم، هم داکیومنتیشن براش درست کنم و هم یکسری چیزای دیگه که به درد بخور باشن. اما یکمی طول میکشه تا این کارها رو انجام بدم. احتمالا باید فرام-اسکرچ بنویسمش. عذر میخوام از ناقص بودن پکیج. به همین دلیل برای اینکه از لایبرری استفاده کنید تنها راهش اینه که کد رو بخونید. البته من میتونم یک تیکه کد بهت بدم که خروجی jcal رو به چیزی تبدیل کنه که میخوای. میتونی یه جوری برای راه انداختن کارت وصله و پینه‌اش کنی به کدت تا ورژن بعدی رو کامیت کنم و تربال‌ها رو بسازم از سمت آپ-استریم که بتونی ازشون استفاده کنی بدون مشکل.
من میخوام یک شل اسکریپت بنویسم که تعدادی فایل و فولدر رو در زمان خاصی برداره و بریزه توی یک فولدر به نام اون روز. یک جور پشتیبان (backup) . ولی اون فولدر باید به اسم تاریخ اپن روز باشه.

اگر اون تیکه کد که میگید رو بهم بدین واقع ممنون میشم.
فرض میکنم شما گنو/کور-یوتیلز، گرپ، سد، یک نسخه از بش و jcal رو نصب و در در پت دارید.
کد :
#!/bin/bash

MONTHS=( "Farvardin" "Ordibehesht" "Khordaad" "Tir" "Amordaad" "Shahrivar" "Mehr" "Aabaan" "Aazar" "Dey" "Bahman" "Esfand" )
YEAR=`jcal | head -n 1 | sed -e s/[^0-9]//g | sed s/...//g`
MONTH=`jcal | head -n 1 | grep -o "^\ *.*\ " | sed -e s/^.*C//g | sed -e 's/\ *$//g'`
DAY=`jcal | grep -io 7m.*0m | sed -e s/7m//g`

for i in `seq 0 11`; do
    if [ "${MONTHS[$i]}" = "$MONTH" ]; then
        let MONTH=$i+1
        break;
    fi;
done

echo "$DAY-$MONTH-$YEAR"
تمامی فرضیات شما به اثبات رسید.

شدیدا تشکر میکنم.
خواهش میکنم. فعلا این رو به عنوان راه حل تمپوریری استفاده کنید تا من ورژن بعدی رو آماده کنم. فکر میکنم تا قبل از عید بتونم به یه جایی برسونمش.
سلام. خب من بعد از مدتهای زیادی (تقریبا نزدیک به دو سال) بالاخره حوصله کردم و این تقویم جلالی برای ترمینال رو تموم کردم. البته یکسری چیزهای دیگه رو هم بهش اضافه کردم که شاید براتون جالب باشه:

۱- کتابخانه‌ی لیب-جلالی با ای-پی-آی شبیه به پوزیکس.۱-۲۰۰۱ (و پس از آن): این کتابخانه امکان استفاده از فانکشن‌های زیر رو شما خواهد داد که دقیقا آیدنتیکال با فانکشن‌های دیت و تایم در تقریبا تمامی ایمپلمنتیشن‌های کتابخانه‌های زبان سی هستند:

کد :
jmktime(), jlocaltime(), jlocaltime_r(), jgmtime(), jgmtime_r(), jctime(), jctime_r(), jasctime(), jasctime_r(), jstrftime(), jstrptime()

برای اطلاعات بیشتر در مورد راهنما میتوانید به منوال-پیج های فانکشن‌ها مراجعه کنید:
کد :
man jctime
man jstrftime
man jstrptime

همچنین یکسری روتین‌های دیگری برای بازی کردن با تاریخ جلالی در این کتابخانه وجود دارد. چندین باگ بسیار مهم در الگوریتم‌های محاسبه‌ی تقویم در این ورژن رفع شده.

۲- ابزار ترمینالی jcal که درست مانند ابزار ترمینالی cal عمل میکند.
کد :
Khordaad 1390    
Sh Ye Do Se Ch Pa Jo
    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

برای آشنایی بیشتر با پارامترهای مختلف به منوال-پیج مراجعه کنید:
کد :
man jcal

۳- ابزار ترمینالی jdate که درست مانند ابزار ترمینالی date عمل میکند.
کد :
ashkan@ws1 ~ $ jdate -R
Yek, 08 Kho 1390 20:13:04 +0430

ashkan@ws1 ~ $ jdate -u
Yek Kho 08 15:43:08 UTC 1390

ashkan@ws1 ~ $ jdate +"Emrooz %h movarekhe %d %B maahe saale %Y mibaashad."
Emrooz Yek movarekhe 08 Khordaad maahe saale 1390 mibaashad.

برای راهنمای کامل این ابزار به منوال-پیج مراجعه کنید:
کد :
man jdate

آخرین نسخه (۰.۲.۰) از این کتابخانه و ابزارهای آنرا میتوانید در آدرس روبرو بیابید: http://tehlug.org/~ashkan/mirror/jcal/jcal-0.2.0.tar.gz

قبل از کامپایل کردن ابتدا دستورات زیر را در مسیر سورسهای اکسترکت شده اجرا کنید:
کد :
$ libtoolize --force && aclocal && autoconf && automake
$ ./configure
$ make
$ sudo make install
$ sudo /sbin/ldconfig

برای پاک کردن برنامه از روی سیستم میتونید از دستور زیر استفاده کنید:
کد :
$ sudo make uninstall
وبسایت پروژه: http://nongnu.org/jcal
ایبیلدهای جنتو: http://tehlug.org/~ashkan/mirror/jcal/mi...2.0.ebuild

ورژن روی رپوزیتوریهای دبین و اوبونتو هم به زودی آپدیت خواهند شد.

ارادتمند،
اشکان
وای خدای من ...
این یکی واقا جای تشکر داره .
خیلی عالی بود Smile
اگه میشه پروژه رو توی sf.net هم بزار ...
روی kubuntu خیلی راحت نصب شد .
این هم بسته دبیان این نرم افزار :
کد :
wget -c http://mahsom.persiangig.com/apps/jcal_0.2-1_i386.deb
برای توزیع های rpm base لطفا از دستور alien برای تبدیل استفاده کنید .
در ضمن بعد از نصب حتما دستور ldconfig رو اجرا کنید .
برادر، این که i386 هستش. یه نسخه amd64 بده.
خیلی خوبه اشکان :wink:
من البته با libjalali خود jcal یه jdate ناقص برای استفاده خودم نوشته بودم یکی دو سال پیش و تا الان از اون استفاده می‌کردم. وقتشه بریزمش دور Smile
سلام
با تشکر از جناب اشکان و مهدی شیخ حسینی عزیز!
کد :
wget -c http://sites.google.com/site/mehdimearaji/file/jcal-0.2-2.noarch.rpm
کد :
wget -c http://sites.google.com/site/mehdimearaji/file/jcal-0.2-2.noarch.deb
عالیه خسته نباشی
تو مخازن aur ارچ هم بذارین لطفا
چقدر باحال :lol:
خودش ورژن 0.2.0 رو داده بیرون ....
چند دقیقه بعد من ورژن 0.2.1 رو منتشر کردم ...
بعد آقای معراجی ورژن 0.2.2 رو منتشر کرد ... !

خدا وکیلی پشتیبانی رو حال کردی ؟
در عرض چند دقیقه ۳ تا ورژن release شد :lol:
noarch با amd64 جور در نمیاد. سورسش کجاست؟
ای بابا ... !
همین جا گزاشته دیگه :
http://tehlug.org/~ashkan/mirror/jcal/jcal-0.2.0.tar.gz
سلام ممنون از شما دوستان بابت تست و درست کردن پکیج ِ دب.
نقل قول :اگه میشه پروژه رو توی sf.net هم بزار ...
چرا روی سورس-فورج؟ مشکلی داره روی ساوانا مگه؟ اگر مشکل خاصی هست بگین من ببینم میشه یه جوری درستش کرد یا نه. اگر نشد حتما منتقلش میکنم.

نقل قول :تو مخازن aur ارچ هم بذارین لطفا
من راستش با سیستم آرچ آشنایی ندارم، اما سعیم رو میکنم.

در مورد خود برنامه، کتابخانه و مستندات کسی نظر/پیشنهاد/انتقادی چیزی نداره؟
صفحات : 1 2