xref: /freebsd/bin/stty/stty.1 (revision 058ac3e8063366dafa634d9107642e12b038bf09)
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 September 27, 2022
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.It Cm rtsdtr Pq Fl rtsdtr
149Enable (disable) asserting RTS/DTR on open.
150.El
151.Ss Input Modes:
152This corresponds to the c_iflag in the termios structure.
153.Bl -tag -width Fl
154.It Cm ignbrk Pq Fl ignbrk
155Ignore (do not ignore) break on
156input.
157.It Cm brkint Pq Fl brkint
158Signal (do not signal)
159.Dv INTR
160on
161break.
162.It Cm ignpar Pq Fl ignpar
163Ignore (do not ignore) characters with parity
164errors.
165.It Cm parmrk Pq Fl parmrk
166Mark (do not mark) characters with parity errors.
167.It Cm inpck Pq Fl inpck
168Enable (disable) input parity
169checking.
170.It Cm istrip Pq Fl istrip
171Strip (do not strip) input characters
172to seven bits.
173.It Cm inlcr Pq Fl inlcr
174Map (do not map)
175.Dv NL
176to
177.Dv CR
178on input.
179.It Cm igncr Pq Fl igncr
180Ignore (do not ignore)
181.Dv CR
182on input.
183.It Cm icrnl Pq Fl icrnl
184Map (do not map)
185.Dv CR
186to
187.Dv NL
188on input.
189.It Cm ixon Pq Fl ixon
190Enable (disable)
191.Dv START/STOP
192output
193control.
194Output from the system is
195stopped when the system receives
196.Dv STOP
197and started when the system
198receives
199.Dv START ,
200or if
201.Cm ixany
202is set, any character restarts output.
203.It Cm ixoff Pq Fl ixoff
204Request that the system send (not
205send)
206.Dv START/STOP
207characters when
208the input queue is nearly
209empty/full.
210.It Cm ixany Pq Fl ixany
211Allow any character (allow only
212.Dv START )
213to restart output.
214.It Cm imaxbel Pq Fl imaxbel
215The system imposes a limit of
216.Dv MAX_INPUT
217(currently 255) characters in the input queue.
218If
219.Cm imaxbel
220is set and the input queue limit has been reached,
221subsequent input causes the system to send an ASCII BEL
222character to the output queue (the terminal beeps at you).
223Otherwise,
224if
225.Cm imaxbel
226is unset and the input queue is full, the next input character causes
227the entire input and output queues to be discarded.
228.El
229.Ss Output Modes:
230This corresponds to the c_oflag of the termios structure.
231.Bl -tag -width Fl
232.It Cm opost Pq Fl opost
233Post-process output (do not
234post-process output; ignore all other
235output modes).
236.It Cm onlcr Pq Fl onlcr
237Map (do not map)
238.Dv NL
239to
240.Dv CR-NL
241on output.
242.It Cm ocrnl Pq Fl ocrnl
243Map (do not map)
244.Dv CR
245to
246.Dv NL
247on output.
248.It Cm tab0 tab3
249Select tab expansion policy.
250.Cm tab0
251disables tab expansion, while
252.Cm tab3
253enables it.
254.It Cm onocr Pq Fl onocr
255Do not (do) output CRs at column zero.
256.It Cm onlret Pq Fl onlret
257On the terminal NL performs (does not perform) the CR function.
258.El
259.Ss Local Modes:
260Local mode flags (lflags) affect various and sundry characteristics of terminal
261processing.
262Historically the term "local" pertained to new job control features
263implemented by Jim Kulp on a
264.Tn Pdp 11/70
265at
266.Tn IIASA .
267Later the driver ran on the first
268.Tn VAX
269at Evans Hall, UC Berkeley, where the job control details
270were greatly modified but the structure definitions and names
271remained essentially unchanged.
272The second interpretation of the 'l' in lflag
273is ``line discipline flag'' which corresponds to the
274.Ar c_lflag
275of the
276.Ar termios
277structure.
278.Bl -tag -width Fl
279.It Cm isig Pq Fl isig
280Enable (disable) the checking of
281characters against the special control
282characters
283.Dv INTR , QUIT ,
284and
285.Dv SUSP .
286.It Cm icanon Pq Fl icanon
287Enable (disable) canonical input
288.Pf ( Dv ERASE
289and
290.Dv KILL
291processing).
292.It Cm iexten Pq Fl iexten
293Enable (disable) any implementation
294defined special control characters
295not currently controlled by icanon,
296isig, or ixon.
297.It Cm echo Pq Fl echo
298Echo back (do not echo back) every
299character typed.
300.It Cm echoe Pq Fl echoe
301The
302.Dv ERASE
303character shall (shall
304not) visually erase the last character
305in the current line from the
306display, if possible.
307.It Cm echok Pq Fl echok
308Echo (do not echo)
309.Dv NL
310after
311.Dv KILL
312character.
313.It Cm echoke Pq Fl echoke
314The
315.Dv KILL
316character shall (shall
317not) visually erase the
318current line from the
319display, if possible.
320.It Cm echonl Pq Fl echonl
321Echo (do not echo)
322.Dv NL ,
323even if echo
324is disabled.
325.It Cm echoctl Pq Fl echoctl
326If
327.Cm echoctl
328is set, echo control characters as ^X.
329Otherwise control characters
330echo as themselves.
331.It Cm echoprt Pq Fl echoprt
332For printing terminals.
333If set, echo erased characters backwards within ``\\''
334and ``/''.
335Otherwise, disable this feature.
336.It Cm noflsh Pq Fl noflsh
337Disable (enable) flush after
338.Dv INTR , QUIT , SUSP .
339.It Cm tostop Pq Fl tostop
340Send (do not send)
341.Dv SIGTTOU
342for background output.
343This causes background jobs to stop if they attempt
344terminal output.
345.It Cm altwerase Pq Fl altwerase
346Use (do not use) an alternate word erase algorithm when processing
347.Dv WERASE
348characters.
349This alternate algorithm considers sequences of
350alphanumeric/underscores as words.
351It also skips the first preceding character in its classification
352(as a convenience since the one preceding character could have been
353erased with simply an
354.Dv ERASE
355character.)
356.It Cm mdmbuf Pq Fl mdmbuf
357If set, flow control output based on condition of Carrier Detect.
358Otherwise
359writes return an error if Carrier Detect is low (and Carrier is not being
360ignored with the
361.Dv CLOCAL
362flag.)
363.It Cm flusho Pq Fl flusho
364Indicates output is (is not) being discarded.
365.It Cm pendin Pq Fl pendin
366Indicates input is (is not) pending after a switch from non-canonical
367to canonical mode and will be re-input when a read becomes pending
368or more input arrives.
369.El
370.Ss Control Characters:
371.Bl -tag -width Fl
372.It Ar control-character Ar string
373Set
374.Ar control-character
375to
376.Ar string .
377If string is a single character,
378the control character is set to
379that character.
380If string is the
381two character sequence "^-" or the
382string "undef" the control character
383is disabled (i.e., set to
384.Pf { Dv _POSIX_VDISABLE Ns } . )
385.Pp
386Recognized control-characters:
387.Bd -ragged -offset indent
388.Bl -column character Subscript
389.It control- Ta \& Ta \&
390.It character Ta Subscript Ta Description
391.It _________ Ta _________ Ta _______________
392.It eof Ta Tn VEOF Ta EOF No character
393.It eol Ta Tn VEOL Ta EOL No character
394.It eol2 Ta Tn VEOL2 Ta EOL2 No character
395.It erase Ta Tn VERASE Ta ERASE No character
396.It erase2 Ta Tn VERASE2 Ta ERASE2 No character
397.It werase Ta Tn VWERASE Ta WERASE No character
398.It intr Ta Tn VINTR Ta INTR No character
399.It kill Ta Tn VKILL Ta KILL No character
400.It quit Ta Tn VQUIT Ta QUIT No character
401.It susp Ta Tn VSUSP Ta SUSP No character
402.It start Ta Tn VSTART Ta START No character
403.It stop Ta Tn VSTOP Ta STOP No character
404.It dsusp Ta Tn VDSUSP Ta DSUSP No character
405.It lnext Ta Tn VLNEXT Ta LNEXT No character
406.It reprint Ta Tn VREPRINT Ta REPRINT No character
407.It status Ta Tn VSTATUS Ta STATUS No character
408.El
409.Ed
410.It Cm min Ar number
411.It Cm time Ar number
412Set the value of min or time to
413number.
414.Dv MIN
415and
416.Dv TIME
417are used in
418Non-Canonical mode input processing
419(-icanon).
420.El
421.Ss Combination Modes:
422.Bl -tag -width Fl
423.It Ar saved settings
424Set the current terminal
425characteristics to the saved settings
426produced by the
427.Fl g
428option.
429.It Cm evenp No or Cm parity
430Enable parenb and cs7; disable
431parodd.
432.It Cm oddp
433Enable parenb, cs7, and parodd.
434.It Fl parity , evenp , oddp
435Disable parenb, and set cs8.
436.It Cm \&nl Pq Fl \&nl
437Enable (disable) icrnl.
438In addition
439-nl unsets inlcr and igncr.
440.It Cm ek
441Reset
442.Dv ERASE ,
443.Dv ERASE2 ,
444and
445.Dv KILL
446characters
447back to system defaults.
448.It Cm sane
449Resets all modes to reasonable values for interactive terminal use.
450.It Cm tty
451Set the line discipline to the standard terminal line discipline
452.Dv TTYDISC .
453.It Cm crt Pq Fl crt
454Set (disable) all modes suitable for a CRT display device.
455.It Cm kerninfo Pq Fl kerninfo
456Enable (disable) the system generated status line associated with
457processing a
458.Dv STATUS
459character (usually set to ^T).
460The status line consists of the
461system load average, the current command name, its process ID, the
462event the process is waiting on (or the status of the process), the user
463and system times, percent cpu, and current memory usage.
464.Pp
465If the
466.Xr sysctl 8
467variable
468.Va kern.tty_info_kstacks
469is set to a non-zero value, the status message also includes the kernel program
470stack of the foreground thread.
471.It Cm columns Ar number
472The terminal size is recorded as having
473.Ar number
474columns.
475.It Cm cols Ar number
476is an alias for
477.Cm columns .
478.It Cm rows Ar number
479The terminal size is recorded as having
480.Ar number
481rows.
482.It Cm dec
483Set modes suitable for users of Digital Equipment Corporation systems
484.Dv ( ERASE ,
485.Dv KILL ,
486and
487.Dv INTR
488characters are set to ^?, ^U, and ^C;
489.Dv ixany
490is disabled, and
491.Dv crt
492is enabled.)
493.It Cm extproc Pq Fl extproc
494If set, this flag indicates that some amount of terminal processing is being
495performed by either the terminal hardware or by the remote side connected
496to a pty.
497.It Cm raw Pq Fl raw
498If set, change the modes of the terminal so that no input or output processing
499is performed.
500If unset, change the modes of the terminal to some reasonable
501state that performs input and output processing.
502Note that since the
503terminal driver no longer has a single
504.Dv RAW
505bit, it is not possible to intuit what flags were set prior to setting
506.Cm raw .
507This means that unsetting
508.Cm raw
509may not put back all the setting that were previously in effect.
510To set the terminal into a raw state and then accurately restore it, the following
511shell code is recommended:
512.Bd -literal
513save_state=$(stty -g)
514stty raw
515\&...
516stty "$save_state"
517.Ed
518.It Cm size
519The size of the terminal is printed as two numbers on a single line,
520first rows, then columns.
521.El
522.Ss Compatibility Modes:
523These modes remain for compatibility with the previous version of
524the
525.Nm
526command.
527.Bl -tag -width Fl
528.It Cm all
529Reports all the terminal modes as with
530.Cm stty Fl a
531except that the control characters are printed in a columnar format.
532.It Cm everything
533Same as
534.Cm all .
535.It Cm cooked
536Same as
537.Cm sane .
538.It Cm cbreak
539If set, enables
540.Cm brkint , ixon , imaxbel , opost ,
541.Cm isig , iexten ,
542and
543.Fl icanon .
544If unset, same as
545.Cm sane .
546.It Cm new
547Same as
548.Cm tty .
549.It Cm old
550Same as
551.Cm tty .
552.It Cm newcrt Pq Fl newcrt
553Same as
554.Cm crt .
555.It Cm pass8
556The converse of
557.Cm parity .
558.It Cm tandem Pq Fl tandem
559Same as
560.Cm ixoff .
561.It Cm decctlq Pq Fl decctlq
562The converse of
563.Cm ixany .
564.It Cm crterase Pq Fl crterase
565Same as
566.Cm echoe .
567.It Cm crtbs Pq Fl crtbs
568Same as
569.Cm echoe .
570.It Cm crtkill Pq Fl crtkill
571Same as
572.Cm echoke .
573.It Cm ctlecho Pq Fl ctlecho
574Same as
575.Cm echoctl .
576.It Cm prterase Pq Fl prterase
577Same as
578.Cm echoprt .
579.It Cm litout Pq Fl litout
580The converse of
581.Cm opost .
582.It Cm oxtabs Pq Fl oxtabs
583Expand (do not expand) tabs to spaces on output.
584.It Cm tabs Pq Fl tabs
585The converse of
586.Cm oxtabs .
587.It Cm brk Ar value
588Same as the control character
589.Cm eol .
590.It Cm flush Ar value
591Same as the control character
592.Cm discard .
593.It Cm rprnt Ar value
594Same as the control character
595.Cm reprint .
596.El
597.Sh INTERACTION WITH JOB CONTROL
598Modifications to the terminal settings are treated by job control
599(see
600.Xr termios 4 )
601same as writes.
602When the
603.Nm
604utility is executing in a background process group,
605such attempts result in the kernel sending the
606.Dv SIGTTOU
607signal and stopping the process until its group is returned
608to foreground.
609The non-blocking open of the terminal device with the
610.Fl f
611option to
612.Nm
613does not affect the behavior.
614If it is desirable to modify the settings from the background,
615.Xr sh 1
616users might utilize the following idiom:
617.Bd -literal
618(trap '' TTOU; stty -f /dev/tty sane)
619.Ed
620.Pp
621Note that changing terminal settings for a running foreground
622job that is not prepared for it might cause inconsistencies.
623.Sh EXIT STATUS
624.Ex -std
625.Sh SEE ALSO
626.Xr resizewin 1 ,
627.Xr termios 4 ,
628.Xr pstat 8
629.Sh STANDARDS
630The
631.Nm
632utility is expected to be
633.St -p1003.2
634compatible.
635The flags
636.Fl e
637and
638.Fl f
639are
640extensions to the standard.
641.Sh HISTORY
642A
643.Nm
644command appeared in
645.At v2 .
646