wall(1) is a quick way to write a message to the users on a system. The basic syntax is:
% wall [file]
This will result in the contents of [file] being displayed on the terminals of all currently logged in users. If you don't specify a file, wall will read from standard input, so you can just type your message, and end with Ctrl+d.
wall doesn't have many features, and apart from letting your users know that you're about to do some serious maintenance to the system, or even reboot it, so they have time to save their work and log off :)
talk(1) allows two users to chat. It splits the screen in half, horizontally. To request a chat with another user, use this command:
% talk <person> [ttyname]
If you specify just a username, the chat request is assumed to be local, so only local users are queried. The ttyname is required if you want to ring a user on a specific terminal (if the user is logged in more than once). The required information for talk can be obtained from the w(1) command.
talk can also ring users on remote hosts. For the username you simply specify an email address. talk will try to contact that remote user on that host.
talk is somewhat limited. It only supports two users and is half-duplex.
ytalk(1) is a backwards compatible replacement for talk. It comes with Slackware as the ytalk command. The syntax is similar, but has a few differences:
% ytalk <username>[#ttyname]
The username and terminal are specified the same as under talk, except you must put them together with the hash mark (#).
ytalk offers several advantages:
It supports more than two users.
A menu of options that can be brought up anytime with Esc.
You can shell out while still in the talk session.
If you're a server administrator, you'll want to make sure that the ntalk port is enabled in /etc/inetd.conf. ytalk needs that to work properly.