The talk utility is a two-way, screen-oriented communication program.
When first invoked, talk sends a message similar to:
Message from TalkDaemon@ her_machine at time . . . talk: connection requested by your_address talk: respond with: talk your_address
to the specified address. At this point, the recipient of the message can reply by typing:
Once communication is established, the two parties can type simultaneously, with their output displayed in separate regions of the screen. Characters are processed as follows:
Typing the alert character will alert the recipient's terminal.
Typing Control-L will cause the sender's screen regions to be refreshed.
Typing the erase and kill characters will affect the sender's terminal in the manner described by the termios(3C) interface.
Typing the interrupt or end-of-file (
EOF) characters will terminate the local talk utility. Once the talk session has been terminated on one side, the other side of the talk session will be notified that the talk session has been terminated and will be able to do nothing except exit.
Typing characters from LC_CTYPE classifications print or space will cause those characters to be sent to the recipient's terminal.
When and only when the stty iexten local mode is enabled, additional special control characters and multi-byte or single-byte characters are processed as printable characters if their wide character equivalents are printable.
Typing other non-printable characters will cause them to be written to the recipient's terminal as follows: control characters will appear as a caret ( ‸ ) followed by the appropriate ASCII character, and characters with the high-order bit set will appear in “meta” notation. For example, `\003' is displayed as `‸C' and `\372' as `M-z'.
Permission to be a recipient of a talk message can be denied or granted by use of the mesg(1) utility. However, a user's privilege may further constrain the domain of accessibility of other users' terminals. Certain commands, such as pr(1), disallow messages in order to prevent interference with their output. talk will fail when the user lacks the appropriate privileges to perform the requested action.
Certain block-mode terminals do not have all the capabilities necessary to support the simultaneous exchange of messages required for talk. When this type of exchange cannot be supported on such terminals, the implementation may support an exchange with reduced levels of simultaneous interaction or it may report an error describing the terminal-related deficiency.
The following operands are supported:
The recipient of the talk session. One form of address is the username, as returned by the who(1) utility. If you wish to talk to someone on your own machine, then username is just the person's login name. If you wish to talk to a user on another host, then username is one of the following forms:
host!user host.user host:user user@host
although user@host is perhaps preferred.
If the recipient is logged in more than once, terminal can be used to indicate the appropriate terminal name. If terminal is not specified, the talk message will be displayed on one or more accessible terminals in use by the recipient. The format of terminal will be the same as that returned by who.
See environ(5) for descriptions of the following environment variables that affect the execution of talk: LANG, LC_ALL, LC_CTYPE, LC_MESSAGES, and NLSPATH.
Determine the name of the invoker's terminal type. If this variable is unset or null, an unspecified terminal type will be used.
The following exit values are returned:
An error occurred, or talk was invoked on a terminal incapable of supporting it.
See attributes(5) for descriptions of the following attributes:
|ATTRIBUTE TYPE||ATTRIBUTE VALUE|
Typing Control-L redraws the screen, while the erase, kill, and word kill characters will work in talk as normal. To exit, type an interrupt character. talk then moves the cursor to the bottom of the screen and restores the terminal to its previous state.