oreilly.comSafari Books Online.Conferences.

Linux in a Nutshell

This directory of Linux commands is from Linux in a Nutshell, 5th Edition.

Click on any of the 687 commands below to get a description and list of available options. All links in the command summaries point to the online version of the book on Safari Bookshelf.

Buy it now, or read it online on Safari Bookshelf.


cpio flags [options]

Copy file archives from or to tape or disk, or to another location on the local machine. Each of the three flags -i, -o, or -p accepts different options.


-i, --extract [options] [patterns]

Copy in (extract) from an archive files whose names match selected patterns. Each pattern can include Bourne shell filename metacharacters. (Patterns should be quoted or escaped so that they are interpreted by cpio, not by the shell.) If pattern is omitted, all files are copied in. Existing files are not overwritten by older versions from the archive unless -u is specified.

-o, --create [options]

Copy out to an archive a list of files whose names are given on the standard input.

-p, --pass-through [options] directory

Copy (pass) files to another directory on the same system. Destination pathnames are interpreted relative to the named directory.

Comparison of valid options

Options available to the -i, -o, and -p flags are shown here (the - is omitted for clarity):

i: bcdf mnrtsuv B SVCEHMR IF o: 0a c vABL VC HM O F p: 0a d lm uv L V R


-0, --null

Expect list of filenames to be terminated with null, not newline. This allows files with a newline in their names to be included.

-a, --reset-access-time

Reset access times of input files after reading them.

-A, --append

Append files to an existing archive, which must be a disk file. Specify this archive with -O or -F.

-b, --swap

Swap bytes and half-words to convert between big-endian and little-endian 32-bit integers.


Block input or output using 5120 bytes per record (default is 512 bytes per record).


Set input or output block size to size × 512 bytes.


Read or write header information as ASCII characters; useful when source and destination machines are different types.

-C n, --io-size=n

Like -B, but block size can be any positive integer n.

-d, --make-directories

Create directories as needed.

-E file, --pattern-file=file

Extract from the archives filenames that match patterns in file.

-f, --nonmatching

Reverse the sense of copying; copy all files except those that match patterns.

-F file, --file=file

Use file as the archive, not stdin or stdout. file can reside on another machine, if given in the form user@hostname:file (where user@ is optional).


Assume that file (provided by -F, -I, or -O) is a local file, even if it contains a colon (:) indicating a remote file.

-H type, --format=type

Use type format. Default for copy-out is bin; default for copy-in is autodetection of the format. Valid formats (all caps also accepted) are:




Old (POSIX.1) portable format.


New (SVR4) portable format.


New (SVR4) portable format with checksum added.




POSIX.1 tar (also recognizes GNU tar archives).


HP-UX's binary (obsolete).


HP-UX's portable format.

-I file

Read file as an input archive. May be on a remote machine (see -F).


Ignored. For backward compatibility.

-l, --link

Link files instead of copying.

-L, --dereference

Follow symbolic links.

-m, --preserve-modification-time

Retain previous file modification time.

-M msg, --message=msg

Print msg when switching media, as a prompt before switching to new media. Use variable %d in the message as a numeric ID for the next medium. -M is valid only with -I or -O.

-n, --numeric-uid-gid

When verbosely listing contents, show user ID and group ID numerically.


Create all copied-in files relative to the current directory.


Make all copied files owned by yourself, instead of the owner of the original. Can be used only if you are a privileged user.

-O file

Archive the output to file, which may be a file on another machine (see -F).


For a CRC-format archive, verify the CRC of each file; don't actually copy the files in.


Don't print the number of blocks copied.


Rename files interactively.

-R [user] [:group] , --owner [user] [:group]

Reassign file ownership and group information to the user's login ID (privileged users only).

-s, --swap-bytes

Swap bytes of each two-byte half-word.

-S, --swap-half-words

Swap half-words of each four-byte word.


For copy-out and copy-pass, write files that have large blocks of zeros as sparse files.

-t, --list

Print a table of contents of the input (create no files). When used with the -v option, resembles output of ls -l.

-u, --unconditional

Unconditional copy; old files can overwrite new ones.

-v, --verbose

Print a list of filenames processed.

-V, --dot

Print a dot for each file read or written (this shows cpio at work without cluttering the screen).


Print version number and then exit.


Generate a list of files whose names end in .old using find; use the list as input to cpio:

find . -name "*.old" | cpio -ocBv > /dev/rst8

Restore from a tape drive all files whose names contain save (subdirectories are created if needed):

cpio -icdv "*save*" < /dev/rst8

Move a directory tree:

find . -depth | cpio -padm /mydir