install
install
The install
command in Linux is used to copy files and set attributes. It is a versatile tool that can also be used to create directories and set permissions. The command is commonly used in scripts and Makefiles to install programs and files to their destination directories.
Basic Syntax
install [OPTION]... SOURCE... DEST
SOURCE
: The file or files to be installed.DEST
: The destination directory or file.
Common Options
-d, --directory
: Treat all arguments as directories, create them if they don't exist.-m, --mode=MODE
: Set the file mode (permissions) to MODE.-o, --owner=OWNER
: Set the ownership of the installed files to OWNER.-g, --group=GROUP
: Set the group ownership of the installed files to GROUP.-p, --preserve-timestamps
: Preserve the modification times of the files.-t, --target-directory=DIRECTORY
: Specify the target directory.-s, --strip
: Strip the symbol table from installed binaries.
Examples
Basic File Installation
Install a file to a specific directory:
install file.txt /usr/local/share/
Set File Permissions
Install a file and set its permissions to
755
:install -m 755 script.sh /usr/local/bin/
Install Multiple Files
Install multiple files to a directory:
install file1.txt file2.txt /usr/local/share/
Create Directories
Create a directory and set its permissions:
install -d -m 755 /usr/local/newdir
Install with Owner and Group
Install a file and set the owner and group:
sudo install -o user -g group file.txt /usr/local/share/
Preserve Timestamps
Install a file and preserve its modification time:
install -p file.txt /usr/local/share/
Use as Part of a Build Process
Often used in Makefiles to install binaries after compilation:
install: myprogram install -m 755 myprogram /usr/local/bin/
Explanation of Options with Examples
-d, --directory
Create a directory if it does not exist:
install -d /usr/local/mydir
-m, --mode=MODE
Set the permissions to
644
for the installed file:install -m 644 config.conf /etc/myapp/
-o, --owner=OWNER
Change the owner to
john
for the installed file:sudo install -o john file.txt /usr/local/share/
-g, --group=GROUP
Change the group to
staff
for the installed file:sudo install -g staff file.txt /usr/local/share/
-p, --preserve-timestamps
Preserve the timestamps when installing a file:
install -p file.txt /usr/local/share/
-t, --target-directory=DIRECTORY
Install files to a target directory:
install -t /usr/local/share/ file1.txt file2.txt
-s, --strip
Strip the symbol table from an installed binary:
install -s myprogram /usr/local/bin/
The install
command is powerful and flexible, making it a crucial tool for system administrators and developers for managing file installations and permissions.
help
Usage: install [OPTION]... [-T] SOURCE DEST
or: install [OPTION]... SOURCE... DIRECTORY
or: install [OPTION]... -t DIRECTORY SOURCE...
or: install [OPTION]... -d DIRECTORY...
This install program copies files (often just compiled) into destination
locations you choose. If you want to download and install a ready-to-use
package on a GNU/Linux system, you should instead be using a package manager
like yum(1) or apt-get(1).
In the first three forms, copy SOURCE to DEST or multiple SOURCE(s) to
the existing DIRECTORY, while setting permission modes and owner/group.
In the 4th form, create all components of the given DIRECTORY(ies).
Mandatory arguments to long options are mandatory for short options too.
--backup[=CONTROL] make a backup of each existing destination file
-b like --backup but does not accept an argument
-c (ignored)
-C, --compare compare each pair of source and destination files, and
in some cases, do not modify the destination at all
-d, --directory treat all arguments as directory names; create all
components of the specified directories
-D create all leading components of DEST except the last,
or all components of --target-directory,
then copy SOURCE to DEST
-g, --group=GROUP set group ownership, instead of process' current group
-m, --mode=MODE set permission mode (as in chmod), instead of rwxr-xr-x
-o, --owner=OWNER set ownership (super-user only)
-p, --preserve-timestamps apply access/modification times of SOURCE files
to corresponding destination files
-s, --strip strip symbol tables
--strip-program=PROGRAM program used to strip binaries
-S, --suffix=SUFFIX override the usual backup suffix
-t, --target-directory=DIRECTORY copy all SOURCE arguments into DIRECTORY
-T, --no-target-directory treat DEST as a normal file
-v, --verbose print the name of each directory as it is created
--preserve-context preserve SELinux security context
-Z set SELinux security context of destination
file and each created directory to default type
--context[=CTX] like -Z, or if CTX is specified then set the
SELinux or SMACK security context to CTX
--help display this help and exit
--version output version information and exit
The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable. Here are the values:
none, off never make backups (even if --backup is given)
numbered, t make numbered backups
existing, nil numbered if numbered backups exist, simple otherwise
simple, never always make simple backups
Last updated