|
The short IRC Primer
Nicolas Pioch (Nap on IRC) Nicolas.Pioch@grasp.insa-lyon.fr>
Text conversion by:
HTML conversion & update by: Edition 1.2 - January 1997
AbstractHave you ever wanted to talk with other computer users in other parts of the world? Well guess what? You can! The program is called IRC, (Internet Relay Chat), and it is networked over much of North America, Asia Europe, and Oceania. This program is a substitute for 'talk', and many other multiple talk programs you might have read about. When you are talking on IRC, everything you type will instantly be transmitted around the world to other users that might be watching their terminals at the time. They can then type something and respond to your messages, and vice versa. I should warn you that the program can be very addictive once you begin to make friends and contacts on IRC, especially when you learn how to talk in 14 languages.Topics of discussion on IRC are varied, just like the topics of Usenet newsgroups are varied. Technical and political discussions are popular, especially when world events are in progress. IRC is also a way to expand your horizons, as people from many countries and cultures are on 24 hours a day. Most conversations are in English, but there are always channels in German, Japanese, French, Finnish, and occasionally other languages. IRC gained international fame during the late Persian Gulf War, when updates from around the world came across the wire, and most people on IRC gathered on a single channel to hear these reports.
Table of Contents
List of Tables
1. Getting Started1.1 Clients and ServersIRC (original code was written by Jarkko Oikarinen) is a multi-user, multi-channel chatting network. It allows people all over the internet to talk to one another in real-time. It is a functional replacement and improvement to 'talk'; 'talk' is an old, primitive, atrocious, minimalist sort of keyboard/screen conversation tool, using a grotesque, machine- dependent protocol (blah!). IRC does everything 'talk' does, but with better protocol, allowing more than 2 users to talk at once, with access across the aggregate Internet, and providing a whole raft of other useful features.There are two ways to enter IRC from a Unix system. If you are using the emacs (editor from Richard Stallman and the Free Software Foundation) lisp client, you just have to type "M-x irc", (if this doesn't work you may need to load the client into your emacs session). If you are using the C client, (easier for beginners), then you usually type "irc". Non-Unix boxes have special clients, each of which has to be configured using a special procedure. Check the manual or help screen for more information. If you wish to be known by a nickname which is not your login name, type "irc nickname" instead. Each IRC user, ("client"), chooses a nickname. All communication with another user is either by nickname or by the channel that they or you are on (more information about channels later on). The most important thing to remember about IRC is that you have to be willing to explore and learn to use it. Take your time, try not to get flustered, enjoy yourself, and you will soon be making new friends all over the world! IRC is based on a client-server model. Clients are programs that connect to a server, a server is a program that transports data, (messages), from a user client to another. There are clients running on many different systems, (Unix, emacs, VMS, MSDOS, VM...), that allow you to connect to an IRC server. The client which will be spoken of here is the most widespread: ircII, (originally designed by Michael Sandrof). Other clients are similar, and often accept ircII commands.
1.2 How to behave on IRCThe most widely understood and spoken language on IRC is English. However, as IRC is used in many different countries, English is by no means the only language. If you want to speak some other language than English, (for example with your friends), go to a separate channel and set the topic to indicate that. On the other hand, you should check the topic before you move to a channel to see if there are any restrictions about language. On a non-restricted channel, please speak a language everybody can understand. If you want to do otherwise, change channels and set the topic accordingly.It's not necessary to greet everybody on a channel personally. Usually one "Hello!" or equivalent is enough. And don't expect everybody to greet you back. On a channel with 20 people that would mean one screenful of hellos. It's sensible not to greet, in order not to be rude to the rest of the channel. If you must say hello to somebody you know, do it with a private message. The same applies to goodbyes. Also note that using your client facilities, (ircII "ON" command, for instance), to automatically say hello or goodbye to people is extremely poor etiquette. Nobody wants to receive auto-greets. They are not only obviously automatic, but even if you think you are polite, you are actually sounding insincere and also interfering with the personal environment of the recipient. If somebody wants to be auto-greeted on joining a channel, he will auto-greet himself. Remember, people on IRC form their opinions about you only by your actions, writings and comments, so think before you type. If you use offensive words, you'll be frowned upon. Do not "dump" to a channel or user, (send large amounts of unwanted information). This is likely to get you kicked off the channel or killed off from IRC. Dumping causes network "burps", connections going down because servers cannot handle the large amount of traffic anymore. Other prohibited actions include:
1.3 Privacy on IRCYou should always keep in mind that messages you send to someone over IRC are passed along all the servers between you and and the person you are writing to. When you're sending a letter to someone, any postman on the way could open it and read its contents.Well, it's the same on the network. Any IRC-Admin could compile their server in "debug" mode and log whatever messages are transmitted through his node, (it has already been done), so a good rule of thumb is not to trust the servers.
How to establish direct communications between clients will be explained later, (see DCC CHAT in section 2.5). This should be used when you wouldn't want anybody else on IRC to intercept your private messages.
1.4 First StepsNote: ircII, the client most people are using, has most of this information online. If you are stuck, type "/HELP" and hit
The slash is the default command character. Commands are not case
sensitive, and can be abbreviated to their first letters: "/SI" and
"/sign
Anything that does not begin with "/" is assumed to be a message to
someone and will be sent to your current channel, or to a person you are
QUERYing, (the QUERY command will be detailed later on, maybe in
section 2.2).
If you are not sure about the spelling of an ircII command, type the
prefix of that command, and press the ESCape key twice; ircII will give
you a listing of commands and aliases that start with that prefix. Don't
forget the "/" in front of the command though.
This is an example. Your screen may show more aliases, and less
commands than shown here, or less aliases and more commands - in other
words "your mileage may vary."
The ! command is used to recall previous commands in your command
history for re-execution. The ! command is unique in that when it is
used, it leaves the matching history entry in the input line for
re-editing. You can specify a history entry either by its number in the
history list, or by a match with a given wildcard expression. For
instance, "/!10" will put entry 10 in the history list into the input
line. "/!/MSG" will search the history for a line beginning with a /MSG,
(a "*" is implied at the end).
/! [<history number>|<history match>]
/HISTORY [<number>]
Almost everything happens in the upper bulk of the screen. This
includes both messages from other users, as well as the output of the
control commands. Normal messages from other users appear with the
originating nickname in <angle brackets>. Private messages arrive with
the originating nickname in *asterisks*. Messages you send to everyone
appear with a preceding "> " whereas messages you send privately to
another user appear with "-> *nickname*". Other output (invitations
from other users to join channels, and so forth), appears interspersed
with other activity on the screen.
Last ircII outputs can be recalled with:
Finally, if your screen gets garbage from a 'talk', 'write', 'wall' or
any other form of primitive communication (smirk), hit ^L to redraw it,
or CLEAR it.
/CLEAR
/NICK [<nickname>]
Everyone who wants to talk to you sees this name - also, at the
moment, nicknames are limited to 9 characters max. Your nickname will be
the same as your login name by default. You can also set an environment
variable, IRCNICK, the value of which will be used instead. Nickname
clashes are not allowed; this is enforced by the servers. If your
intended nickname clashes with someone else's as you enter IRC, you will
not be able to enter until you change it to something else.
/QUIT [<reason>]
/HELP [<command>]
/WHOIS [<nickname>]
Sometimes WHOIS won't help you much, because the person you want to
know more about just left IRC or changed nick. However, you can use
WHOWAS to get this information for a while:
/WHOWAS [<server>] [<nickname>]
Very often, an unsuccessful call to WHOIS will lead you to try WHOWAS.
That's why ircII allows you to "/SET AUTO_WHOWAS ON"; that way, a "***
<nickname>: No such nickname" message will auto-magically
generate a "/WHOWAS <nickname>". Try typing "/HELP SET
AUTO_WHOWAS" for more information on this topic.
You can use the MSG command, (usually "M" is an alias for it), to send
someone a message that only that person can read.
/MSG <nickname>|<channel> <text>
If you want to send a private message to more than one person, you can
specify a list of nicknames separated by commas, (no spaces).
Two special case nicknames are defined. If the nickname is "," (a
comma), the message is sent to the last person who sent you a MSG. If
the nickname is "." (a period), the message is sent to the last person to
whom you sent a message.
You can have a private conversation by only using /MSG. However,
typing "/MSG <nick> <text>" or "/MSG . <text>" gets
cumbersome. That's where the /QUERY command comes in handy.
/QUERY [<nickname>|<channel>]
All text you type that would normally be sent to your channel now goes
to the supplied nickname in the form of MSGs. To cancel a private
conversation, use QUERY with no arguments.
There is also another command to send messages, called NOTICE. Unlike
MSGs, NOTICEs are surrounded by '-' when printed, and no automated
responses, (such as generated by IGNORE or an automaton), will be sent in
reply. Services, (robots), on IRC often use this form of interaction.
/NOTICE <nickname>|<channel> <text>
As you begin to make new friends over IRC, you'll want to mark certain
nicknames such that you will be warned when they signon or off.
/NOTIFY [[-]<nickname>]
Eventually, you may wish some day not to see messages from a specific
user on your screen. This may happen when someone is dumping large
amounts of garbage, or if someone is harassing you. The proper response
to such a behavior is to IGNORE that person. IGNORE is a very powerful
command, and can be used in many ways. However the basic usage of this
tool is the following.
/IGNORE [<nickname>|<user@host> [[-]<message type>]]
All channels on IRC have names: a "#" sign followed by some kind of
text-string, like "#C++" or "#Asians" or "#EU-Opers". Usually, the name
of the channel will indicate the type of conversation that's going on in
there. Don't count on it, though.
Every channel has certain characteristics, called channel modes.
These will also be explained below. Remember the NAMES and LIST
commands; they will show you the names of the existing channels.
/LIST [[<flags>] <channel mask>]
/NAMES [[<flags>] <channel mask>]
To join in the conversation on a certain channel you may use the JOIN
command.
/JOIN [<channel>]
The CHANNEL command has the same effects. Note that if no parameters
are given, your current channel is displayed.
Upon entering a channel, you are given useful details about it: list
of users talking in that channel, topic... Joining a channel does not
cause you to leave your previous channel unless NOVICE is set to ON. See
"/HELP SET NOVICE".
Once in a channel, you may wish to get a detailed list of the people
IRCing inside. That's where the WHO command comes in handy:
/WHO[<channel>|<wildcard expression>]
The first field is the current channel, then nickname, status, real
name (in internet user@host form), and a small witty comment you can set
yourself with the environment variable IRCNAME, (this will be detailed in
section 2.8). Status indicates if a user is
"H"ere or "G"one, (see AWAY), if IRCop ("*"), and/or a
channel operator ("@").
It is also possible, when you are already on a channel, to ask someone
to join your channel. The command is called INVITE.
/INVITE <nickname> [<channel>]
If you receive an INVITE message, you can type "/JOIN -INVITE" to join
the channel to which you were last invited, or simply "/JOIN <channel>".
To leave a channel, just issue a LEAVE command, (PART has the same
effects):
/LEAVE <channel>
Well, you guessed it, if there is a way to invite someone on a
channel, there's also the possibility to KICK someone out of it, for
example if this person is behaving like a jerk, annoying people or
flooding the channel with unwanted information:
/KICK [<channel>] <nickname>
Channels have topics, that indicate the current topic of conversation.
You can change this topic on a channel with the TOPIC command.
/TOPIC [[<channel>] <topic for channel>]
At times, you may want to send a description of what you are doing or
how you are feeling or just anything concerning you to the current
channel or query. It is absolutely good style not to forget the period
at the end of the sentence!
/ME <action description>
The same goal can be achieved towards a specific nickname using:
(Note: The look of the result depends on each client version, and might
not be exactly the same as in the examples shown here.)
These commands make use of CTCP, a client-to-client protocol crafted to
perform specific actions, but not understood by all clients, (more about
CTCP in section 2.5). If you get an error
message, your description may not have arrived properly.
Public is the default mode for a channel. When someone is on a public
channel, he can be seen by all other users, (if his own user mode permits
this). Anyone can notice users on a public channel and join such a
conversation.
Private means that, although anyone can see members of such a channel,
you can't tell what channel they are on unless you are already on that
channel with them. They just appear as "Prv: *" in LIST or NAMES.
Since the number of potential channels is in the billions, this is quite
some security - all you give away is the acknowledgement that you're
IRCing.
If you are on a secret channel, someone who is not on the same channel
can't even see that you are there. Your name does not show up in a LIST
of active users. The only indication of your presence is that, when
entering IRC, all new users are told that there are "NNNNN users on XXX
servers". If someone checks on all users and finds less than NNNNN of
them, he knows that other people are hiding on secret channels. But a
secret channel user still cannot be found except by brute-force checking
through all channels, a hopeless proposition in the face of the huge
number of possible channel names. Security through obscurity finally
means something.
/MODE <channel>|<nickname> [[+|-]<modechars>
[<parameters>]]
A + or - sign determines whether the mode should be added or deleted.
Try typing "/HELP MODE" to get further information. Channels can be
moderated (only chanops can talk), secret, private, with a limited number
of users, anonymous, invite-only, topic-limited, with a list of banned
users.
The MODE command also allows you to modify your personal parameters,
your "user mode". You can check your usermode with the command "/MODE
<YourNick>" or sometimes "/UMODE". Note that user mode +i may be the
default on some servers, in order to protect privacy of users. This
should not be seen as a problem, since any user can change his/her
personal mode whatever defaults a server may set.
There are many other CTCP commands, and new ones are introduced all
the time. There is a mechanism for you to find out what you can use:
CTCP CLIENTINFO. To find out about your own client services, execute a
CLIENTINFO on yourself.
If you are interested in this powerful CTCP mechanism, have a look in
the various ircII help files. "/HELP CTCP" might tell you more.
However the client-to-client protocol has a very powerful feature:
Allowing two people to exchange files.
To send small text files, electronic mail is probably the best
solution, (don't rely on the user@host given by the WHOIS command to send
mail. However, ircII provides you a way to establish Direct Client
Connections ("DCC") to perform functions like sending and receiving
files.
If NickA wants to send a file to NickB, then NickA should type: "/DCC SEND
NickB filename". On NickB's screen will appear: "*** DCC SEND (filename)
request received from NickA". If he, (NickB), wants to get the file, he
just needs to type: "/DCC GET NickA filename"
Here's a quick overview of the subject:
/DCC SEND <nickname> <filename>
/DCC GET <nickname> <filename>
/DCC CLOSE <type> <nickname> [<arguments>]
/DCC LIST
More details can be found in ircII online help: try "/HELP DCC"
for more information.
If someone asks you to send him a file,
DCC also allows two clients to establish a direct client connection for
chat. This is a secure form of communication, since messages are not
sent through the IRC network.
/DCC CHAT
Each time you are prompted for a server name, remember you can supply
the nickname of someone being connected on that server instead. This may
be useful at times.
/ADMIN [<server>]
/LINKS [[<server>] <wildcard expression>]
/SERVER [<server>|<server number> [<port number>]]
Occasionally, you can switch servers faster than the IRC network can
send out the information that you have left your previous server. So
don't be surprised if you are told your nickname is already in use...
Just wait a moment and set it with /NICK again.
/MOTD [<server>]
/USERS [<server>]
/DATE [<server>]
/TRACE [<server>]
/STATS c|i|k|l|m|u|y [<server>]
/INFO [<server>]
/VERSION
Because ircII is not a simple client program, but an Operating System,
its programming language is just as simple as you could expect (it's
horrendous), but if you want to get into it, here's a little note for
you.
There are a few Unix environment variables you can set in your shell
configuration file, but you need to find out your shell name before that.
"echo $SHELL" should give you a hint.
The command character, (usually "/"), is only necessary when you type
commands interactively. When you program things it is no longer needed
although it used to be.
If you want to type to the channel from within an ALIAS or on BINDing,
you have to use SAY or SEND.
The ";" has a special meaning in ALIASes, BINDings and ONs: it's
treated as command separator, that means you can execute multiple
commands in a row separated by semicolons. The semicolons are not
considered separators when you use them interactively, (to be able to
type ";-)"), and within an ircII script file. You can escape the meaning
of ";" in an ALIAS with "\;".
When you use ircII on a (semi)regular basis, you will discover that
every time you start the program you will issue the same initialization
sequence. If that is the case, I have good news for you: you don't have
to do that anymore! ircII will, at startup, load a file called ".ircrc",
(full path: $HOME/.ircrc). It will treat each line in that file as if
you typed it manually.
For example, if the content of your .ircrc file is:
Advanced commands may come in handy if you need them. Feel free to
browse in ircII online help to find out more about them. A few of them
are probably worth learning.
However, you should know that setting up an automaton using ircII ON
facilities is quick and dirty, and should be reserved for robots that
rely on ircII specific features such as DCC (file servers for instance).
Writing a program in C, perl or any decent programming language should
take longer in the beginning, but your efforts will be rewarded. You can
download skeletons of such programs on some ftp sites that keep IRC
related stuff (check in the Frequently Asked Questions part).
Although most robots-writers believe they have created a "smart
thing", 99% of the robots online happen to be a nuisance to the IRC
community, because a few simple rules were not respected by their owners.
The main idea is that robots should neither be seen nor heard:
And this will get boring very soon, so don't be surprised if such
robots get banned from most channels. A good kludge is to wait until
someone asks explicitly the robot to be opped on a channel. This could
be:
If you don't respect rules 2 and 6 above, this may happen too:
See? Remember the golden rule:
For Unix machines, you either compile the source yourself, or have
someone else on your machine compile the source for you. The current
"official" ircII release is version 2.2.1. That means that it is said to
be quite bugfree (Hehe, you never know...) In addition to this "official"
distribution, you may find preversions of the client to come floating
around, for people who like to track down bugs and taste things to come.
However, you should be aware of that those clients are being worked on,
and may not have all features working properly.
Here are the commands to type to setup an ircII client:
You now have to go into ircII2.2.1 and read the files explaining how
to achieve a successful installation. Have a look at README and INSTALL,
edit config.h to define DEFAULT_SERVER, edit Makefile to define
INSTALL_EXECUTABLE, IRCII_LIBRARY and the C compiler you will be using,
then type make install and wait.
If you can't set up a client on any local machine, you can still use
any telnet client:
Please only use telnet when you have no other way of reaching IRC, as
this resource is quite limited.
This is by no means, a comprehensive list, but merely a start.
Connect to the closest of these servers and join the channel
#Twilight_Zone or, if you are in Europe, #EU-Opers. When you are there,
immediately ask what you want. Don't say "I have a question" because
then everyone will ignore you until you say it a few times, and then
they'll jump down your throat and rip your lungs out. No one knows if he
can answer your question until you ask it.
Many IRC Operators are in #Twilight_Zone, while European Operators
congregate in #EU-Opers. So if you join an Operator channel and don't
hear much talking, don't worry; it's not because you joined. Operators
don't talk much on such channels anyways!
In some cases keys are already bound to something. For instance, ^B
is normally bound to BACKWARD_CHARACTER, so you will need to define a
"quote-character" key: just enter "/BIND ^W QUOTE_CHARACTER" then "/BIND
^W^B SELF_INSERT" and it may work.
In addition to that, Japanese IRC'ers use a special ANSI escape
control sequences to transmit their Kanji alphabet. This may also look
funny if you get some of it. Here's a sample: [$B$?$K$7[$B;$m$K#
(nice, uh?)
Only a NickServ operator can change your NickServ password. To find
out which NickServ operators are on-line, send:
Note: As of this writing, NickServ is down and it is uncertain when or if it
will return.
If it's a matter of personal harassment, then you should set a proper IGNOREon that person, (preferably on his
userid@hostname). Remember you can use wildcard expressions for IGNORE.
Locate the line about your lost IRC session, (irc should appear in the
COMMAND field of the line), and its PID, (process number, second field of
the line here). In this example the PID is 25634, as shown here:
All you then need to type is "kill -KILL" or "kill -9" immediatly
followed by the PID found above: "kill -kill 25634" here.
You can get more details about the commands involved here in the
standard unix manual, ("man 1 ps" or "man 1 kill").
If your machine crashed, and your nick is still in use on the IRC
network, you'll have to wait 4 to 5 minutes for your server to recognize
the fact. Getting an Operator to kill the ghost is almost never
necessary, just sign on as another nickname and wait for the "Ping
timeout" or "Bad link" message, then you can change your nick back.
If you op someone on a channel, you take the consequences. If someone
joins #Whatever, you op them, then they kick everyone and lock the
channel with some "Mode change +ib *!*@*", then suffer it: it's your
fault, don't go whining to an IRC-op to fix it. If a channel is locked,
you should start a new one.
Effective methods to deal with obnoxious people are IGNORE, KICK and
various MODEs on channels, such as +i and/or +b.
If you have been unjustifiably killed by an IRC-Operator abusing his
power to gain illegal channel-operator status for instance, yell! Mail a
log to his server IRC-Administrator, (see ADMIN), join #Twilight_Zone or
#EU-Opers for European-related problems, and explain what happened.
You can also join various IRC related mailing lists. "Operlist"
discusses current (and past) server code, routing and protocol. Mail
operlist-request@eff.org to join. Another mailing list,
ircd-three@eff.org exists to discuss protocol revisions for the 3.0
release of ircd, currently in planning. Mail ircd-three-request@eff.org
to be added to that. There is also low-traffic mailing-lists for ircII
vmsirc and irchat clients.
The primer is available in 3 formats:
Here's how to get the latest primer postscript version for example:
This manual is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
You should have received a copy of the GNU General Public License
along with this manual; if not, write to the:
It's impossible to give here a full list, however special thanx are
due to (in analphabetical order):
Feel free to bug me with your comments, I hope I'll have enough time
to reply.
|
![]()
|