PR(1)

๐Ÿ’– PR(1) โ€” the "make ur text cute for printing" page ๐Ÿ’–

hey bestie!! welcome to pr, a lil User Commands icon in the GNU coreutils fam. it's giving "typesetting but make it low effort." let's get into it ๐Ÿซถ


โœจ NAME โœจ

pr โ€” convert text files for printing ๐Ÿ–จ๏ธโœจ


๐ŸŒธ SYNOPSIS ๐ŸŒธ

pr [OPTION]... [FILE]...

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

Paginate or columnate</purl> FILE(s) for printing. basically: chop ur text into pages, or squish it into columns, so it looks cute on paper. no cap.

If there's no FILE, or FILE is literally just -, it reads from standard input. so go ahead, pipe it, she'll handle it ๐Ÿ’…

๐ŸŽ€ Mandatory arguments to long options are mandatory for short options too. (translation: if a long option needs a value, the short one needs it too. not optional. periodt.)

๐Ÿ‘‘ OPTIONS ๐Ÿ‘‘

  • +FIRST_PAGE[:LAST_PAGE], --pages=FIRST_PAGE[:LAST_PAGE] โ€” begin [stop] printing with page FIRST_[LAST_]PAGE. so u can start at FIRST_PAGE, or start there AND dip out at LAST_PAGE. yes the brackets are doing the "optional" thing, she's flexible ๐Ÿ’โ™€๏ธ
  • -COLS, --columns=COLS โ€” output COLS columns and print columns down, unless -a is used. also it balances the number of lines in the columns on each page. aesthetic AND fair. we love a balanced queen ๐ŸŒˆ
  • -a, --across โ€” print columns across rather than down. bestie this is meant to be used together with -COLS, don't run it solo, she gets lonely ๐Ÿ˜ญ
  • -c, --show-control-chars โ€” use hat notation (^G) and octal backslash notation. so the invisible chaos gremlin characters become visible ๐ŸŽ€
  • -d, --double-space โ€” double space the output. breathing room. self care ๐Ÿ’–
  • -D, --date-format=FORMAT โ€” use FORMAT for the header date. customize ur lil timestamp, main character energy fr fr
  • -e[CHAR[WIDTH]], --expand-tabs[=CHAR[WIDTH]] โ€” expand input CHARs (TABs) to tab WIDTH (8). default width is 8, iconic โœจ
  • -F, -f, --form-feed โ€” use form feeds instead of newlines to separate pages (by a 3-line page header with -F or a 5-line header and trailer without -F). yes -F and -f are both here, they're twins, they're a package deal ๐Ÿ‘ฏ
  • -h, --header=HEADER โ€” use a centered HEADER instead of the filename in the page header. -h "" prints a blank line. don't use -h"" โ€” like genuinely, don't, that's a trap ๐Ÿ’€
  • -i[CHAR[WIDTH]], --output-tabs[=CHAR[WIDTH]] โ€” replace spaces with CHARs (TABs) to tab WIDTH (8). the reverse of -e, she's giving "put the tabs back" ๐Ÿฆ‹
  • -J, --join-lines โ€” merge full lines, turns off -W line truncation, no column alignment, --sep-string[=STRING] sets separators. a whole vibe shift for the separators ngl
  • -l, --length=PAGE_LENGTH โ€” set the page length to PAGE_LENGTH (66) lines (default number of lines of text 56, and with -F 63). implies -t if PAGE_LENGTH <= 10 ๐Ÿ‘€
  • -m, --merge โ€” print all files in parallel, one in each column, truncate lines, but join lines of full length with -J. multiprocessing but make it paper ๐Ÿซถ
  • -n[SEP[DIGITS]], --number-lines[=SEP[DIGITS]] โ€” number lines, use DIGITS (5) digits, then SEP (TAB), default counting starts with 1st line of input file. cute lil line numbers, so organized โœจ
  • -N, --first-line-number=NUMBER โ€” start counting with NUMBER at the 1st line of first page printed (see +FIRST_PAGE). so u can lie about where u started, no judgement ๐Ÿ˜Œ
  • -o, --indent=MARGIN โ€” offset each line with MARGIN (zero) spaces, does not affect -w or -W, and MARGIN will be added to PAGE_WIDTH. she's got boundaries (literally) ๐Ÿ’…
  • -r, --no-file-warnings โ€” omit warning when a file cannot be opened. sometimes u just don't wanna know ๐Ÿ™ˆ
  • -s[CHAR], --separator[=CHAR] โ€” separate columns by a single character. default for CHAR is the <TAB> character without -w and 'no char' with -w. -s[CHAR] turns off line truncation of all 3 column options (-COLS|-a -COLS|-m) except -w is set. read that twice bestie, it's a whole condition tree ๐ŸŒณ
  • -S[STRING], --sep-string[=STRING] โ€” separate columns by STRING. without -S: default separator <TAB> with -J and <space> otherwise (same as -S" "), no effect on column options. so many separator options, pick ur fighter โš”๏ธ
  • -t, --omit-header โ€” omit page headers and trailers; implied if PAGE_LENGTH <= 10. she's lowkey automatic ๐ŸŽ€
  • -T, --omit-pagination โ€” omit page headers and trailers, eliminate any pagination by form feeds set in input files. bye bye structure ๐Ÿฆ‹
  • -v, --show-nonprinting โ€” use octal backslash notation. the sneaky nonprinting chars get exposed, no cap ๐Ÿ”ฅ
  • -w, --width=PAGE_WIDTH โ€” set page width to PAGE_WIDTH (72) characters for multiple text-column output only, -s[char] turns off (72). only kicks in for the multi-column situation, she's specific ๐Ÿ’œ
  • -W, --page-width=PAGE_WIDTH โ€” set page width to PAGE_WIDTH (72) characters always, truncate lines, except -J option is set, no interference with -S or -s. the bossy sibling of -w, she always shows up ๐Ÿ‘‘
  • --help โ€” display this help and exit. ur lil emergency exit ๐Ÿšช
  • --version โ€” output version information and exit. receipts, always ๐Ÿงพ

๐ŸŽ€ AUTHOR ๐ŸŽ€

Written by Pete TerMaat and Roland Huebner. absolute legends, we stan ๐Ÿ’–


๐Ÿ˜ญ REPORTING BUGS ๐Ÿ˜ญ

found something broken? don't suffer in silence bestie, tell the devs:


Copyright ยฉ 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.

This is free software: you are free to change and redistribute it.

๐Ÿšจ There is NO WARRANTY, to the extent permitted by law. fr fr, zero warranty, don't come for her ๐Ÿšจ

๐ŸŒˆ SEE ALSO ๐ŸŒˆ


and that's the whole page, bestie!! this lil manual is straight outta GNU coreutils 9.12, dated September 2026 โ€” yeah she's from the future, she's built different ๐Ÿ’…โœจ go forth and paginate ๐Ÿซถ๐ŸŽ€

๐Ÿ“ฆ where this page comes from