Linux cu command

Updated: 11/06/2021 by Computer Hope
cu command

On Unix-like operating systems, the cu command "calls up" (connect to) another Unix system.


The cu command is used to call up another system and act as a dial-in terminal. It can also do simple file transfers with no error checking.

cu takes a single argument, besides the options. If the argument is the string "dir" cu makes a direct connection to the port. This may only be used by users with write access to the port, as it permits reprogramming the modem.

Otherwise, if the argument begins with a digit, it is taken to be a phone number to call. Otherwise, it is taken to be the name of a system to call. The -z or --system option can name a system beginning with a digit, and the -c or --phone option can name a phone number that does not begin with a digit.

cu locates a port to use in the UUCP (Unix-to-Unix CoPy) configuration files. If a simple system name is given, it selects a port appropriate for that system. The -p, --port, -l, --line, -s and --speed options can control the port selection.

When a connection is made to the remote system, cu forks into two processes. One reads from the port and writes to the terminal, while the other reads from the terminal and writes to the port.

cu provides several commands that can be used during the conversation. The commands all begin with an escape character, initially ~ (tilde). The escape character is only recognized at the beginning of a line. To send an escape character to the remote system at the start of a line, it must be entered twice. All commands are either a single character or a word beginning with % (percent sign).


cu [ options ] [ system | phone | "dir"


cu recognizes the following commands:

~. Terminate the conversation.
~! command Run command in a shell. If command is empty, starts up a shell.
~$ command Run command, sending the standard output to the remote system.
~| command Run command, taking the standard input from the remote system.
~+ command Run command, taking the standard input from the remote system and sending the standard output to the remote system.
~#, ~%break Send a break signal, if possible.
~c directory,
~%cd directory
Change the local directory.
~> file Send a file to the remote system. This dumps the file over the communication line. It is assumed that the remote system is expecting it.
~< Receive a file from the remote system. This prompts for the local file name and for the remote command to execute to begin the file transfer. It continues accepting data until the contents of the eofread variable are seen.
~p from to,
~%put from to
Send a file to a remote Unix system. This runs the appropriate commands on the remote system.
~t from to,
~%take from to
Retrieve a file from a remote Unix system. This runs the appropriate commands on the remote system.
~s variable value Set a cu variable to the given value. If value is not given, the variable is set to true.
~! variable Set a cu variable to false.
~z Suspend the cu session. This is only supported on some systems. On systems where ^Z can suspend a job, ~^Z also suspends the session.
~%nostop Turn off XON/XOFF handling.
~%stop Turn on XON/XOFF handling.
~v List all the variables and their values.
~? List all commands.


cu also supports several variables. They may be listed with the ~v command, and set with the ~s or ~! commands.

escape The escape character. Initially ~ (tilde).
delay If this variable is true, cu will delay for a second after recognizing the escape character before printing the name of the local system. The default is true.
eol The list of characters that are considered to finish a line. The escape character is only recognized after one of these is seen. The default is carriage return (CR), ^U, ^C, ^O, ^D, ^S, ^Q, ^R.
binary Whether to transfer binary data when sending a file. If this is false, then newlines in the file are converted to carriage returns. The default is false.
binary-prefix A string used before sending a binary character in a file transfer, if the binary variable is true. The default is ^V.
echo-check Whether to check file transfers by examining what the remote system echoes back. The default is false.
echonl The character to look for after sending each line in a file. The default is carriage return.
timeout The timeout to use, in seconds, when looking for a character, either when doing echo checking or when looking for the echonl character. The default is 30.
kill The character to use to delete a line if the echo check fails. The default is ^U.
resend The number of times to resend a line if the echo check continues to fail. The default is 10.
eofwrite The string to write after sending a file with the ~> command. The default is ^D.
eofread The string to look for when receiving a file with the ~< command. The default is $, which is intended to be a typical shell prompt.
verbose Whether to print accumulated information during a file transfer. The default is true.


-e, --parity=even Use even parity.
-o, --parity=odd Use odd parity.
--parity=none Use no parity. No parity is also used if both -e and -o are given.
-h, --halfduplex Echo characters locally (half-duplex mode).
--nostop Turn off XON/XOFF handling (it is on by default).
-E char, --escape char Set the escape character. Initially ~ (tilde). To eliminate the escape character, use -E ''.
-z system,
--system system
The system to call.
-c phone-number,
--phone phone-number
The phone number to call.
-p port, --port port Name the port to use.
-a port Equivalent to --port port.
-l line, --line line Name the line to use by giving a device name. This can dial out on ports that are not listed in the UUCP configuration files. Write access to the device is required.
-s speed, --speed speed The speed (baud rate) to use.
-# Where # is a number, equivalent to --speed #.
-n, --prompt Prompt for the phone number to use.
-d Enter debugging mode. Equivalent to --debug all.
-x type, --debug type Turn on particular debugging types. The following types are recognized: abnormal, chat, handshake, uucp-proto, proto, port, config, spooldir, execute, incoming, outgoing. Only abnormal, chat, handshake, port, config, incoming and outgoing are meaningful for cu.

Multiple types may be given, separated by commas, and the --debug option may appear multiple times. A number may also be given, which turns on that many types from the foregoing list; for example, --debug 2 is equivalent to --debug abnormal, chat. --debug all can turn on all debugging options.
-I file, --config file Set configuration file to use. This option may not be available and depends on how cu was compiled.
-v, --version Report version information and exit.
--help Print a help message and exit.


cu -s 38400 9=12015551234

Dials a system at the phone number is (201) 555-1235. This example is also using a 9 to get out of the building and a 1 to dial long distance.

cat — Output the contents of a file.
echo — Output text.
stty — Set options for your terminal display.
uname — Print information about the current system.