.\" Copyright (c) 1989, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Jef Poskanzer and Craig Leres of the Lawrence Berkeley Laboratory.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)write.1	8.1 (Berkeley) 6/6/93
.\"
.TH WRITE 1 "March 1995" "util-linux" "User Commands"
.SH NAME
write \- send a message to another user
.SH SYNOPSIS
.B write
.I user
.RI [ ttyname ]
.SH DESCRIPTION
.B write
allows you to communicate with other users, by copying lines from
your terminal to theirs.
.PP
When you run the
.B write
command, the user you are writing to gets a message of the form:
.PP
.RS
Message from yourname@yourhost on yourtty at hh:mm ...
.RE
.PP
Any further lines you enter will be copied to the specified user's
terminal.  If the other user wants to reply, they must run
.B write
as well.
.PP
When you are done, type an end-of-file or interrupt character.  The other
user will see the message
.B EOF
indicating that the conversation is over.
.PP
You can prevent people (other than the superuser) from writing to you with
the
.BR mesg (1)
command.  Some commands, for example
.BR nroff (1)
and
.BR pr (1),
may automatically disallow writing, so that the output they produce
isn't overwritten.
.PP
If the user you want to write to is logged in on more than one terminal,
you can specify which terminal to write to by giving the terminal
name as the second operand to the
.B write
command.  Alternatively, you can let
.B write
select one of the terminals \- it will pick the one with the shortest idle
time.  This is so that if the user is logged in at work and also dialed up
from home, the message will go to the right place.
.PP
The traditional protocol for writing to someone is that the string `\-o',
either at the end of a line or on a line by itself, means that it's the
other person's turn to talk.  The string `oo' means that the person
believes the conversation to be over.
.SH "SEE ALSO"
.BR mesg (1),
.BR talk (1),
.BR who (1)
.SH HISTORY
A
.B write
command appeared in Version 6 AT&T UNIX.
.SH AVAILABILITY
The write command is part of the util-linux package and is available from
ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
