STRINGS(1) GNU Development Tools STRINGS(1)

strings - چاپ دنباله‌های نویسه‌های قابل چاپ در فایل‌ها

strings [-afovV] [-min-len]
[-n min-len] [--bytes=min-len]
[-t radix] [--radix=radix]
[-e encoding] [--encoding=encoding]
[-U method] [--unicode=method]
[-] [--all] [--print-file-name]
[-T bfdname] [--target=bfdname]
[-w] [--include-all-whitespace]
[-s] [--output-separator sep_string]
[--help] [--version] file...

برای هر file مشخص‌شده، دستور GNU strings دنباله‌های نویسه‌های قابل چاپی را که طول آن‌ها حداقل ۴ نویسه باشد (یا به تعداد مشخص‌شده با گزینه‌های زیر) و پس از آن‌ها یک نویسه غیرقابل چاپ آمده باشد، چاپ می‌کند.

بسته به نحوه پیکربندی برنامه strings، به طور پیش‌فرض یا تمام دنباله‌های قابل چاپ یافت‌شده در هر فایل، یا فقط دنباله‌هایی که در بخش‌های داده‌ای بارگذاری‌شونده و مقداردهی اولیه شده (loadable, initialized) قرار دارند نمایش داده می‌شوند. اگر نوع فایل غیرقابل تشخیص باشد، یا اگر strings در حال خواندن از stdin باشد، همواره تمام دنباله‌های قابل چاپ یافت‌شده را نمایش می‌دهد.

برای سازگاری با نسخه‌های پیشین، هر فایلی که پس از گزینه خط فرمان تنها - بیاید نیز بدون توجه به وجود گزینه -d به طور کامل پویش خواهد شد.

برنامه strings عمدتاً برای تعیین محتوای فایل‌های غیرمتنی کاربرد دارد.

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

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

فقط رشته‌های موجود در بخش‌های داده‌ای مقداردهی اولیه شده و بارگذاری‌شده در فایل را چاپ می‌کند. این کار ممکن است حجم داده‌های نامفهوم و زائد در خروجی را کاهش دهد، اما برنامه strings را در معرض آسیب‌پذیری‌های امنیتی احتمالی در کتابخانه BFD (که برای پویش و بارگذاری بخش‌ها استفاده می‌شود) قرار می‌دهد. می‌توان strings را طوری پیکربندی کرد که این گزینه رفتار پیش‌فرض آن باشد. در چنین مواردی، می‌توان از گزینه -a استفاده کرد تا از به کارگیری کتابخانه BFD اجتناب شده و به جای آن تمام رشته‌های یافت‌شده در فایل چاپ شوند.
نام فایل را پیش از هر رشته چاپ می‌کند.
خلاصه‌ای از نحوه استفاده از برنامه را در خروجی استاندارد چاپ کرده و خارج می‌شود.
دنباله‌هایی از نویسه‌های قابل نمایش را چاپ می‌کند که طول آن‌ها حداقل به اندازه min-len نویسه باشد. در صورت تعیین نشدن، حداقل طول پیش‌فرض ۴ در نظر گرفته می‌شود. تمایز بین نویسه‌های قابل نمایش و غیرقابل نمایش به تنظیمات گزینه‌های -e و -U بستگی دارد. دنباله‌ها همواره در نویسه‌های کنترلی مانند خط جدید (new-line) و بازگشت به ابتدای سطر (carriage-return) پایان می‌یابند، اما نویسه تب (tab) شامل این قاعده نمی‌شود.
مشابه -t o عمل می‌کند. در برخی دیگر از نسخه‌های strings، گزینه -o رفتاری مانند -t d دارد. از آنجا که نمی‌توان با هر دو روش سازگار بود، یکی از آن‌ها انتخاب شده است.
آفست (موقعیت بر حسب بایت) درون فایل را پیش از هر رشته چاپ می‌کند. این آرگومان تک‌نویسه‌ای مبنای عددی آفست را تعیین می‌کند: o برای هشت‌هشتی (octal)، x برای شانزده‌شانزدهی (hexadecimal)، یا d برای ده‌دهی (decimal).
کدگذاری نویسه (character encoding) رشته‌هایی را که باید یافت شوند مشخص می‌کند. مقادیر ممکن برای encoding عبارتند از: s = نویسه‌های تک‌بایتی ۷-بیتی (پیش‌فرض)، S = نویسه‌های تک‌بایتی ۸-بیتی، b = ۱۶ بیتی با ترتیب بایت بزرگ‌انتها (bigendian)، l = ۱۶ بیتی با ترتیب بایت کوچک‌انتها (littleendian)، B = ۳۲ بیتی با ترتیب بایت بزرگ‌انتها (bigendian)، و L = ۳۲ بیتی با ترتیب بایت کوچک‌انتها (littleendian). این گزینه برای یافتن رشته‌های نویسه عریض (wide character) کاربرد دارد (l و b برای نمونه در کدگذاری‌های یونیکد UTF-16/UCS-2 استفاده می‌شوند).
نحوه نمایش نویسه‌های چندبایتی کدگذاری‌شده با UTF-8 را در رشته‌ها کنترل می‌کند. مقدار پیش‌فرض (--unicode=default) هیچ رفتار خاصی با آن‌ها ندارد و در عوض به تنظیمات گزینه --encoding متکی است. مقادیر دیگر برای این گزینه، به طور خودکار مقدار --encoding=S را فعال می‌کنند.

گزینه --unicode=invalid با آن‌ها به عنوان نویسه‌های غیرگرافیکی رفتار کرده و در نتیجه آن‌ها را بخشی از یک رشته معتبر به شمار نمی‌آورد. تمام گزینه‌های باقی‌مانده با آن‌ها به عنوان نویسه‌های رشته‌ای معتبر رفتار می‌کنند.

گزینه --unicode=locale آن‌ها را بر اساس لوکال (locale) فعلی نمایش می‌دهد که ممکن است از کدگذاری UTF-8 پشتیبانی بکند یا نکند. گزینه --unicode=hex آن‌ها را به صورت دنباله‌هایی از بایت‌های هگزادسیمال محصور میان نویسه‌های <> نمایش می‌دهد. گزینه --unicode=escape آن‌ها را به شکل توالی‌های گریز (\uxxxx) و گزینه --unicode=highlight آن‌ها را به شکل توالی‌های گریز به رنگ قرمز برجسته شده (در صورت پشتیبانی دستگاه خروجی) نمایش می‌دهد. رنگ‌آمیزی به منظور جلب توجه به وجود دنباله‌های یونیکد در جاهایی است که احتمالاً انتظار آن‌ها نمی‌رود.

یک قالب کُد شیء (object code format) متفاوت با قالب پیش‌فرض سیستم' را مشخص می‌کند.
شماره نسخه برنامه را در خروجی استاندارد چاپ کرده و خارج می‌شود.
به طور پیش‌فرض، نویسه‌های تب و فاصله در رشته‌های نمایش‌داده‌شده گنجانده می‌شوند، اما سایر نویسه‌های فاصله خالی (whitespace) مانند خط جدید و بازگشت به ابتدای سطر لحاظ نمی‌گردند. گزینه -w این رفتار را تغییر می‌دهد تا تمام نویسه‌های فاصله خالی بخشی از یک رشته در نظر گرفته شوند.
به طور پیش‌فرض، رشته‌های خروجی با خط جدید از یکدیگر تفکیک می‌شوند. این گزینه امکان مشخص کردن هر رشته دلخواه را به عنوان جداکننده رکوردهای خروجی فراهم می‌سازد. این قابلیت همراه با --include-all-whitespace که ممکن است رشته‌ها در درون خود شامل خطوط جدید باشند، بسیار کاربردی است.
@file
گزینه‌های خط فرمان را از file می‌خواند. گزینه‌های خوانده‌شده به جای گزینه اصلی @file درج می‌شوند. اگر file وجود نداشته باشد یا قابل خواندن نباشد، با این گزینه به شکل تحت‌اللفظی رفتار خواهد شد و حذف نمی‌شود.

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

ar(1)، nm(1)، objdump(1)، ranlib(1)، readelf(1) و مدخل‌های Info برای binutils.

کپی‌رایت (c) ۱۹۹۱-۲۰۲۵ Free Software Foundation, Inc.

مجوز کپی، توزیع و/یا تغییر این سند تحت شرایط مجوز مستندات آزاد گنو (GNU Free Documentation License)، نسخه ۱.۳ یا هر نسخه بعدی منتشر شده توسط بنیاد نرم‌افزار آزاد اعطا می‌شود؛ بدون بخش‌های تغییرناپذیر، بدون متون روی جلد، و بدون متون پشت جلد. نسخه‌ای از این مجوز در بخشی با عنوان "GNU Free Documentation License" گنجانده شده است.

2026-01-23 binutils-2.45.1