GDBMTOOL(1) مرجع کاربری GDBM GDBMTOOL(1)

gdbmtool - بررسی و تغییر پایگاه‌داده GDBM

gdbmtool [-lmNnqrs] [-b SIZE] [-c SIZE] [-f FILE] [--block-size=SIZE] [--cache-size=SIZE] [--file FILE] [--newdb] [--no-lock] [--no-mmap] [--norc] [--quiet] [--read-only] [--synchronize] [DBFILE] [COMMAND [; COMMAND...]]

gdbmtool [-Vh] [--help] [--usage] [--version]

ابزار gdbmtool به شما امکان می‌دهد یک پایگاه‌داده موجود GDBM را مشاهده و ویرایش کرده یا یک پایگاه‌داده جدید ایجاد کنید.

آرگومان DBFILE نام پایگاه‌داده جهت باز کردن را مشخص می‌کند. اگر مشخص نشود، نام پیش‌فرض junk.gdbm به جای آن استفاده می‌شود. اگر پایگاه‌داده مشخص‌شده وجود نداشته باشد، ایجاد خواهد شد. یک پایگاه‌داده موجود را می‌توان با استفاده از گزینه --newdb پاک‌سازی کرد (یعنی تمام رکوردها از آن حذف شوند؛ به ادامه مراجعه کنید).

مگر اینکه گزینه -N (--norc) داده شده باشد، پس از راه‌اندازی، gdbmtool ابتدا به دنبال فایلی به نام .gdbmtoolrc در دایرکتوری کاری جاری می‌گردد، و اگر آنجا پیدا نشد، در دایرکتوری خانگی کاربری که برنامه را آغاز کرده جستجو می‌کند. در صورت یافت شدن، این فایل خوانده شده و به عنوان فهرستی از دستورات gdbmtool تفسیر می‌شود.

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

برنامه زمانی خاتمه می‌یابد که دستور quit داده شود، یا پایان فایل (EOF) در ورودی استاندارد آن تشخیص داده شود.

دستورات را می‌توان در خط فرمان نیز پس از آرگومان DBFILE مشخص کرد. در این حالت، آن‌ها بدون تلاش برای خواندن دستورات بیشتر از ورودی استاندارد تفسیر خواهند شد.

اگر چندین دستور مشخص شوند، باید با نقطه ویرگول (semicolons) از هم جدا شوند (به‌درستی اسکیپ یا نقل‌قول شوند تا از تفسیر آن‌ها توسط پوسته جلوگیری گردد).

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

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

Escape	Expansion
\a	نویسه زنگ شنیداری (ASCII 7)
\b	نویسه پس‌بر (ASCII 8)
\f	نویسه برگه جدید (ASCII 12)
\n	نویسه خط جدید (ASCII 10)
\r	نویسه بازگشت به ابتدای سطر (ASCII 13)
\t	نویسه تب افقی (ASCII 9)
\v	نویسه تب عمودی (ASCII 11)
\\	اسلش تکی
\"	نقل‌قول دوگانه

علاوه بر این، یک بک‌اسلش بلافاصله پیش از نویسه پایان خط، آن نویسه را حذف می‌کند و امکان شکستن آرگومان‌های طولانی را در چندین خط ورودی فراهم می‌سازد.

تنظیم اندازه بلوک.
تنظیم اندازه حافظه موقت (کَش).
خواندن دستورات از FILE، به جای ورودی استاندارد.
غیرفعال کردن قفل‌گذاری پرونده.
عدم استفاده از mmap(2).
ایجاد پایگاه‌داده، و در صورت وجود، تخلیه کامل آن (truncate).
عدم نمایش بنر اولیه.
باز کردن پایگاه‌داده در حالت فقط‌خواندنی.
همگام‌سازی با دیسک پس از هر نوشتن.
نمایش خلاصه‌ای کوتاه از نحوه استفاده.
نمایش فهرستی از گزینه‌های موجود.
نمایش نسخه برنامه.

چاپ avail list (فهرست فضاهای خالی و در دسترس).
چاپ باکت شماره NUM و تنظیم آن به عنوان باکت جاری.
چاپ حافظه موقت (کَش) باکت.
بستن پایگاه‌داده باز جاری.
چاپ تعداد مدخل‌های موجود در پایگاه‌داده.
چاپ باکت جاری.
حذف رکورد با کلید مشخص‌شده KEY.
چاپ دایرکتوری درهم‌سازی (هش).
تنزل قالب پایگاه‌داده از قالب گسترش‌یافته numsync به قالب استاندارد.
برون‌بری پایگاه‌داده به فایل مسطح (تخت) FILE-NAME. این معادل با دستور gdbm_dump(1) است.
این دستور یک پرونده موجود را بازنویسی نمی‌کند، مگر اینکه پارامتر truncate نیز مشخص شده باشد. پارامتر اختیاری دیگر، نوع فایل تخلیه را تعیین می‌کند (*به Flat files مراجعه کنید). به‌طور پیش‌فرض، فایل تخلیه اسکی (ASCII) ایجاد خواهد شد.
واکشی و نمایش رکورد با کلید مشخص‌شده KEY.
واکشی و نمایش اولین رکورد در پایگاه‌داده. رکوردهای بعدی را می‌توان با استفاده از دستور next واکشی کرد (به ادامه مراجعه کنید).
محاسبه و نمایش مقدار هش برای کلید مشخص‌شده KEY.
چاپ سرآیند فایل.
چاپ خلاصه‌ای فشرده از دستورات، شامل حرف و فعل دستوری همراه با پارامترها و توضیحی کوتاه از عملکرد هرکدام. آرگومان‌های اختیاری در کروشه قرار دارند.
نمایش فهرست تاریخچه دستورات به همراه شماره خطوط. این دستور تنها در صورتی در دسترس است که برنامه با GNU Readline کامپایل شده باشد.
history COUNT.
نمایش COUNT دستور پایانی از تاریخچه دستورات.
history N COUNT.
نمایش COUNT دستور از تاریخچه دستورات با شروع از دستور Nام.
درون‌ریزی داده‌ها از یک فایل تخلیه تخت FILE-NAME. اگر آرگومان replace داده شود، هر رکوردی با کلیدی مشابه با رکوردهای از قبل موجود، جایگزین آن‌ها خواهد شد. آرگومان nometa بازیابی اطلاعات فراداده از فایل تخلیه را غیرفعال می‌کند.
فهرست کردن محتویات پایگاه‌داده.
دسترسی ترتیبی: واکشی و نمایش رکورد بعدی. اگر KEY داده شده باشد، رکورد پس از رکوردی با این کلید واکشی خواهد شد.
open FILE
باز کردن پرونده پایگاه‌داده FILE. در صورت موفقیت، پایگاه‌داده‌ای که پیش‌تر باز بوده بسته می‌شود. در غیر این صورت، اگر عملیات ناموفق باشد، پایگاه‌داده باز فعلی بدون تغییر باقی می‌ماند.
این دستور اطلاعات تکمیلی را از متغیرهای open، lock، mmap، و sync دریافت می‌کند. برای شرح تفصیلی این متغیرها، به بخش متغیرها (VARIABLES) مراجعه کنید.
بستن پایگاه‌داده و خروج از برنامه.
سازمان‌دهی مجدد پایگاه‌داده.
بدون آرگومان، متغیرها و مقادیر آن‌ها را فهرست می‌کند. اگر آرگومان‌ها مشخص شوند، متغیرها را تنظیم می‌کند. متغیرهای بولی را می‌توان با تعیین نام متغیر، که به‌صورت اختیاری پیشوند no دارد، روی false تنظیم کرد.
دو تصویر لحظه‌ای (اسنپ‌شات) از پایگاه‌داده را تحلیل کرده و تازه‌ترین آن‌ها را برمی‌گزیند. در صورت بروز خطا، یک گزارش تشخیصی با جزئیات کامل چاپ می‌کند. از این دستور برای بازیابی دستی پس از خرابی استفاده کنید. برای جزئیات بیشتر، لطفاً به فصل Crash Tolerance (تحمل خرابی) در راهنمای GDBM مراجعه کنید.
خواندن دستورات از پرونده مشخص‌شده FILE.
چاپ وضعیت جاری برنامه.
ذخیره DATA با کلید مشخص‌شده KEY در پایگاه‌داده. اگر KEY از قبل موجود باشد، داده آن جایگزین خواهد شد.
همگام‌سازی پرونده پایگاه‌داده با فضای ذخیره‌سازی دیسک.
ارتقای پایگاه‌داده از قالب استاندارد به قالب گسترش‌یافته numsync.
لغو تنظیم متغیرهای فهرست‌شده.
چاپ نسخه gdbm.

یک دستور می‌تواند با یک علامت خط لوله (|) و یک دستور پوسته دنبال شود. معنای آن همانند پوسته Bourne است: خروجی دستور gdbmtool به ورودی دستور پوسته‌ای که در سمت راست | مشخص شده متصل می‌شود. در این حالت صفحه‌بند (pager) غیرفعال می‌شود.

دستور define سازوکاری را برای تعریف ساختارهای کلید یا محتوا فراهم می‌کند. این دستور مشابه با اعلان ساختار (struct) در زبان C است:

define key|content { defnlist }

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

هر اعلان یکی از قالب‌های زیر را دارد:

type name
type name [N]

که در آن type نوع داده و name نام عضو است. قالب دوم عضو name را به عنوان آرایه‌ای از N عنصر از نوع type تعریف می‌کند.

انواع داده‌های پشتیبانی‌شده عبارتند از:

type	meaning
char	تک‌بایت (علامت‌دار)
short	عدد صحیح کوتاه علامت‌دار
ushort	عدد صحیح کوتاه بدون علامت
int	عدد صحیح علامت‌دار
unsigned	عدد صحیح بدون علامت
uint	همانند مورد قبل
long	عدد صحیح بلند علامت‌دار
ulong	عدد صحیح بلند بدون علامت
llong	عدد صحیح بسیار بلند علامت‌دار
ullong	عدد صحیح بسیار بلند بدون علامت
float	عدد ممیز شناور
double	عدد ممیز شناور با دقت مضاعف
string	آرایه‌ای از نویسه‌ها (به نکته زیر مراجعه کنید)
stringz	رشته نویسه‌ای خاتمه‌یافته با تهی (null-terminated)

اعلان‌های هم‌ترازی زیر را می‌توان در داخل defnlist به کار برد:

عضو بعدی در آفست N آغاز می‌شود.
افزودن N بایت فاصله‌گذاری (padding) به عضو قبلی.

برای نمونه:

define content {
	int status,
	pad 8,
	char id[3],
	stringz name
}

برای تعریف داده‌ای متشکل از تنها یک عضو، می‌توان از ساختار ساده‌شده زیر استفاده کرد:

define key|content type

که در آن type یکی از انواع داده‌های بررسی‌شده در بالا است.

نکته: از نوع string تنها زمانی می‌توان به شکل معقول استفاده کرد که آخرین یا تنها عضو ساختار داده باشد. دلیل آن این است که این نوع هیچ اطلاعاتی در مورد تعداد عناصر آرایه ارائه نمی‌دهد، بنابراین به گونه‌ای تفسیر می‌شود که تمام بایت‌ها تا انتهای داده را در بر می‌گیرد.

آیا پیش از برخی عملیات‌های مخرب، مانند تخلیه کامل پایگاه‌داده موجود، تأییدیه خواسته شود یا خیر. مقدار پیش‌فرض true است.
رشته اعلان اولیه. مقدار آن می‌تواند حاوی مشخص‌کننده‌های تبدیل باشد که شامل نویسه % به همراه یک نویسه دیگر است. این مشخص‌کننده‌ها در اعلان نهایی به شرح زیر بسط می‌یابند:
توالی	معادل / گسترش
%f	نام پرونده پایگاه‌داده
%p	نام برنامه
%P	نام بسته (gdbm)
%_	فاصله افقی (ASCII 32)
%v	نسخه برنامه
%%	%

اعلان پیش‌فرض %p>%_ است.

اعلان ثانویه. برای شرح مقادیر آن، به ps1 مراجعه کنید. این اعلان پیش از خواندن خط دوم و خطوط بعدی یک دستور چندخطی نمایش داده می‌شود.
مقدار پیش‌فرض %_>%_ است.
رشته‌ای که برای جداسازی فیلدهای یک داده ساختاریافته در خروجی به کار می‌رود (به بخش تعریف داده‌ها (DATA DEFINITIONS) مراجعه کنید).
پیش‌فرض , (یک ویرگول) است. مقدار این متغیر را نمی‌توان لغو کرد.
رشته‌ای که برای جداسازی عناصر آرایه هنگام چاپ یک داده ساختاریافته به کار می‌رود.
پیش‌فرض , (یک ویرگول) است. مقدار این متغیر را نمی‌توان لغو کرد.
نام و خط فرمان برنامه صفحه‌بند (pager) که خروجی به آن هدایت (pipe) می‌شود. این برنامه در حالت تعاملی زمانی استفاده می‌شود که تعداد تخمینی خطوط خروجی بیشتر از تعداد خطوط صفحه نمایش شما باشد.
مقدار پیش‌فرض از متغیر محیطی PAGER به ارث برده می‌شود. لغو مقدار این متغیر صفحه‌بندی را غیرفعال می‌کند.
آیا بنر خوش‌آمدگویی در هنگام راه‌اندازی نمایش داده شود یا خیر. این متغیر باید در یک پرونده اسکریپت راه‌اندازی تنظیم شود.

متغیرهای زیر نحوه باز شدن پایگاه‌داده را کنترل می‌کنند:

تنظیم اندازه حافظه موقت (کَش). به‌طور پیش‌فرض این متغیر تنظیم نشده است.
تنظیم اندازه بلوک. به‌طور پیش‌فرض تنظیم نشده است.
حالت باز کردن پرونده. مقادیر زیر مجاز هستند:
تخلیه کامل پایگاه‌داده در صورت وجود، یا ایجاد یک پایگاه‌داده جدید. باز کردن آن در حالت خواندن-نوشتن.
باز کردن پایگاه‌داده در حالت خواندن-نوشتن. در صورت عدم وجود، ایجاد می‌شود. این حالت پیش‌فرض است.
باز کردن پایگاه‌داده در حالت فقط‌خواندنی. در صورت عدم وجود آن، اعلام خطا می‌شود.
تنظیم حالت پرونده برای پرونده‌های پایگاه‌داده تازه ایجادشده. مقدار پیش‌فرض 0644 است.
قفل‌گذاری پایگاه‌داده. این حالت پیش‌فرض است.
استفاده از نگاشت حافظه. این حالت پیش‌فرض است.
هنگامی که فعال باشد، این گزینه باعث ادغام بلوک‌های خالی مجاور می‌شود که مدیریت کارآمدتر حافظه را به قیمت افزایش مشخصی در مصرف CPU امکان‌پذیر می‌سازد.
فعال کردن استخر مرکزی بلوک‌های خالی. این گزینه باعث می‌شود تمام بلوک‌های خالی فضا در استخر سراسری قرار گیرند و در نتیجه تخصیص فضای داده سرعت یابد.

gdbm_dump(1), gdbm_load(1), gdbm(3).

گزارش باگ‌ها را به <bug-gdbm@gnu.org> ارسال کنید.

حق نشر © 2013-2025 Free Software Foundation, Inc.
مجوز GPLv3+: گنو GPL نسخه ۳ یا بالاتر http://gnu.org/licenses/gpl.html
این نرم‌افزار آزاد است: شما برای تغییر و بازتوزیع آن آزاد هستید. هیچ‌گونه ضمانتی وجود ندارد، تا حدی که قانون اجازه می‌دهد.

۶ مارس ۲۰۲۵ GDBM