| calc(1) | General Commands Manual | calc(1) |
نام (NAME)
calc - ماشینحساب با دقت دلخواه
خلاصه دستور (SYNOPSIS)
calc [-c] [-C] [-d]
[-D calc_debug[:resource_debug[:user_debug]]]
[-e] [-f filename] [-h] [-i]
[-m mode] [-O]
[-p] [-q] [-s] [-u] [-v]
[[--] calc_cmd ...]
#!/usr/bin/calc [optional_other_flags ...] -f
توضیحات (DESCRIPTION)
- -c
- ادامه
خواندن
خطوط دستور
حتی پس از
اینکه یک
خطای
پویش/تجزیه
(scan/parse) باعث رها
شدن یک خط
شده باشد.
توجه داشته
باشید که
این گزینه
فقط به پویش
و تجزیه
زبان calc
مربوط
میشود. این
گزینه با
خطاهای
اجرا یا
زمان اجرا
(run-time) سر و کار
ندارد.
برای مثال:
calc read many_errors.cal
باعث خواهد شد calc در نخستین خطای نحوی (syntax error) متوقف شود، در حالی که:
calc -c read many_errors.cal
باعث خواهد شد calc با وجود مواجهه با خطاهای پویش/تجزیه، برای پردازش هر خطِ در حال خواندهشدن تلاش کند.
بهطور پیشفرض، فایلهای منبع (resource files) راهاندازی calc در صورت پیدا نشدن، بدون هیچ پیامی نادیده گرفته میشوند. این پرچم مفقود بودن فایلهای منبع راهاندازی را گزارش میدهد، مگر اینکه -d نیز مشخص شده باشد.
- -C
- اجازه
اجرای
توابع
توکار
سفارشی (custom builtin
functions). بدون این
پرچم،
فراخوانی
تابع توکار
custom() صرفاً یک
خطا تولید
خواهد کرد.
استفاده از این پرچم ممکن است باعث شود calc توابعی را اجرا کند که غیراستاندارد بوده و قابلحمل نیستند. توابع توکار سفارشی به همین دلیل بهطور پیشفرض غیرفعال هستند.
- -d
- غیرفعال
کردن چاپ
عنوان
آغازین. چاپ
پیامهای
اشکالزدایی
و اطلاعاتی
فایل منبع
نیز به
گونهای
غیرفعال
میشود که
گویی config("resource_debug",
0) اجرا شده
است.
برای مثال:
calc "read qtime; qtime(2)"
خروجیای شبیه به این خواهد داشت:
qtime(utc_hr_offset) defined It's nearly ten past six.
در حالی که:
calc -d "read qtime; qtime(2)"
تنها این را چاپ خواهد کرد:
It's nearly ten past six.
این پرچم گزارش مربوط به پیدا نشدن فایلهای منبع راهاندازی calc را غیرفعال میکند.
این پرچم همچنین چاپ علامت تیلدا (~) ابتدایی را غیرفعال میکند. برای مثال:
calc 2/3
چاپ خواهد کرد:
~0.66666666666666666667
در حالی که:
calc -d 2/3
تنها این مقدار را چاپ خواهد کرد:
0.66666666666666666667
- -D calc_debug[:resource_debug[:user_debug]]
- اجبار
مقدار
اولیه
config("calc_debug")، config("resource_debug")
و config("user_debug").
رشتههای جداشده با : به عنوان اعداد صحیح ۳۲ بیتی علامتدار تفسیر میشوند. پس از علامت اختیاری آغازین، صفر ابتدایی نشاندهنده تبدیل هشتهشتی (octal)، و «0x» یا «0X» ابتدایی نشاندهنده تبدیل شانزدهشانزدهی (hexadecimal) است. در غیر این صورت، تبدیل دهدهی (decimal) فرض میشود.
بهطور پیشفرض، calc_debug برابر 0، resource_debug برابر 3 و user_debug برابر 0 است.
برای اطلاعات بیشتر از دستور calc زیر استفاده کنید:
help config
-e نادیده گرفتن تمام متغیرهای محیطی هنگام راهاندازی. با این وجود، تابع توکار getenv() همچنان مقادیر را برمیگرداند. - -f filename
- این پرچم
معمولاً
فقط همراه
با
اسکریپتهای
شل calc
استفاده
میشود.
این پرچم هنگام استفاده از calc در حالت اسکریپت شل الزامی است. باید در انتهای خط آغازین #! اسکریپت قرار گیرد، مانند:
#!/usr/bin/calc [optional_other_flags ...] -f
باقی فایل در حالت اسکریپت شل پردازش خواهد شد.
یک پرچم رایج که پیش از -f در خط #! استفاده میشود، پرچم -q است. برای مثال:
#!/usr/bin/calc -q -f
برای جزئیات بیشتر، بخش SHELL SCRIPT MODE در ادامهٔ این صفحهٔ راهنما را ببینید.
اگرچه شکل واقعی این پرچم بهصورت زیر است:
-f filename
اما در سیستمهایی که یک فایل اجراییِ آغازشونده با #! را به عنوان اسکریپت در نظر میگیرند، مسیر فایل اجرایی توسط هسته به عنوان آرگومان نهایی به فراخوانی سیستمی exec() افزوده میشود. به همین دلیل پرچم -f در انتهای خط #! قرار میگیرد.
استفاده از -f filename در خط فرمان نیز امکانپذیر است:
calc [optional_other_flags ...] -f filename
این کار باعث میشود calc خطوط موجود در filename را در حالت اسکریپت شل پردازش کند.
نکته: استفاده از -f بهمعنای اعمال خودکار -q نیست و بنابراین برای غیرفعال کردن فایلهای راهاندازی calc، باید از:
calc [optional_other_flags ...] -q -f filename
نیز استفاده شود.
استفاده از -f filename به معنای اعمال پرچم -s نیز هست.
- -h
- چاپ پیام راهنما. این گزینه پرچم -q را نیز اعمال میکند. این معادل دستور help help در calc است. امکانات راهنما غیرفعال است مگر اینکه mode برابر با 5 یا 7 باشد. گزینهٔ -m را ببینید.
- -i
- ورود به
حالت
تعاملی در
صورت امکان.
این پرچم
باعث
میشود که
calc پس از
ارزیابی
آرگومانهای
calc_cmd در خط
فرمان،
وارد حالت
تعاملی شود.
بدون این
پرچم، calc پس
از ارزیابی
آنها خارج
خواهد شد.
برای مثال:
calc 2+5
مقدار 7 را چاپ کرده و خارج میشود، در حالی که:
calc -i 2+5
مقدار 7 را چاپ کرده و از کاربر دستورهای بیشتری برای calc درخواست میکند.
- -m mode
- این پرچم
حالت
دسترسی (permission mode)
برنامهٔ calc
را تعیین
میکند و
توانایی calc
را در باز
کردن
فایلها و
اجرای
برنامهها
کنترل
مینماید.
Mode
میتواند
عددی از 0 تا 7
باشد.
مقدار mode به شیوهای مشابه با حالت مبنای هشت در chmod(1) تفسیر میشود:
0 هیچ فایلی باز نشود، هیچ برنامهای اجرا نشود 1 هیچ فایلی باز نشود 2 فایلها برای خواندن باز نشوند، هیچ برنامهای اجرا نشود 3 فایلها برای خواندن باز نشوند 4 فایلها برای نوشتن باز نشوند، هیچ برنامهای اجرا نشود 5 فایلها برای نوشتن باز نشوند 6 هیچ برنامهای اجرا نشود 7 همه چیز مجاز است (حالت پیشفرض)
اگر کسی بخواهد calc را با یک کاربر ممتاز (کاربر ریشه) اجرا کند، ممکن است بخواهد از -m 0 استفاده کند تا calc تا حدی امنتر شود.
بیتهای حالت برای خواندن و نوشتن تنها هنگام باز کردن فایل (open) اعمال میشوند. فایلهایی که از قبل باز شدهاند تحت تأثیر قرار نمیگیرند. بنابراین اگر کسی بخواهد از -m 0 برای ایمنتر کردن calc استفاده کند، اما همچنان قصد خواندن و نوشتن یک فایل مشخص را داشته باشد، میتواند در شلهای شبهِ sh(1)، ksh(1) یا bash(1) به این صورت عمل کند:
calc -m 0 3<a.file
فایلهایی که بدین شکل به calc ارائه میشوند، در حالتی نامشخص باز هستند. Calc در صورت هدایت، برای خواندن یا نوشتن آنها تلاش خواهد کرد.
اگر mode باز کردن فایلها برای خواندن را غیرفعال کند، فایلهای منابع راهاندازی نیز غیرفعال میشوند، گویی پرچم -q مشخص شده است. همچنین در صورتی که mode باز کردن فایلها برای خواندن را غیرفعال کند، خواندن نگاشت کلیدها (key bindings) نیز غیرفعال میشود..TP -O استفاده از پیشفرضهای کلاسیک قدیمی بهجای پیکربندی پیشفرض. این پرچم تأثیری مشابه اجرای config("all", "oldcfg") در زمان راهاندازی دارد.
نکته: نسخههای قدیمیتر calc از -n برای تنظیم شکلی تغییریافته از پیکربندی پیشفرض calc استفاده میکردند. پرچم -n در حال حاضر هیچ کاری انجام نمیدهد. استفاده از پرچم -n اکنون منسوخ شده است و ممکن است در آینده برای منظور دیگری استفاده شود.
- -p
- پردازش
لولهای (pipe)
با استفاده
از -p فعال
میشود.
برای مثال:
calc -p "2^21701-1" | fizzbin
در حالت لوله، calc اعلان دستوری (prompt) نمایش نمیدهد، فاصلههای تب ابتدایی را چاپ نمیکند و سربرگ آغازین را چاپ نمیکند. پرچم -p بر پرچم -i مقدم است (آن را لغو میکند).
هنگام اجرای calc بهعنوان یک اسکریپت شل (برای جزئیات بیشتر به بخش SHELL SCRIPT MODE مراجعه کنید)، calc در حین راهاندازی ورودی استاندارد (stdin) را خواهد بست، مگر اینکه پرچم -p در خط فرمان مشخص شده باشد. زمانی که calc در حالت اسکریپت شل اجرا میشود، اسکریپتهای شلی که دستور توکار prompt(str) را فراخوانی میکنند بهدرستی کار نخواهند کرد (دستور توکار prompt همیشه ناموفق خواهد بود) مگر اینکه پرچم -p در خط فرمان مشخص شده باشد.
- -q
- غیرفعالسازی
خواندن
اسکریپتهای
راهاندازی.
این گزینه اجازه میدهد تا اسکریپت مستقل از اسکریپتهای راهاندازی (مانند مواردی که با متغیر محیطی $CALCRC مدیریت میشوند) اجرا شود. برای مثال، این گزینه استفاده از فایل مشترک calcrc (معمولاً ~/.calcrc) را غیرفعال میکند.
- -s
- بهطور پیشفرض، تمام آرگومانهای calc_cmd ارزیابی و اجرا میشوند. این پرچم ارزیابی آنها را غیرفعال کرده و در عوض آنها را بهصورت رشتههایی برای تابع توکار argv() در دسترس قرار میدهد.
- -u
- غیرفعالسازی بافرسازی (buffering) ورودی استاندارد (stdin) و خروجی استاندارد (stdout).
- -v
- چاپ شماره نسخه calc و خروج.
- --
- دو خط تیره
به calc اعلام
میکند که
هیچ گزینه
دیگری در
ادامه
نمیآید.
بنابراین calc
آرگومانهای
بعدی در خط
فرمان را
حتی اگر با
یک خط تیره
شروع شوند
نادیده
میگیرد.
این قابلیت
هنگام وارد
کردن
مقادیر
منفی در خط
فرمان مفید
است، مانند:
calc -p -- -1 - -7
خط فرمان CALC (CALC COMMAND LINE)
بدون آرگومانهای calc_cmd، برنامه calc بهصورت تعاملی عمل میکند. اگر یک یا چند آرگومان در خط فرمان مشخص شده باشند و پرچم -s داده نشده باشد، آنگاه calc آنها را خوانده و اجرا میکند و بسته به اینکه پرچم -i مشخص شده باشد یا خیر، تلاش میکند به حالت تعاملی وارد شود یا خیر.
اگر پرچم -s داده شده باشد، calc هیچیک از آرگومانهای calc_cmd را ارزیابی نخواهد کرد، بلکه آنها را بهصورت رشتههایی برای تابع توکار argv() در دسترس قرار میدهد.
دستورات بهاندازه کافی ساده و فاقد نویسههایی مانند پرانتز، کروشه، نقطهویرگول و «*» که در شلهای یونیکس تفسیر خاصی دارند، میتوانند احیاناً همراه با فاصله تا نویسه سطر بعد (newline) وارد شوند. برای مثال:
calc 23 + 47
مقدار 70 را چاپ خواهد کرد. با این حال، خطهای فرمان زیر دچار مشکل خواهند شد:
calc 23 * 47 calc -23 + 47
مثال اول بالا با شکست مواجه میشود زیرا شل نویسه «*» را بهعنوان تطبیق الگو با نام فایلها (file glob) تفسیر میکند. مثال دوم با شکست مواجه میشود زیرا «-23» بهعنوان یکی از گزینههای calc پنداشته میشود (که در واقع چنین نیست) و calc به آنچه که گزینه ناشناخته میداند اعتراض میکند. این موارد را معمولاً میتوان با قرار دادن دستور در بین گیومه به شکل مورد انتظار به کار انداخت:
calc '23 * 47' calc "print sqrt(2), exp(1)"
یا درون پرانتز و گیومه جهت جلوگیری از خط تیرههای ابتدایی، مانند:
calc '(-23 + 47)'
همچنین میتوان از دو خط تیره برای مشخص کردن پایان گزینههای calc استفاده کرد، مانند:
calc -- -23 + 47 calc -q -- -23 + 47
اگر قرار است از «!» برای مشخص کردن تابع فاکتوریل استفاده شود، در شلهایی مانند csh(1) که در آنها «!» اگر پس از آن نویسهای غیر از فاصله بیاید برای جایگزینی تاریخچه (history substitution) استفاده میشود، ممکن است لازم باشد یک فاصله درج شود یا از بکاسلش برای گریز از معنی خاص «!» بهره گرفته شود. برای مثال، دستور:
print 27!^2
ممکن است لازم باشد با دستور زیر جایگزین شود:
print 27! ^2 یا print 27\!^2
خواندن از ورودی استاندارد زمانی که calc بخشی از یک پایپ (pipe) است، تا زمانی که پرچم -p به calc داده شود کار میکند. برای مثال، این دستور عبارت chongo was here را چاپ خواهد کرد:
echo chongo was here | calc -p 'print fgetline(files(0));'
در حالی که این دستور کار نخواهد کرد:
echo chongo was here | calc 'print fgetline(files(0));'
و این دستور نیز عبارت chongo was here را چاپ نخواهد کرد:
echo chongo was here | calc -i 'print fgetline(files(0));'
دلیل این است که بدون پرچم -p، تجزیهکننده تعاملی برای تلاش در تجزیه دستورات تعاملی، دادههای ورودی استاندارد را پاکسازی (flush) میکند..PP
فایلهای راهاندازی CALC (CALC STARTUP FILES)
در حالت عادی هنگام راهاندازی، اگر متغیر محیطی $CALCRC تعریف نشده باشد و calc بدون پرچم -q فراخوانی شود، یا اگر $CALCRC تعریف شده باشد و calc با -e فراخوانی گردد، calc به دنبال فایل "startup" در دایرکتوری منابع calc، فایل .calcrc در دایرکتوری خانگی کاربر، و .calcinit در دایرکتوری جاری میگردد. اگر یک یا چند مورد از این فایلها یافت شوند، به ترتیب به عنوان اسکریپتهای calc خوانده شده و دستورهای آنها اجرا میشوند. در صورت تعریف، $CALCRC باید شامل فهرستی از نامهای فایلها باشد که با ':' از هم جدا شدهاند، و اگر calc در این حالت بدون هیچیک از پرچمهای -q یا -e فراخوانی شود، این فایلها به ترتیب خوانده شده و دستورهای آنها اجرا میگردند. در صورتی که فایلی از این فهرست پیدا نشود، هیچ وضعیت خطایی ایجاد نمیشود.
اگر حالت مشخصشده توسط -m باز کردن فایلها را برای خواندن غیرفعال کند، خواندن فایلهای راهاندازی نیز درست همانند حالتی که پرچم -q داده شده باشد، غیرفعال میشود.
مسیر جستجوی فایل CALC (CALC FILE SEARCH PATH)
اگر متغیر محیطی $CALCPATH تعریف نشده باشد، یا اگر تعریف شده باشد و calc با پرچم -e فراخوانی گردد، هنگامی که نام فایلی که با /، ~ یا ./ آغاز نمیشود، مانند نمونه زیر مشخص گردد:
calc read myfile
calc مسیرهای زیر را به ترتیب جستجو میکند:
./myfile ./myfile.cal /usr/lib/myfile /usr/lib/myfile.cal /usr/share/calc/custom/myfile /usr/share/calc/custom/myfile.cal
اگر فایل پیدا شود، جستجو متوقف شده و دستورهای درون فایل اجرا میگردند. اگر هیچ فایل قابل خواندنی با نام مشخصشده پیدا نشود، خطا محسوب میشود. میتوان یک مسیر جستجوی جایگزین را با تعریف $CALCPATH به همان شیوهای که PATH تعریف میشود، به صورت فهرستی از دایرکتوریها که با ':' جدا شدهاند، و سپس فراخوانی calc بدون پرچم -e مشخص کرد.
Calc با تمام فایلهای باز، به جز stdin، stdout و stderr به عنوان فایلهای در دسترس برای خواندن و نوشتن رفتار میکند. برای در اختیار گذاشتن یک فایل از پیش بازشده به calc با استفاده از شلهای مشابه sh(1)، ksh(1) یا bash(1)، میتوان چنین عمل کرد:
calc 3<open_file 4<open_file2
برای اطلاعات بیشتر از دستورهای calc زیر استفاده کنید:
help help help overview help usage help environment help config
اگر نخستین خط از یک فایل اجرایی با #! آغاز شود و به دنبال آن مسیر مطلق برنامه calc بیاید و خط نخست با گزینه -f پایان یابد، مانند:
#!/usr/bin/calc [optional_other_flags ...] -f
بقیه فایل در حالت اسکریپت شل (shell script mode) پردازش خواهد شد. توجه داشته باشید که -s -f باید در انتهای خط ابتدایی «#!» قرار گیرند. هرگونه optional_other_flags اختیاری دیگر باید پیش از گزینه -f بیاید.
در حالت اسکریپت شل (shell script mode) محتویات فایل خوانده و اجرا میشوند درست گویی در فایلی قرار دارند که توسط دستور read پردازش میشود، به جز اینکه هر «دستوری» که با '#' و به دنبال آن نویسه فاصله (whitespace) آغاز شود و به خط جدید بعدی ختم گردد، به عنوان یک یادداشت (comment) در نظر گرفته میشود. هرگونه optional_other_flags اختیاری ابتدا پردازش میشود و در ادامه خطوط بعدی درون خود اسکریپت اجرا خواهند شد.
در حالت اسکریپت شل (shell script mode)، گزینه -s همواره پیشفرض در نظر گرفته میشود. افزون بر این، در صورتی که -i مشخص نشده باشد، -d و -p بهطور خودکار تنظیم میشوند.
نکته: استفاده از -f به معنای اعمال -q نیست و بنابراین لازم است از ساختار زیر استفاده شود:
calc [optional_other_flags ...] -q -f filename
تا استفاده از فایلهای راهاندازی calc نیز غیرفعال گردد.
برای نمونه، اگر فایل /tmp/mersenne:
#!/usr/bin/calc -q -f
/* setup */
argc = argv();
program = argv(0);
stderr = files(2);
/* parse args */
if (argc != 2) {
fprintf(stderr, "usage: %s exp0, program);
abort "must give one exponent arg";
}
exp = eval(argv(1));
if (!isint(exp) || exp < 0) {
fprintf(stderr, "%s: exp must be non-negative integer0, program);
abort "must give one exponent arg";
}
/* print the mersenne number */
print "2^": exp : "-1 =", 2^exp-1;
با دستور زیر به یک فایل اجرایی تبدیل شود:
chmod +x /tmp/mersenne
آنگاه خط فرمان:
/tmp/mersenne 127
خروجی زیر را چاپ خواهد کرد:
2^127-1 = 170141183460469231731687303715884105727
توجه داشته باشید از آنجا که -s در حالت اسکریپت شل (shell script mode) الزامی است، آرگومانهای بدون خط تیره از طریق تابع توکار argv() بهصورت رشته در دسترس قرار میگیرند. بنابراین:
2^eval(argv(1))-1
مقدار دهدهی 2^n-1 را چاپ خواهد کرد در حالی که:
2^argv(1)-1
چنین نخواهد کرد.
بهطور پیشفرض، هنگام راهاندازی calc در حالت اسکریپت شل (shell script mode)، برنامه calc ورودی استاندارد (stdin) را خواهد بست. بنابراین توابع توکاری مانند prompt(str) با شکست مواجه میشوند (یک مقدار null برمیگردانند). اسکریپتهای شل calc که تابع توکار prompt(str) را فراخوانی میکنند به درستی کار نخواهند کرد (تابع توکار prompt همواره با شکست مواجه میشود و مقدار null برمیگرداند)، مگر اینکه پرچم -p در خط فرمان مشخص شده باشد.
اسکریپت شل زیر همواره عبارت "got null" را چاپ خواهد کرد زیرا stdin هنگام راهاندازی توسط calc بسته خواهد شد:
#!/usr/bin/calc -q -f
# The prompt will ALWAYS FAIL and return a null value
n = prompt("Test> ");
if (isnull(n)) {
print("got null");
} else {
print("got " + n);
}
با این حال، اسکریپت شل زیر (به -p پیش از -f در خط اول توجه کنید) تعاملی خواهد بود، اعلان "Test> " را نشان میدهد و نتیجه "got" را طبق انتظار چاپ خواهد کرد:
#!/usr/bin/calc -q -p -f
n = prompt("Test> ");
if (isnull(n)) {
print("got null");
} else {
print("got " + n);
}
توجه داشته باشید در مثال بالا، گزینه -p باید پیش از گزینه نهایی خط فرمان یعنی -f قرار گیرد..PP
انواع داده (DATA TYPES)
انواع دادهٔ توکار و بنیادین شامل اعداد صحیح، اعداد حقیقی، اعداد گویا، اعداد مختلط و رشتهها هستند.
با استفاده از یک شیء (object)، میتوان انواع داده با پیچیدگی دلخواه را تعریف نمود. میتوان نحوهٔ رفتار چنین اشیائی را در طیف گستردهای از عملیاتها مانند جمع، تفریق، ضرب، تقسیم، منفیسازی، مربع کردن، باقیمانده (modulus)، گرد کردن، توانرسانی، برابری، مقایسه، چاپ و غیره مشخص کرد.
برای اطلاعات بیشتر از دستورهای calc زیر استفاده کنید:
help types
help obj
show objfuncs
متغیرها (VARIABLES)
متغیرها در calc بدون نوع (typeless) هستند. به بیان دیگر، نوع بنیادین یک متغیر با محتوای آن تعیین میشود. پیش از آنکه مقداری به یک متغیر انتساب داده شود، مقدار آن برابر با صفر است.
حوزهٔ دید (scope) یک متغیر میتواند سراسری (global)، محلی برای یک فایل، یا محلی برای یک رویه (procedure) باشد. مقادیر را میتوان در یک ماتریس یا در فهرستی که امکان انجام عملیاتهایی به سبک پشته (stack) و صف (queue) را فراهم میکند، گروهبندی کرد.
برای اطلاعات بیشتر از دستورهای calc زیر استفاده کنید:
help variable
help mat
help list
show globals
ورودی/خروجی (INPUT/OUTPUT)
پیشوند “0x” بیانگر یک مقدار در مبنای شانزده (هگزادسیمال)، پیشوند “0b” بیانگر یک مقدار دودویی (باینری)، و پیشوند “0” که به دنبال آن یک رقم بیاید بیانگر یک مقدار در مبنای هشت (اکتال) است. اعداد مختلط با یک “i” در انتها مشخص میشوند، مانند “3+4i”. رشتهها میتوانند با یک جفت نقلقول تکی یا دوتایی محصور شوند. بهطور پیشفرض، calc مقادیر را به گونهای چاپ میکند که گویی اعداد ممیز شناور هستند. میتوان این حالت پیشفرض را تغییر داد تا مقادیر در چندین حالت مختلف از جمله کسری، صحیح و نمایی چاپ شوند.
تعدادی عملیات ورودی/خروجی فایل مشابه با کتابخانهٔ stdio ارائه شده است. میتوان فایلها را باز کرد، خواند، نوشت، در آنها پیمایش (seek) کرد و آنها را بست. نام فایلها به شیوهای شبیه به Korn Shell یا C-Shell، مشمول بسط “ ” به دایرکتوریهای خانگی میشوند.
برای مثال:
~/.calcrc
~chongo/lib/fft_multiply.cal
برای اطلاعات بیشتر از دستور calc زیر استفاده کنید:
help file
زبان CALC (CALC LANGUAGE)
زبان calc یک زبان شبه-C است. این زبان شامل دستورهایی مانند اعلان متغیرها، عبارات، شرطها (tests)، برچسبها، حلقهها، عملیاتهای فایل و فراخوانی توابع است. این دستورها شباهت بسیار زیادی به همتایان خود در C دارند.
این زبان همچنین شامل تعدادی دستور اختصاصی برای خودِ calc است. این موارد شامل دستورهایی همچون تعریف تابع، راهنما (help)، خواندن فایلهای منبع (resource files)، تخلیه اطلاعات در یک فایل، اعلان خطا، کنترل پیکربندی و وضعیت هستند.
برای اطلاعات بیشتر از دستورهای calc زیر استفاده کنید:
help command
help statement
help expression
help operator
help config
- /usr/bin/calc
- فایل اجرایی calc
- /usr/bin/cscript/*
- اسکریپتهای شل calc
- /usr/lib/*.cal
- فایلهای منبع استاندارد calc
- /usr/lib/help/*
- فایلهای راهنما
- /usr/lib/bindings
- نگاشتهای کلید ویرایشگر خط فرمان غیر GNU-readline
- /usr/include/calc/*.h
- فایلهای سرآیند (include) برای استفاده در رابط C
- /usr/lib/libcalc.a
- کتابخانه پیوند باینری calc
- /usr/lib/libcustcalc.a
- کتابخانه پیوند باینری سفارشی
- /usr/share/calc/custom/*.cal
- فایلهای منبع سفارشی
- /usr/share/calc/custhelp/*
- فایلهای راهنمای سفارشی
محیط (ENVIRONMENT)
- CALCPATH
- فهرستی از
دایرکتوریها
که با «:» از
یکدیگر جدا
شدهاند و
برای
جستجوی نام
فایلهای
منبع calc که با
/، ./ یا ~ آغاز
نمیشوند
به کار
میرود.
اگر این متغیر تنظیم نشده یا خالی باشد، calc ابتدا $XDG_DATA_HOME و $XDG_CONFIG_HOME را بررسی میکند. چنانچه هر دوی آنها به دایرکتوریهای مطلق و قابل استفاده اشاره کنند، calc به ترتیب در این مسیرها به جستجو میپردازد:
${XDG_DATA_HOME}/calc ${XDG_CONFIG_HOME}/calc ${CALC_SHAREDIR} /usr/share/calc/custom
اگر هیچیک از دایرکتوریهای XDG قابل استفاده نباشد، جایگزین پیشفرض کامپایلشده معمولاً عبارت است از:
~/.cal ${CALC_SHAREDIR} /usr/share/calc/custom
- CALCRC
- در هنگام
راهاندازی
(مگر اینکه -h
یا -q در خط
فرمان مشخص
شده باشد)،
calc فایلها
را در طول
این متغیر
محیطیِ جدا
شده با «:»
جستجو
میکند.
اگر این متغیر تنظیم نشده یا خالی باشد، calc ابتدا $XDG_CONFIG_HOME را بررسی میکند. چنانچه به یک دایرکتوری مطلق و قابل استفاده اشاره کند، calc به ترتیب در این مسیرها جستجو میکند:
${XDG_CONFIG_HOME}/calc/calcrc ${CALC_SHAREDIR}/startup
اگر $XDG_CONFIG_HOME قابل استفاده نباشد، جایگزین کامپایلشده معمولاً عبارت است از:
~/.calcrc ${CALC_SHAREDIR}/startup
- CALCBINDINGS
- در هنگام
راهاندازی
(مگر اینکه
-h یا -q در خط
فرمان مشخص
شده باشد،
یا -m باز
کردن
فایلها را
برای
خواندن منع
کرده باشد)،
calc
نگاشتهای
کلید (key bindings) را
از نام فایل
مشخصشده
توسط این
متغیر
محیطی
میخواند.
فایل
نگاشتهای
کلید در طول
فهرست
دایرکتوریهای
$CALCPATH جستجو
میشود.
مقدار پیشفرض: binding
در صورتی که calc با پشتیبانی از GNU-readline کامپایل شده باشد، از این متغیر استفاده نمیشود. در این حالت، سازوکارهای استاندارد readline (رجوع کنید به readline(3)) به کار میروند.
- CALCHISTFILE
- مکان فایل
تاریخچهٔ calc.
اگر این متغیر تنظیم نشده یا خالی باشد، calc ابتدا از یک فایل موجود ~/.calc_history استفاده میکند. در غیر این صورت، calc متغیر $XDG_STATE_HOME را بررسی میکند. چنانچه به یک دایرکتوری مطلق، قابل استفاده و قابل نوشتن اشاره کند، مقدار مؤثر عبارت است از:
${XDG_STATE_HOME}/calc/history
اگر هیچکدام اعمال نشود، مقدار جایگزین عبارت است از:
~/.calc_history
در صورتی که calc با پشتیبانی از GNU-readline کامپایل شده باشد، از این متغیر استفاده نمیشود.
- CALCHELP
- مکان
دایرکتوری
راهنمای calc.
مقدار پیشفرض: /usr/share/calc/help
- CALCCUSTOMHELP
- مکان
دایرکتوری
راهنمای
سفارشی calc.
مقدار پیشفرض: /usr/share/calc/custhelp
هنگامی که CALCPATH، CALCRC و CALCHISTFILE تنظیم نشده یا خالی باشند، calc همانطور که در بالا توضیح داده شد از «مشخصات دایرکتوری پایه XDG» پیروی میکند.
میتوانید این مکانها را با تنظیم صریح متغیرهای محیطی calc بازنویسی کنید. برای نمونه، جهت بازگرداندن پیشفرضهای قدیمی و معمول در یک نصب متعارف یونیکس:
export CALCRC="./.calcinit:$HOME/.calcrc:/usr/share/calc/startup" export CALCPATH=".:./cal:$HOME/.cal:/usr/share/calc:/usr/share/calc/custom" export CALCHISTFILE="$HOME/.calc_history"
برای اطلاعات بیشتر دربارهٔ «مشخصات دایرکتوری پایه XDG» ببینید:
توجه داشته باشید که calc تلاش خواهد کرد دایرکتوری والد $CALCHISTFILE را ایجاد کند. اگر این کار کافی نباشد، چنانچه مسیری را به فایلی که هنوز وجود ندارد انتخاب کردهاید، ممکن است نیاز باشد برای سازوکار تاریخچه دستور زیر را اجرا کنید:
mkdir -p $(dirname $CALCHISTFILE)
بخش عمدهٔ calc توسط David I. Bell نوشته شده است.
آینهٔ اصلی (primary mirror) calc و پردازش گزارشهای باگ calc توسط Landon Curt Noll انجام میشود.
Landon Curt Noll نگهداری از کد منبع مرجع اصلی (master reference source)، امور مربوط به کنترل انتشار و همچنین سایر وظایف نگهداری calc را بر عهده دارد.
با تشکر از پیشنهادها و دلگرمیهای Peter Miller، Neil Justusson و Landon Noll.
با تشکر از Stephen Rothwell برای نوشتن نسخهٔ اصلی hist.c که برای ویرایش خط فرمان به کار میرود.
با تشکر از Ernest W. Bowen برای ارائهٔ بهبودهای فراوان در دقت و جامعیت برخی توابع عددی. بخش اعظمی از این موارد به صورت کدهای واقعی ارائه شد که با کمال سپاسگزاری پذیرفته شدند. همچنین Ernest متن اصلی بسیاری از فایلهای راهنما را فراهم کرد.
بخشهایی از این برنامه برگرفته از مجموعهٔ قدیمیتری از روتینهای محاسباتی با دقت دلخواه و در مالکیت عمومی (public domain) است که حوالی سال ۱۹۸۴ در اینترنت منتشر شده بود. در حال حاضر، تقریباً هیچ کد قابل تشخیصی از آن منبع اولیه باقی نمانده است.
تکثیر / پروانه عمومی همگانی کاهشیافته گنو کالک (COPYING / CALC GNU LESSER GENERAL PUBLIC LICENSE)
Calc یک نرمافزار آزاد است و تحت نسخهٔ 2.1 از پروانهٔ عمومی همگانی کاهشیافتهٔ گنو (GNU Lesser General Public License) منتشر شده است. تغییر آن و/یا توزیع نسخههایی از آن تحت شرایط مشخصی برای شما مجاز و آزاد است. دستورهای calc:
help copyright help copying help copying-lgpl help credit
باید محتویات فایلهای COPYING و COPYING-LGPL را نمایش دهند. این فایلها حاوی اطلاعاتی در مورد مجوز GNU Lesser General Public License برنامهٔ calc و بهویژه شرایطی هستند که تحت آنها مجاز به تغییر آن و/یا توزیع نسخههایی از آن میباشید.
شما باید رونوشتی از نسخهٔ 2.1 پروانهٔ عمومی همگانی کاهشیافتهٔ گنو را دریافت کرده باشید. اگر این فایلها را ندارید، به نشانی زیر مکاتبه کنید:
Free Software Foundation, Inc. 51 Franklin Street Fifth Floor Boston, MA 02110-1301 USA
حق نشر (کپیرایت) Calc به چندین شیوهٔ مختلف ثبت شده است. این شیوهها شامل موارد زیر است:
Copyright (C) year David I. Bell Copyright (C) year David I. Bell and Landon Curt Noll Copyright (C) year David I. Bell and Ernest Bowen Copyright (C) year David I. Bell, Landon Curt Noll and Ernest Bowen Copyright (C) year Landon Curt Noll Copyright (C) year Ernest Bowen and Landon Curt Noll Copyright (C) year Ernest Bowen Copyright (C) year Petteri Kettunen and Landon Curt Noll Copyright (C) year Christoph Zurnieden Copyright (C) year Landon Curt Noll and Thomas Jones-Low Copyright (C) year Klaus Alexander Seistrup and Landon Curt Noll
تعداد معدودی از فایلها در calc تحت مجوز «The Unlicense» قرار دارند. برای اطلاعات بیشتر در مورد این پروانه، نشانی زیر را ببینید:
پرسشهای کالک (CALC QUESTIONS)
برای مطرح کردن پرسشهای عمومی دربارهٔ calc با نگهدارندگان آن، خروجی دستور calc زیر را مشاهده کنید:
; help question
یا فایل منبع زیر را بخوانید:
QUESTIONS
یا نشانی اینترنتی زیر را ببینید:
برای اطلاع دادن یک باگ به نگهدارندگان calc یا ارسال اصلاحیهٔ باگ، خروجی دستور calc زیر را مشاهده کنید:
; help bugs
یا فایل منبع زیر را بخوانید:
BUGS
یا به نشانی اینترنتی زیر مراجعه کنید:
مشارکت در کد CALC (CONTRIBUTING CODE TO CALC)
Calc یک نرمافزار متنباز است. میتوانید در کد calc مشارکت کنید یا اصلاحیههای باگ را برای calc ارسال نمایید.
برای مشارکت در کد calc، لطفاً خروجی دستور calc زیر را مشاهده کنید:
; help contrib
یا فایل منبع زیر را بخوانید:
CONTRIB-CODE
یا به نشانی اینترنتی زیر مراجعه کنید:
وبسایت CALC (CALC WEB SITE)
Landon Noll وبسایت calc را نگهداری میکند که در نشانی زیر قرار دارد:
www.isthe.com/chongo/tech/comp/calc
کد منبع CALC (CALC SOURCE CODE)
آخرین نسخه از کد منبع calc را میتوان از مخزن GitHub زیر دریافت کرد:
تازهترین کد منبع calc در رأس شاخهٔ master قرار دارد.
میتوانید انتشارهای calc را از نشانی زیر بارگیری کنید:
https://github.com/lcn2/calc/releases
انتشارهایی که با ((Pre-release)) مشخص شدهاند، نسخههای بتا هستند.
جدیدترین انتشاری که با ((Pre-release)) مشخص نشده است، نسخهٔ پایدار پیشنهادی است.
| ^..^ | Share and enjoy! :-) |