'\" t .\" Title: STRFILE .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 03/07/2026 .\" Manual: 4th Berkeley Distribution .\" Source: June 9, 1993 [Apr. 1997] .\" Language: English .\" .TH "STRFILE" "1" "03/07/2026" "June 9, 1993 [Apr\&. 1997]" "4th Berkeley Distribution" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" strfile \- ایجاد فایلی با دسترسی تصادفی برای ذخیره رشته‌ها .br unstr \- استخراج رشته‌ها به ترتیب اشاره‌گرها .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBstrfile\fR\ 'u \fBstrfile\fR [\-iorsx] [\-c\ \fIchar\fR] \fIsourcefile\fR [\fIoutputfile\fR] .HP \w'\fBunstr\fR\ 'u \fBunstr\fR [\-c\ \fIchar\fR] \fIdatafile\&.[ext]\fR [\fIoutputfile\fR] .SH "توضیحات (DESCRIPTION)" .PP دستور \fBstrfile\fR فایلی شامل گروه‌هایی از خطوط را می‌خواند که با خطی حاوی یک علامت درصد «%\*(Aq» (یا نویسه جداکننده مشخص‌شده دیگر) از یکدیگر جدا شده‌اند، و یک فایل داده ایجاد می‌کند که حاوی ساختار سرآیند و جدول آفست‌های فایل برای هر گروه از خطوط است\&. این ساختار امکان دسترسی تصادفی به رشته‌ها را فراهم می‌آورد\&. .PP اگر فایل خروجی در خط فرمان مشخص نشده باشد، با نام \fIsourcefile\&.dat\fR نام‌گذاری می‌شود\&. .PP هدف دستور \fBunstr\fR خنثی‌سازی و معکوس کردن عملکرد \fBstrfile\fR است\&. این دستور رشته‌های موجود در فایل منبع را—که همان \fIdatafile\&.ext\fR بدون پسوند آن است، یا \fIdatafile\fR در صورتی که پسوندی مشخص نشده باشد (در این حالت، پسوند \fB\&.dat\fR به نام فایل داده افزوده می‌شود)—به ترتیبی که در سرآیند فایل \fIdatafile\fR فهرست شده‌اند، چاپ می‌کند\&. اگر هیچ \fIoutputfile\fR مشخص نشده باشد، خروجی در خروجی استاندارد چاپ می‌شود؛ در غیر این صورت در فایل تعیین‌شده نوشته خواهد شد\&. \fBunstr\fR همچنین می‌تواند نویسه جداکننده را به صورت سراسری در فایل رشته‌ها تغییر دهد\&. با استفاده از \fBstrfile \-o\fR و سپس استفاده از \fBunstr\fR می‌توان نسخه‌های مرتب‌شده‌ای از فایل‌های ورودی را بر اساس ترتیب جدول استخراج کرد\&. .SS "گزینه‌ها (OPTIONS)" .PP گزینه‌ها به شرح زیر هستند: .PP \fB\-c \fR\fIchar\fR .RS 4 تغییر نویسه جداکننده از علامت درصد به \fIchar\fR\&. این گزینه برای هر دو دستور \fBstrfile\fR و \fBunstr\fR در دسترس است\&. .RE .PP \fB\-i\fR .RS 4 نادیده گرفتن بزرگی و کوچکی حروف هنگام مرتب‌سازی رشته‌ها\&. .RE .PP \fB\-o\fR .RS 4 مرتب‌سازی رشته‌ها به ترتیب الفبایی\&. جدول آفست بر اساس ترتیب الفبایی گروه‌های خطوط ارجاع‌شده مرتب خواهد شد\&. هرگونه نویسه غیرحرفی-عددی اولیه نادیده گرفته می‌شود\&. این گزینه باعث تنظیم شدن بیت STR_ORDERED در فیلد \fIstr_flags\fR در سرآیند می‌شود\&. (همچنین اکنون واقعاً مرتب‌سازی را انجام می‌دهد! سابقاً این‌طور نبود)\&. .RE .PP \fB\-r\fR .RS 4 تصادفی‌سازی دسترسی به رشته‌ها\&. ورودی‌های جدول آفست به صورت تصادفی مرتب خواهند شد\&. این گزینه موجب تنظیم بیت STR_RANDOM در فیلد \fIstr_flags\fR در سرآیند می‌شود\&. (و واقعاً تصادفی‌سازی می‌کند) .RE .PP \fB\-s\fR .RS 4 اجرای بی‌صدا؛ پس از اتمام کار، پیام خلاصه‌ای نمایش داده نمی‌شود\&. .RE .PP \fB\-x\fR .RS 4 مشخص می‌کند که هر نویسه الفبایی در گروه‌های خطوط با یک رمز سزار ساده ۱۳ جایگاه چرخیده است (rot13)\&. این گزینه باعث تنظیم شدن بیت STR_ROTATED در فیلد \fIstr_flags\fR در سرآیند می‌شود\&. توجه داشته باشید که این گزینه رشته‌ها را چرخش یا رمزگردانی \fBنمی‌کند\fR\-\-این عملیات باید به طور جداگانه انجام گیرد\&. .RE .SS "سرآیند (HEADER)" .PP قالب سرآیند به صورت زیر است: .PP #define VERSION 1 unsigned long str_version; /* version number */ unsigned long str_numstr; /* # of strings in the file */ unsigned long str_longlen; /* length of longest string */ unsigned long str_shortlen; /* shortest string length */ #define STR_RANDOM 0x1 /* randomized pointers */ #define STR_ORDERED 0x2 /* ordered pointers */ #define STR_ROTATED 0x4 /* rot\-13\*(Aqd text */ unsigned long str_flags; /* bit field for flags */ char str_delim; /* delimiting character */ .PP تمام فیلدها با ترتیب بایت شبکه (network byte order) نوشته می‌شوند\&. .SH "گزارش باگ‌ها (BUGS)" .PP امید می‌رود که اکنون کمتر شده باشند\&. با این حال، به نظر می‌رسد فال‌ها یا جملات قصار (رشته‌های متنی) که با یک خط خالی آغاز می‌شوند، در میان حروف تصادفی مرتب می‌شوند\&. ظاهراً این مسئله شامل هنر اسکی (ASCII art) که فاقد هرگونه حرف است و خطوط اولیه‌ای که صرفاً غیرحرفی-عددی هستند نیز می‌شود\&. دلیلی برای این که چرا چنین اتفاقی می‌افتد پیدا نکردم\&. .SH "سایر کاربردها (OTHER USES)" .PP چه کارهایی می‌توان با این ابزار انجام داد به جز نمایش پیام‌های کنایه‌آمیز و ناپسند روی صفحه نمایش کاربران هنگام ورود یا خروج از سیستم؟ .PP امکانات دیگری نیز \fBوجود دارد\fR\&. کد منبع یک برنامه نمونه به نام \fBrandstr\fR، همراه با این بسته توزیع شده است: randstr چیزی میان \fBunstr\fR و \fBfortune\fR است\&. این برنامه یک فایل مشخص‌شده را می‌خواند و به صورت تصادفی یک رشته متنی را از آن انتخاب می‌کند\&. .PP 1 .RS 4 گنجاندن \fIstrfile\&.h\fR در یک برنامه خواندن/ارسال اخبار یوزنت، به منظور ایجاد امضاهای تصادفی\&. \fBTin\fR(1) کار مشابهی را به شیوه‌ای بسیار پیچیده‌تر انجام می‌دهد\&. .RE .PP 2 .RS 4 استفاده از آن در یک بازی\&. اگرچه strfile از «فیلدها» یا «رکوردها» پشتیبانی نمی‌کند، اما هیچ دلیلی وجود ندارد که رشته‌های متنی ساختاری یکنواخت نداشته باشند: خط اول، پرتاب تاس؛ خط دوم، امتیاز؛ خط سوم و خطوط بعدی، پیام متنی\&. .RE .PP 3 .RS 4 استفاده از آن برای ذخیره دفترچه آدرس\&. حتی برخی از افرادی که می‌شناسم می‌توانند از آن برای تصمیم‌گیری درباره اینکه جمعه شب‌ها با چه کسی تماس بگیرند استفاده کنند (و برای برخی از آن‌ها اصلاً فرقی نداشت که شماره تلفنی در آن باشد یا نه)\&. .RE .PP 4 .RS 4 استفاده از آن در سناریوهای «قرعه‌کشی»\&. اگر یک ارائه‌دهنده خدمات اینترنت (ISP) هستید، می‌توانید اسکریپتی بنویسید تا نام‌های کاربری و مشخصات GECOS را از /etc/passwd در قالب strfile ذخیره کند، و اسکریپت دیگری بنویسید تا پیام «تبریک، شما برنده شدید» را برای کاربر خوش‌شانس انتخاب‌شده ارسال کند\&. جایزه می‌تواند یک ماه خدمات رایگان باشد، یا اگر AOL هستید، یک ماه اشتراک رایگان نزد یک ارائه‌دهنده خدمات واقعی!\&. .RE .SH "همچنین ببینید (SEE ALSO)" .PP \fBbyteorder\fR(3), \fBfortune\fR(6) .SH "تاریخچه (HISTORY)" .PP ابزار \fBstrfile\fR نخستین بار در 4\&.4BSD ظاهر شد\&. این نسخه به طور چشمگیری دستخوش تغییر شد، به ویژه بخش زیادی از آن به شیوه‌های مختص به لینوکس تغییر یافت\&. از آن زمان کارهایی برای عمومی‌تر ساختن کد صورت گرفته و تا به این لحظه کارکرد آن روی SunOS 4\&.x آزمایش شده است\&. انتظار می‌رود با تداوم فعالیت‌ها، بسترهای بیشتری پشتیبانی شوند\&.