xref: /freebsd/bin/stty/stty.1 (revision d34048812292b714a0bf99967270d18fe3097c62)
1.\"-
2.\" Copyright (c) 1990, 1993, 1994
3.\"	The Regents of the University of California.  All rights reserved.
4.\"
5.\" This code is derived from software contributed to Berkeley by
6.\" the Institute of Electrical and Electronics Engineers, Inc.
7.\"
8.\" Redistribution and use in source and binary forms, with or without
9.\" modification, are permitted provided that the following conditions
10.\" are met:
11.\" 1. Redistributions of source code must retain the above copyright
12.\"    notice, this list of conditions and the following disclaimer.
13.\" 2. Redistributions in binary form must reproduce the above copyright
14.\"    notice, this list of conditions and the following disclaimer in the
15.\"    documentation and/or other materials provided with the distribution.
16.\" 3. Neither the name of the University nor the names of its contributors
17.\"    may be used to endorse or promote products derived from this software
18.\"    without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\"     @(#)stty.1	8.4 (Berkeley) 4/18/94
33.\" $FreeBSD$
34.\"
35.Dd October 20, 2018
36.Dt STTY 1
37.Os
38.Sh NAME
39.Nm stty
40.Nd set the options for a terminal device interface
41.Sh SYNOPSIS
42.Nm
43.Op Fl a | e | g
44.Op Fl f Ar file
45.Op Ar arguments
46.Sh DESCRIPTION
47The
48.Nm
49utility sets or reports on terminal
50characteristics for the device that is its standard input.
51If no options or arguments are specified, it reports the settings of a subset
52of characteristics as well as additional ones if they differ from their
53default values.
54Otherwise it modifies
55the terminal state according to the specified arguments.
56Some combinations of arguments are mutually
57exclusive on some terminal types.
58.Pp
59The following options are available:
60.Bl -tag -width indent
61.It Fl a
62Display all the current settings for the terminal to standard output
63as per
64.St -p1003.2 .
65.It Fl e
66Display all the current settings for the terminal to standard output
67in the traditional
68.Bx
69``all'' and ``everything'' formats.
70.It Fl f
71Open and use the terminal named by
72.Ar file
73rather than using standard input.
74The file is opened
75using the
76.Dv O_NONBLOCK
77flag of
78.Fn open ,
79making it possible to
80set or display settings on a terminal that might otherwise
81block on the open.
82.It Fl g
83Display all the current settings for the terminal to standard output
84in a form that may be used as an argument to a subsequent invocation of
85.Nm
86to restore the current terminal state as per
87.St -p1003.2 .
88.El
89.Pp
90The following arguments are available to set the terminal
91characteristics:
92.Ss Control Modes:
93Control mode flags affect hardware characteristics associated with the
94terminal.
95This corresponds to the c_cflag in the termios structure.
96.Bl -tag -width Fl
97.It Cm parenb Pq Fl parenb
98Enable (disable) parity generation
99and detection.
100.It Cm parodd Pq Fl parodd
101Select odd (even) parity.
102.It Cm cs5 cs6 cs7 cs8
103Select character size, if possible.
104.It Ar number
105Set terminal baud rate to the
106number given, if possible.
107If the
108baud rate is set to zero, modem
109control is no longer
110asserted.
111.It Cm ispeed Ar number
112Set terminal input baud rate to the
113number given, if possible.
114If the
115input baud rate is set to zero, the
116input baud rate is set to the
117value of the output baud
118rate.
119.It Cm ospeed Ar number
120Set terminal output baud rate to
121the number given, if possible.
122If
123the output baud rate is set to
124zero, modem control is
125no longer asserted.
126.It Cm speed Ar number
127This sets both
128.Cm ispeed
129and
130.Cm ospeed
131to
132.Ar number .
133.It Cm hupcl Pq Fl hupcl
134Stop asserting modem control
135(do not stop asserting modem control) on last close.
136.It Cm hup Pq Fl hup
137Same as hupcl
138.Pq Fl hupcl .
139.It Cm cstopb Pq Fl cstopb
140Use two (one) stop bits per character.
141.It Cm cread Pq Fl cread
142Enable (disable) the receiver.
143.It Cm clocal Pq Fl clocal
144Assume a line without (with) modem
145control.
146.It Cm crtscts Pq Fl crtscts
147Enable (disable) RTS/CTS flow control.
148.El
149.Ss Input Modes:
150This corresponds to the c_iflag in the termios structure.
151.Bl -tag -width Fl
152.It Cm ignbrk Pq Fl ignbrk
153Ignore (do not ignore) break on
154input.
155.It Cm brkint Pq Fl brkint
156Signal (do not signal)
157.Dv INTR
158on
159break.
160.It Cm ignpar Pq Fl ignpar
161Ignore (do not ignore) characters with parity
162errors.
163.It Cm parmrk Pq Fl parmrk
164Mark (do not mark) characters with parity errors.
165.It Cm inpck Pq Fl inpck
166Enable (disable) input parity
167checking.
168.It Cm istrip Pq Fl istrip
169Strip (do not strip) input characters
170to seven bits.
171.It Cm inlcr Pq Fl inlcr
172Map (do not map)
173.Dv NL
174to
175.Dv CR
176on input.
177.It Cm igncr Pq Fl igncr
178Ignore (do not ignore)
179.Dv CR
180on input.
181.It Cm icrnl Pq Fl icrnl
182Map (do not map)
183.Dv CR
184to
185.Dv NL
186on input.
187.It Cm ixon Pq Fl ixon
188Enable (disable)
189.Dv START/STOP
190output
191control.
192Output from the system is
193stopped when the system receives
194.Dv STOP
195and started when the system
196receives
197.Dv START ,
198or if
199.Cm ixany
200is set, any character restarts output.
201.It Cm ixoff Pq Fl ixoff
202Request that the system send (not
203send)
204.Dv START/STOP
205characters when
206the input queue is nearly
207empty/full.
208.It Cm ixany Pq Fl ixany
209Allow any character (allow only
210.Dv START )
211to restart output.
212.It Cm imaxbel Pq Fl imaxbel
213The system imposes a limit of
214.Dv MAX_INPUT
215(currently 255) characters in the input queue.
216If
217.Cm imaxbel
218is set and the input queue limit has been reached,
219subsequent input causes the system to send an ASCII BEL
220character to the output queue (the terminal beeps at you).
221Otherwise,
222if
223.Cm imaxbel
224is unset and the input queue is full, the next input character causes
225the entire input and output queues to be discarded.
226.El
227.Ss Output Modes:
228This corresponds to the c_oflag of the termios structure.
229.Bl -tag -width Fl
230.It Cm opost Pq Fl opost
231Post-process output (do not
232post-process output; ignore all other
233output modes).
234.It Cm onlcr Pq Fl onlcr
235Map (do not map)
236.Dv NL
237to
238.Dv CR-NL
239on output.
240.It Cm ocrnl Pq Fl ocrnl
241Map (do not map)
242.Dv CR
243to
244.Dv NL
245on output.
246.It Cm tab0 tab3
247Select tab expansion policy.
248.Cm tab0
249disables tab expansion, while
250.Cm tab3
251enables it.
252.It Cm onocr Pq Fl onocr
253Do not (do) output CRs at column zero.
254.It Cm onlret Pq Fl onlret
255On the terminal NL performs (does not perform) the CR function.
256.El
257.Ss Local Modes:
258Local mode flags (lflags) affect various and sundry characteristics of terminal
259processing.
260Historically the term "local" pertained to new job control features
261implemented by Jim Kulp on a
262.Tn Pdp 11/70
263at
264.Tn IIASA .
265Later the driver ran on the first
266.Tn VAX
267at Evans Hall, UC Berkeley, where the job control details
268were greatly modified but the structure definitions and names
269remained essentially unchanged.
270The second interpretation of the 'l' in lflag
271is ``line discipline flag'' which corresponds to the
272.Ar c_lflag
273of the
274.Ar termios
275structure.
276.Bl -tag -width Fl
277.It Cm isig Pq Fl isig
278Enable (disable) the checking of
279characters against the special control
280characters
281.Dv INTR , QUIT ,
282and
283.Dv SUSP .
284.It Cm icanon Pq Fl icanon
285Enable (disable) canonical input
286.Pf ( Dv ERASE
287and
288.Dv KILL
289processing).
290.It Cm iexten Pq Fl iexten
291Enable (disable) any implementation
292defined special control characters
293not currently controlled by icanon,
294isig, or ixon.
295.It Cm echo Pq Fl echo
296Echo back (do not echo back) every
297character typed.
298.It Cm echoe Pq Fl echoe
299The
300.Dv ERASE
301character shall (shall
302not) visually erase the last character
303in the current line from the
304display, if possible.
305.It Cm echok Pq Fl echok
306Echo (do not echo)
307.Dv NL
308after
309.Dv KILL
310character.
311.It Cm echoke Pq Fl echoke
312The
313.Dv KILL
314character shall (shall
315not) visually erase the
316current line from the
317display, if possible.
318.It Cm echonl Pq Fl echonl
319Echo (do not echo)
320.Dv NL ,
321even if echo
322is disabled.
323.It Cm echoctl Pq Fl echoctl
324If
325.Cm echoctl
326is set, echo control characters as ^X.
327Otherwise control characters
328echo as themselves.
329.It Cm echoprt Pq Fl echoprt
330For printing terminals.
331If set, echo erased characters backwards within ``\\''
332and ``/''.
333Otherwise, disable this feature.
334.It Cm noflsh Pq Fl noflsh
335Disable (enable) flush after
336.Dv INTR , QUIT , SUSP .
337.It Cm tostop Pq Fl tostop
338Send (do not send)
339.Dv SIGTTOU
340for background output.
341This causes background jobs to stop if they attempt
342terminal output.
343.It Cm altwerase Pq Fl altwerase
344Use (do not use) an alternate word erase algorithm when processing
345.Dv WERASE
346characters.
347This alternate algorithm considers sequences of
348alphanumeric/underscores as words.
349It also skips the first preceding character in its classification
350(as a convenience since the one preceding character could have been
351erased with simply an
352.Dv ERASE
353character.)
354.It Cm mdmbuf Pq Fl mdmbuf
355If set, flow control output based on condition of Carrier Detect.
356Otherwise
357writes return an error if Carrier Detect is low (and Carrier is not being
358ignored with the
359.Dv CLOCAL
360flag.)
361.It Cm flusho Pq Fl flusho
362Indicates output is (is not) being discarded.
363.It Cm pendin Pq Fl pendin
364Indicates input is (is not) pending after a switch from non-canonical
365to canonical mode and will be re-input when a read becomes pending
366or more input arrives.
367.El
368.Ss Control Characters:
369.Bl -tag -width Fl
370.It Ar control-character Ar string
371Set
372.Ar control-character
373to
374.Ar string .
375If string is a single character,
376the control character is set to
377that character.
378If string is the
379two character sequence "^-" or the
380string "undef" the control character
381is disabled (i.e., set to
382.Pf { Dv _POSIX_VDISABLE Ns } . )
383.Pp
384Recognized control-characters:
385.Bd -ragged -offset indent
386.Bl -column character Subscript
387.It control- Ta \& Ta \&
388.It character Ta Subscript Ta Description
389.It _________ Ta _________ Ta _______________
390.It eof Ta Tn VEOF Ta EOF No character
391.It eol Ta Tn VEOL Ta EOL No character
392.It eol2 Ta Tn VEOL2 Ta EOL2 No character
393.It erase Ta Tn VERASE Ta ERASE No character
394.It erase2 Ta Tn VERASE2 Ta ERASE2 No character
395.It werase Ta Tn VWERASE Ta WERASE No character
396.It intr Ta Tn VINTR Ta INTR No character
397.It kill Ta Tn VKILL Ta KILL No character
398.It quit Ta Tn VQUIT Ta QUIT No character
399.It susp Ta Tn VSUSP Ta SUSP No character
400.It start Ta Tn VSTART Ta START No character
401.It stop Ta Tn VSTOP Ta STOP No character
402.It dsusp Ta Tn VDSUSP Ta DSUSP No character
403.It lnext Ta Tn VLNEXT Ta LNEXT No character
404.It reprint Ta Tn VREPRINT Ta REPRINT No character
405.It status Ta Tn VSTATUS Ta STATUS No character
406.El
407.Ed
408.It Cm min Ar number
409.It Cm time Ar number
410Set the value of min or time to
411number.
412.Dv MIN
413and
414.Dv TIME
415are used in
416Non-Canonical mode input processing
417(-icanon).
418.El
419.Ss Combination Modes:
420.Bl -tag -width Fl
421.It Ar saved settings
422Set the current terminal
423characteristics to the saved settings
424produced by the
425.Fl g
426option.
427.It Cm evenp No or Cm parity
428Enable parenb and cs7; disable
429parodd.
430.It Cm oddp
431Enable parenb, cs7, and parodd.
432.It Fl parity , evenp , oddp
433Disable parenb, and set cs8.
434.It Cm \&nl Pq Fl \&nl
435Enable (disable) icrnl.
436In addition
437-nl unsets inlcr and igncr.
438.It Cm ek
439Reset
440.Dv ERASE ,
441.Dv ERASE2 ,
442and
443.Dv KILL
444characters
445back to system defaults.
446.It Cm sane
447Resets all modes to reasonable values for interactive terminal use.
448.It Cm tty
449Set the line discipline to the standard terminal line discipline
450.Dv TTYDISC .
451.It Cm crt Pq Fl crt
452Set (disable) all modes suitable for a CRT display device.
453.It Cm kerninfo Pq Fl kerninfo
454Enable (disable) the system generated status line associated with
455processing a
456.Dv STATUS
457character (usually set to ^T).
458The status line consists of the
459system load average, the current command name, its process ID, the
460event the process is waiting on (or the status of the process), the user
461and system times, percent cpu, and current memory usage.
462.Pp
463If the
464.Xr sysctl 8
465variable
466.Va kern.tty_info_kstacks
467is set to a non-zero value, the status message also includes the kernel program
468stack of the foreground thread.
469.It Cm columns Ar number
470The terminal size is recorded as having
471.Ar number
472columns.
473.It Cm cols Ar number
474is an alias for
475.Cm columns .
476.It Cm rows Ar number
477The terminal size is recorded as having
478.Ar number
479rows.
480.It Cm dec
481Set modes suitable for users of Digital Equipment Corporation systems
482.Dv ( ERASE ,
483.Dv KILL ,
484and
485.Dv INTR
486characters are set to ^?, ^U, and ^C;
487.Dv ixany
488is disabled, and
489.Dv crt
490is enabled.)
491.It Cm extproc Pq Fl extproc
492If set, this flag indicates that some amount of terminal processing is being
493performed by either the terminal hardware or by the remote side connected
494to a pty.
495.It Cm raw Pq Fl raw
496If set, change the modes of the terminal so that no input or output processing
497is performed.
498If unset, change the modes of the terminal to some reasonable
499state that performs input and output processing.
500Note that since the
501terminal driver no longer has a single
502.Dv RAW
503bit, it is not possible to intuit what flags were set prior to setting
504.Cm raw .
505This means that unsetting
506.Cm raw
507may not put back all the setting that were previously in effect.
508To set the terminal into a raw state and then accurately restore it, the following
509shell code is recommended:
510.Bd -literal
511save_state=$(stty -g)
512stty raw
513\&...
514stty "$save_state"
515.Ed
516.It Cm size
517The size of the terminal is printed as two numbers on a single line,
518first rows, then columns.
519.El
520.Ss Compatibility Modes:
521These modes remain for compatibility with the previous version of
522the
523.Nm
524command.
525.Bl -tag -width Fl
526.It Cm all
527Reports all the terminal modes as with
528.Cm stty Fl a
529except that the control characters are printed in a columnar format.
530.It Cm everything
531Same as
532.Cm all .
533.It Cm cooked
534Same as
535.Cm sane .
536.It Cm cbreak
537If set, enables
538.Cm brkint , ixon , imaxbel , opost ,
539.Cm isig , iexten ,
540and
541.Fl icanon .
542If unset, same as
543.Cm sane .
544.It Cm new
545Same as
546.Cm tty .
547.It Cm old
548Same as
549.Cm tty .
550.It Cm newcrt Pq Fl newcrt
551Same as
552.Cm crt .
553.It Cm pass8
554The converse of
555.Cm parity .
556.It Cm tandem Pq Fl tandem
557Same as
558.Cm ixoff .
559.It Cm decctlq Pq Fl decctlq
560The converse of
561.Cm ixany .
562.It Cm crterase Pq Fl crterase
563Same as
564.Cm echoe .
565.It Cm crtbs Pq Fl crtbs
566Same as
567.Cm echoe .
568.It Cm crtkill Pq Fl crtkill
569Same as
570.Cm echoke .
571.It Cm ctlecho Pq Fl ctlecho
572Same as
573.Cm echoctl .
574.It Cm prterase Pq Fl prterase
575Same as
576.Cm echoprt .
577.It Cm litout Pq Fl litout
578The converse of
579.Cm opost .
580.It Cm oxtabs Pq Fl oxtabs
581Expand (do not expand) tabs to spaces on output.
582.It Cm tabs Pq Fl tabs
583The converse of
584.Cm oxtabs .
585.It Cm brk Ar value
586Same as the control character
587.Cm eol .
588.It Cm flush Ar value
589Same as the control character
590.Cm discard .
591.It Cm rprnt Ar value
592Same as the control character
593.Cm reprint .
594.El
595.Sh EXIT STATUS
596.Ex -std
597.Sh SEE ALSO
598.Xr resizewin 1 ,
599.Xr termios 4 ,
600.Xr pstat 8
601.Sh STANDARDS
602The
603.Nm
604utility is expected to be
605.St -p1003.2
606compatible.
607The flags
608.Fl e
609and
610.Fl f
611are
612extensions to the standard.
613.Sh HISTORY
614A
615.Nm
616command appeared in
617.At v2 .
618