COLUMN(1) دستورات کاربر COLUMN(1)

column - ستون‌بندی و قالب‌بندی متون به صورت جدول

column [گزینه‌ها] [پرونده ...]

ابزار column ورودی خود را در چندین ستون قالب‌بندی می‌کند. این ابزار از سه حالت پشتیبانی می‌کند:

پر کردن ستون‌ها پیش از سطرها

این حالت پیش‌فرض است (جهت سازگاری با نسخه‌های پیشین الزامی است).

پر کردن سطرها پیش از ستون‌ها

این حالت با گزینه -x, --fillrows فعال می‌شود.

ایجاد جدول

تعداد ستون‌های موجود در ورودی را تعیین کرده و یک جدول ایجاد می‌کند. این حالت با گزینه -t/--table فعال می‌شود. خروجی در حالت تعاملی با عرض ترمینال، و در حالت غیرتعاملی با ۸۰ ستون تراز می‌شود (برای جزئیات بیشتر --output-width را ببینید). قالب‌بندی سفارشی را می‌توان با استفاده از گزینه‌های گوناگون --table-* اعمال کرد.

ورودی از پرونده یا در غیر این صورت از ورودی استاندارد دریافت می‌شود. خطوط خالی نادیده گرفته می‌شوند و تمام توالی‌های چندبایتی نامعتبر با قرارداد x<hex> کدگذاری می‌شوند.

آرگومان columns برای گزینه‌های --table-* در زیر، یک فهرست جداشده با کاما از نام‌های ارائه‌شده توسط کاربر است که با --table-columns name1,name2,... تعریف می‌شوند، یا اندیس ستون‌ها همان‌طور که در ورودی ظاهر می‌شوند (شروع از ۱)، یا نام‌هایی که از طریق یک مشخصه --table-column تعریف شده‌اند. ترکیب نام‌ها و اندیس‌ها امکان‌پذیر است. مکان‌نگه‌دار ویژه '0' (مانند -R0) می‌تواند برای مشخص کردن همه ستون‌ها و '-1' (مانند -R -1) برای مشخص کردن آخرین ستون مرئی استفاده شود. استفاده از بازه‌هایی مانند '1-5' هنگام آدرس‌دهی ستون‌ها بر اساس اندیس مجاز است.

-J, --json

استفاده از قالب خروجی JSON برای چاپ جدول. گزینه --table-columns الزامی است و گزینه --table-name توصیه می‌شود.

-c, --output-width width

خروجی با عرض مشخص‌شده بر حسب تعداد کاراکترها قالب‌بندی می‌شود. توجه داشته باشید که ورودی طولانی‌تر از width به‌طور پیش‌فرض کوتاه نمی‌شود. مقدار پیش‌فرض در حالت تعاملی عرض ترمینال و در حالت غیرتعاملی ۸۰ ستون است. سرستون‌ها هرگز کوتاه نمی‌شوند.

مکان‌نگه‌دار unlimited (یا 0) می‌تواند برای جلوگیری از محدود کردن عرض خروجی استفاده شود. این کار هنگام هدایت مجدد خروجی به یک پرونده توصیه می‌شود.

(نام طولانی اصلی این گزینه --columns بود؛ این نام از نسخه ۲.۳۰ منسوخ شده است.)

-d, --table-noheadings

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

-o, --output-separator string

جداکننده ستون‌ها برای خروجی جدول (پیش‌فرض دو فاصله است).

-s, --input-separator, --separator separators

جداکننده‌های احتمالی موارد ورودی (پیش‌فرض نویسه فاصله خالی است).

-S, --use-spaces number

در حالتی غیر از حالت جدول، از فاصله‌ها به‌جای نویسه‌های تب (tabulator) برای تراز کردن ستون‌ها استفاده می‌کند. این گزینه حداقل تعداد فاصله‌هایی را که دو ستون را از هم جدا می‌کنند مشخص می‌کند.

-t, --table

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

--table-colorscheme name

طرح رنگی را مشخص می‌کند. نام پیش‌فرض "column" است. برای جزئیات بیشتر بخش رنگ‌ها (COLORS) را ببینید.

-C, --table-column attributes

تعریف یک ستون با فهرستی از مشخصه‌ها که با کاما جدا شده‌اند. این گزینه می‌تواند بیش از یک بار استفاده شود؛ هر بار استفاده، یک ستون منفرد را تعریف می‌کند. مشخصه‌ها جایگزین برخی از گزینه‌های --table-* می‌شوند: برای نمونه، --table-column name=FOO,right ستونی را تعریف می‌کند که متن در آن راست‌چین است. این گزینه با -N/--table-columns مانعة‌الجمع است.

مشخصه‌های پشتیبانی‌شده عبارتند از:

name=string

نام ستون.

trunc

کوتاه‌کردن متن ستون در صورت لزوم. معادل --table-truncate است. توجه داشته باشید که سرستون هرگز کوتاه نمی‌شود و حداقل عرض ستون را تعیین می‌کند.

tree

استفاده از این ستون برای خروجی درخت‌مانند. برای جزئیات بیشتر --tree را ببینید.

right

راست‌چین کردن متن. معادل --table-right است.

width=number

عرض ستون. تنها به‌عنوان یک راهنما استفاده می‌شود. برای اعمال اجباری آن، مشخصه strictwidth را نیز تعیین کنید. حداقل عرض واقعی، عرض سرستون است.

strictwidth

پیروی دقیق از width= برای تنظیم حداقل اندازه ستون. در صورتی که عرض خروجی فضای کافی فراهم کند، ستون می‌تواند بزرگ‌تر باشد.

noextremes

نادیده گرفتن عرض محتوای غیرعادی طولانی. برای جزئیات بیشتر --table-noextreme را ببینید.

hidden

عدم چاپ ستون. برای جزئیات بیشتر --table-hide را ببینید.

wrap

اجازه استفاده از سلول چندخطی برای متن طولانی در صورت لزوم. توجه داشته باشید که سرستون هرگز شکسته نمی‌شود و حداقل عرض ستون را تعیین می‌کند. برای جزئیات بیشتر --table-wrap را ببینید.

wrapnl

شکستن خط در کاراکترهای خط جدید؛ خطوط جدید در داده‌های سلول به‌عنوان شکستگی خط در نظر گرفته می‌شوند.

wrapzero

شکستن خط در کاراکترهای صفر (NUL) در داده‌های سلول.

json=type

تعریف نوع ستون برای خروجی JSON. انواع پشتیبانی‌شده عبارتند از string، number، float، array-string، array-number و boolean.

color=name

تعریف رنگ ستون برای خروجی در ترمینال. مقدار name یک نام رنگ (black, blink, blue, bold, brown, cyan, darkgray, gray, green, halfbright, lightblue, lightcyan, lightgray, lightgreen, lightmagenta, lightred, magenta, red, reset, reverse و yellow) یا شماره توالی رنگ ANSI جداشده با نقطه ویرگول، اما بدون پیشوند 'ESC[' و پسوند 'm' است. برای نمونه، "37;41" توالی‌های پس‌زمینه قرمز و پیش‌زمینه سفید را تعریف می‌کند. برای جزئیات بیشتر بخش رنگ‌ها (COLORS) را ببینید.

colorkey=name

رنگ تعریف‌شده در طرح رنگی را مشخص می‌کند. --table-colorscheme را ببینید.

headercolor=name

مانند color=، اما رنگ را تنها برای سرستون تعیین می‌کند.

headercolorkey=name

رنگ سرستون را مطابق با طرح رنگی مشخص می‌کند. --table-colorscheme را ببینید.

-N, --table-columns names

مشخص کردن نام ستون‌ها با یک فهرست جداشده با کاما. این نام‌ها برای سرستون جدول و برای آدرس‌دهی ستون در آرگومان‌های گزینه‌ها استفاده می‌شوند. همچنین --table-column را ببینید.

-l, --table-columns-limit number

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

-R, --table-right columns

راست‌چین کردن متن در ستون‌های مشخص‌شده.

-T, --table-truncate columns

مشخص کردن ستون‌هایی که متن آن‌ها در صورت لزوم می‌تواند کوتاه شود؛ در غیر این صورت، ورودی‌های بسیار طولانی جدول ممکن است در چند خط چاپ شوند.

-E, --table-noextreme columns

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

این گزینه به‌طور پیش‌فرض برای آخرین ستون مرئی فعال است.

-e, --table-header-repeat

چاپ خط سرستون برای هر صفحه.

-K, --table-header-as-columns

استفاده از اولین خط ورودی به‌عنوان سرستون جدول. این گزینه با --table-columns و --table-column مانعة‌الجمع است.

-W, --table-wrap columns

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

--wrap-separator string

استفاده از string به‌عنوان جداکننده برای شکستن متن درون ستون‌هایی که شکستن خط در آن‌ها فعال است. هنگام نمایش متن، جداکننده با خطوط جدید جایگزین می‌شود. این گزینه نیازمند حالت جدول و فعال بودن شکستن خط در ستون‌ها است (--table-wrap را ببینید). برای نمونه، از | برای شکستن خط در نویسه پایپ درون داده‌های ستون استفاده کنید.

-H, --table-hide columns

عدم چاپ ستون‌های مشخص‌شده. مکان‌نگه‌دار ویژه '-' می‌تواند برای پنهان کردن همه ستون‌های بدون نام استفاده شود (--table-columns را ببینید).

-O, --table-order columns

مشخص کردن ترتیب ستون‌های خروجی.

-n, --table-name name

مشخص کردن نام جدول مورد استفاده برای خروجی JSON. پیش‌فرض "table" است.

-m, --table-maxout

پر کردن تمام فضای موجود در خروجی.

-L, --keep-empty-lines

حفظ خطوط فقط حاوی فاصله در ورودی. پیش‌فرض نادیده گرفتن تمام خطوط خالی است. نام اصلی این گزینه --table-empty-lines بود، اما از آن زمان منسوخ شده است چرا که این تصور غلط را ایجاد می‌کرد که گزینه تنها برای حالت جدول اعمال می‌شود.

-r, --tree column

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

-i, --tree-id column

مشخص کردن ستونی که حاوی شناسه یکتای فرزند برای هر خط در یک رابطه فرزند-والد است.

-p, --tree-parent column

مشخص کردن ستونی که حاوی شناسه والد برای هر خط در یک رابطه فرزند-والد است.

-x, --fillrows

پر کردن سطرها پیش از پر کردن ستون‌ها.

--color[=when]

رنگی کردن خروجی. آرگومان اختیاری when می‌تواند auto، never یا always باشد. در صورت حذف آرگومان when، پیش‌فرض auto است. رنگ‌ها می‌توانند غیرفعال شوند؛ برای مشاهده پیش‌فرض داخلی فعلی، خروجی --help را ببینید. همچنین بخش رنگ‌ها (COLORS) را ببینید.

-h, --help

نمایش متن راهنما و خروج.

-V, --version

نمایش نسخه و خروج.

رنگی‌سازی خروجی توسط قابلیت terminal-colors.d(5) پیاده‌سازی شده است. رنگ‌آمیزی ضمنی را می‌توان با یک پرونده خالی

/etc/terminal-colors.d/column.disable

برای دستور column یا برای تمام ابزارها با پرونده

/etc/terminal-colors.d/disable

غیرفعال کرد.

از نسخه ۲.۴۱، متغیر محیطی $NO_COLOR نیز برای غیرفعال کردن رنگی‌سازی خروجی پشتیبانی می‌شود، مگر اینکه صریحاً توسط یک گزینه خط فرمان فعال شده باشد.

تنظیمات ویژه کاربر در $XDG_CONFIG_HOME/terminal-colors.d یا $HOME/.config/terminal-colors.d تنظیمات سراسری را بازنویسی (override) می‌کند.

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

نام طرح رنگی پیش‌فرض "column" است و می‌توان آن را با گزینه زیر بازنویسی کرد:

--table-colorscheme name

سپس پرونده name[.disable|enable|scheme] می‌تواند در /etc/terminal-colors.d/، $XDG_CONFIG_HOME/terminal-colors.d یا $HOME/.config/terminal-colors.d/ استفاده شود.

نام منطقی رنگ (کلید) در طرح رنگی می‌تواند توسط مشخصه‌های ستون colorkey= و headercolorkey= آدرس‌دهی شود. برای نمونه:

echo 'important red'           > ~/.config/terminal-colors.d/cooltable.scheme
echo 'important-header 37;41' >> ~/.config/terminal-colors.d/cooltable.scheme
echo -e "a b c\naa bb cc\naaa bbb ccc" | column -t \
        --table-colorscheme=cooltable \
        -C name=AAA,colorkey=important,headercolorkey=important-header \
        -C name=BBB,color=magenta,headercolor=cyan \
        -C name=CCC,color=green

این کار یک طرح رنگی با نام "cooltable" ایجاد کرده و سرستون و داده‌های ستون اول را طبق کلیدهای موجود در طرح رنگ‌آمیزی می‌کند. دو ستون دیگر با نام‌های مستقیم رنگ‌ها رنگ‌آمیزی خواهند شد.

COLUMNS

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

LIBSMARTCOLS_DEBUG=all

خروجی اشکال‌زدایی libsmartcols را فعال می‌کند.

LIBSMARTCOLS_DEBUG_PADDING=on

از کاراکترهای فاصله‌گذاری (padding) مرئی استفاده می‌کند.

دستور column در 4.3BSD-Reno ظاهر شد.

در نسخه ۲.۲۳ عملکرد گزینه -s به حالت غیرحریصانه (non-greedy) تغییر یافت، برای نمونه:

printf "a:b:c\n1::3\n" | column -t -s ':'

خروجی قدیمی:

a  b  c
1  3

خروجی جدید (از زمان util-linux 2.23):

a  b  c
1     3

نسخه‌های قدیمی این ابزار نشان می‌دادند که "سطرها قبل از ستون‌ها پر می‌شوند" به‌صورت پیش‌فرض است، و گزینه -x این حالت را معکوس می‌کند. این نگارش رفتار واقعی برنامه را منعکس نمی‌کرد و از آن زمان تصحیح شده است (توضیحات بالا را ببینید). پیاده‌سازی‌های دیگر column ممکن است همچنان از مستندات قدیمی‌تر استفاده کنند، اما در هر حال رفتار باید یکسان باشد.

چاپ fstab با یک خط سرستون و تراز کردن اعداد به سمت راست:

sed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE,OPTIONS,FREQ,PASS --table-right FREQ,PASS

چاپ fstab و پنهان کردن ستون‌های بدون نام:

sed 's/#.*//' /etc/fstab | column --table --table-columns SOURCE,TARGET,TYPE --table-hide -

چاپ یک ساختار درختی:

echo -e '1 0 A\n2 1 AA\n3 1 AB\n4 2 AAA\n5 2 AAB' | column --tree-id 1 --tree-parent 2 --tree 3
1  0  A
2  1  |-AA
4  2  | |-AAA
5  2  | `-AAB
3  1  `-AB

چاپ جدول با جداکننده سفارشی شکست خط:

echo -e 'Name:Description\nJohn:A|software|developer\nJane:A|data|scientist' | column --table --separator ':' --table-wrap 2 --wrap-separator '|'
Name  Description
John  A
      software
      developer
Jane  A
      data
      scientist

colrm(1), ls(1), paste(1), sort(1)

برای گزارش باگ‌ها، از سامانه پیگیری مشکلات https://github.com/util-linux/util-linux/issues.

دستور column بخشی از بسته util-linux است که می‌توان آن را از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux.

2026-09-02 util-linux 2.42.3