Provided by: manpages-posix_2013a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of this interface
       may differ (consult the corresponding Linux manual page for details of Linux behavior), or the  interface
       may not be implemented on Linux.

NAME

       tabs — set terminal tabs

SYNOPSIS

       tabs [n|−a|−a2|−c|−c2|−c3|−f|−p|−s|−u] [−T type]

       tabs [−T type] n[[sep[+]n]...]

DESCRIPTION

       The  tabs  utility  shall  display  a  series  of  characters that first clears the hardware terminal tab
       settings and then initializes the tab stops at the specified positions and optionally adjusts the margin.

       The phrase ``tab-stop position N'' shall be taken to mean that, from the  start  of  a  line  of  output,
       tabbing  to position N shall cause the next character output to be in the (N+1)th column position on that
       line. The maximum number of tab stops allowed is terminal-dependent.

       It need not be possible to implement tabs on certain terminals. If the terminal type  obtained  from  the
       TERM  environment  variable  or  −T  option represents such a terminal, an appropriate diagnostic message
       shall be written to standard error and tabs shall exit with a status greater than zero.

OPTIONS

       The tabs utility shall conform to the Base Definitions volume  of  POSIX.1‐2008,  Section  12.2,  Utility
       Syntax Guidelines, except for various extensions: the options −a2, −c2, and −c3 are multi-character.

       The following options shall be supported:

       n        Specify repetitive tab stops separated by a uniform number of column positions, n, where n is a
                 single-digit decimal number. The default usage of tabs with no arguments shall be equivalent to
                 tabs −8. When −0 is used, the tab stops shall be cleared and no new ones set.

       −a        1,10,16,36,72
                 Assembler, applicable to some mainframes.

       −a2       1,10,16,40,72
                 Assembler, applicable to some mainframes.

       −c        1,8,12,16,20,55
                 COBOL, normal format.

       −c2       1,6,10,14,49
                 COBOL, compact format (columns 1 to 6 omitted).

       −c3       1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67
                 COBOL compact format (columns 1 to 6 omitted), with more tabs than −c2.

       −f        1,7,11,15,19,23
                 FORTRAN

       −p        1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61
                 PL/1

       −s        1,10,55
                 SNOBOL

       −u        1,12,20,44
                 Assembler, applicable to some mainframes.

       −T type   Indicate the type of terminal. If this option is not supplied and the TERM variable is unset or
                 null, an unspecified default terminal type shall be  used.  The  setting  of  type  shall  take
                 precedence over the value in TERM.

OPERANDS

       The following operand shall be supported:

       n[[sep[+]n]...]
                 A  single command line argument that consists of one or more tab-stop values (n) separated by a
                 separator character (sep) which is either a <comma> or a  <blank>  character.  The  application
                 shall  ensure  that  the  tab-stop  values  are positive decimal integers in strictly ascending
                 order. If any tab-stop value (except the first one) is preceded by a <plus-sign>, it  is  taken
                 as  an  increment  to be added to the previous value. For example, the tab lists 1,10,20,30 and
                 "110+10+10" are considered to be identical.

STDIN

       Not used.

INPUT FILES

       None.

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of tabs:

       LANG      Provide a default value for the internationalization variables that are unset or null. (See the
                 Base  Definitions  volume  of POSIX.1‐2008, Section 8.2, Internationalization Variables for the
                 precedence  of  internationalization  variables  used  to  determine  the  values   of   locale
                 categories.)

       LC_ALL    If  set  to a non-empty string value, override the values of all the other internationalization
                 variables.

       LC_CTYPE  Determine the locale for the interpretation of sequences of bytes of text  data  as  characters
                 (for example, single-byte as opposed to multi-byte characters in arguments).

       LC_MESSAGES
                 Determine  the  locale  that  should  be  used  to affect the format and contents of diagnostic
                 messages written to standard error.

       NLSPATH   Determine the location of message catalogs for the processing of LC_MESSAGES.

       TERM      Determine the terminal type. If this variable is unset or null, and if the  −T  option  is  not
                 specified, an unspecified default terminal type shall be used.

ASYNCHRONOUS EVENTS

       Default.

STDOUT

       If  standard output is a terminal, the appropriate sequence to clear and set the tab stops may be written
       to standard output in an unspecified format. If standard output is  not  a  terminal,  undefined  results
       occur.

STDERR

       The standard error shall be used only for diagnostic messages.

OUTPUT FILES

       None.

EXTENDED DESCRIPTION

       None.

EXIT STATUS

       The following exit values shall be returned:

        0    Successful completion.

       >0    An error occurred.

CONSEQUENCES OF ERRORS

       Default.

       The following sections are informative.

APPLICATION USAGE

       This utility makes use of the terminal's hardware tabs and the stty tabs option.

       This utility is not recommended for application use.

       Some  integrated  display  units  might  not  have  escape  sequences to set tab stops, but may be set by
       internal system calls. On these terminals, tabs works if standard output is directed to the terminal;  if
       output is directed to another file, however, tabs fails.

EXAMPLES

       None.

RATIONALE

       Consideration  was  given  to  having  the  tput  utility  handle all of the functions described in tabs.
       However, the separate tabs utility was retained because it seems more intuitive to use  a  command  named
       tabs  than  tput  with  a  new option. The tput utility does not support setting or clearing tabs, and no
       known historical version of tabs supports the capability of setting arbitrary tab stops.

       The System V tabs interface is very complex; the version in this volume of  POSIX.1‐2008  has  a  reduced
       feature  list,  but  many of the features omitted were restored as part of the XSI option even though the
       supported languages and coding styles are primarily historical.

       There was considerable sentiment for specifying only a means of resetting the tabs back to a known state—
       presumably the ``standard'' of tabs every eight positions. The following features were omitted:

        *  Setting  tab  stops  via the first line in a file, using −−file.  Since even the SVID has no complete
           explanation of this feature, it is doubtful that it is in widespread use.

       In an early proposal, a −t tablist option was added for consistency with expand; this was  later  removed
       when inconsistencies with the historical list of tabs were identified.

       Consideration  was  given  to  adding a −p option that would output the current tab settings so that they
       could be saved and then later restored. This was not accepted because  querying  the  tab  stops  of  the
       terminal is not a capability in historical terminfo or termcap facilities and might not be supported on a
       wide range of terminals.

FUTURE DIRECTIONS

       None.

SEE ALSO

       expand, stty, tput, unexpand

       The Base Definitions volume of POSIX.1‐2008, Chapter 8,  Environment  Variables,  Section  12.2,  Utility
       Syntax Guidelines

COPYRIGHT

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2013 Edition,
       Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open  Group  Base
       Specifications  Issue 7, Copyright (C) 2013 by the Institute of Electrical and Electronics Engineers, Inc
       and The Open Group.  (This is POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.) In  the  event
       of  any  discrepancy between this version and the original IEEE and The Open Group Standard, the original
       IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at
       http://www.unix.org/online.html .

       Any  typographical  or formatting errors that appear in this page are most likely to have been introduced
       during  the  conversion  of  the  source  files  to  man  page  format.  To  report  such   errors,   see
       https://www.kernel.org/doc/man-pages/reporting_bugs.html .