CP(1)

πŸ“¦ version 0.12.0, in arch rolling

πŸ’… CP(1) β€” the copy command, but make it fashion πŸ’…

okay so bestie, you wanna copy files? say less. this is the manual for cp, and it's literally about to eat. 🍽️✨

✨ NAME ✨

cp β€” Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY. it's giving "duplicate my files, no cap". πŸ’–

πŸ¦‹ SYNOPSIS πŸ¦‹

cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...

like, three ways to serve the same fantasy. pick your fighter. πŸ‘‘

🌸 DESCRIPTION 🌸

Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.

that's it. that's the vibe. you're copying stuff. slay. πŸ’…


πŸŽ€ OPTIONS πŸŽ€

okay this list is LONG but every single one is important, bestie. don't skip. πŸ‘‡

  • -t, --target-directory <target-directory> β€” copy all SOURCE arguments into target-directory. like, yeet everything into this one folder. 🎯
  • -T, --no-target-directory β€” Treat DEST as a regular file and not a directory. so don't be fooled by a folder name, okay? πŸ™ˆ
  • -i, --interactive β€” ask before overwriting files. consent is key, bestie. βœ‹
  • -l, --link β€” hard-link files instead of copying. no duplicate data, just link energy. πŸ”—
  • -n, --no-clobber β€” don't overwrite a file that already exists. hands off, it's taken. πŸ’β€β™€οΈ
  • -R, --recursive β€” copy directories recursively. go deep, queen. πŸ•³οΈ
  • --strip-trailing-slashes β€” remove any trailing slashes from each SOURCE argument. clean it up, we're not messy. 🧹
  • --debug β€” explain how a file is copied. Implies -v. like a little commentary track. πŸŽ™οΈ
  • -v, --verbose β€” explicitly state what is being done. no quiet copying, we need the play-by-play. πŸ“’
  • -s, --symbolic-link β€” make symbolic links instead of copying. shortcuts, but make it symbolic. πŸ”—
  • -f, --force β€” if an existing destination file cannot be opened, remove it and try again (this option is ignored when the -n option is also used). Currently not implemented for Windows. like, brute force but make it legal. πŸ’₯
  • --remove-destination β€” remove each existing destination file before attempting to open it (contrast with --force). On Windows, currently only works for writeable files. so delete first, then copy. savage. πŸ”ͺ
  • --backup[=<CONTROL>] β€” make a backup of each existing destination file. because we're responsible and also a little dramatic. πŸ’Ύ
  • -b β€” like --backup but does not accept an argument. short and sweet. 🍬
  • -S, --suffix <SUFFIX> β€” override the usual backup suffix. custom vibes only. 🎨
  • --update β€” move only when the SOURCE file is newer than the destination file or when the destination file is missing. so, "only if it's fresh". ✨

Possible values:

  • none
  • all
  • older
  • none-fail
  • -u β€” like --update but does not accept an argument. the short version, still iconic. πŸ‘‘
  • --reflink[=<WHEN>] β€” control clone/CoW copies. See below. (iykyk)

Possible values:

  • auto
  • always
  • never
  • --attributes-only β€” Don't copy the file data, just the attributes. like copying the aura but not the body. 🌈
  • --preserve[=<ATTR_LIST>...] β€” Preserve the specified attributes (default: mode, ownership (unix only), timestamps), if possible additional attributes: context, links, xattr, all. keep the whole vibe intact. πŸ’Ž

Possible values:

  • mode
  • ownership
  • timestamps
  • context
  • links
  • xattr
  • all
  • -p, --preserve-default-attributes β€” same as --preserve=mode,ownership(unix only),timestamps. the default preservation package. 🎁
  • --no-preserve[=<ATTR_LIST>...] β€” don't preserve the specified attributes. let it go, bestie. πŸ’¨

Possible values:

  • mode
  • ownership
  • timestamps
  • context
  • links
  • xattr
  • all
  • --parents β€” use full source file name under DIRECTORY. keep the whole path, no cutting corners. πŸ“
  • -P, --no-dereference β€” never follow symbolic links in SOURCE. respect the link, don't chase it. 🚫
  • -L, --dereference β€” always follow symbolic links in SOURCE. chase the link, bestie. πŸƒβ€β™€οΈ
  • -H β€” follow command-line symbolic links in SOURCE. only the ones on the command line, not all of them. πŸ€”
  • -a, --archive β€” Same as -dR --preserve=all. the full archive fantasy. πŸ—„οΈ
  • -d β€” same as --no-dereference --preserve=links. a little combo meal. πŸ”
  • -x, --one-file-system β€” stay on this file system. don't cross the border. πŸ›‘
  • --sparse <WHEN> β€” control creation of sparse files. See below. (again, see below? we love a mystery. πŸ•΅οΈβ€β™€οΈ)

Possible values:

  • never
  • auto
  • always
  • -Z β€” set SELinux security context of destination file to default type. security queen. πŸ”’
  • --context[=<CTX>] β€” like -Z, or if CTX is specified then set the SELinux or SMACK security context to CTX. context is everything. 🎭
  • -g, --progress β€” Display a progress bar. Note: this feature is not supported by GNU coreutils. we love a progress moment, but read the note. πŸ“Š
  • --copy-contents β€” NotImplemented: copy contents of special files when recursive. so it's literally not implemented. noted. 🚧
  • -h, --help β€” Print help. bestie, when in doubt, ask for help. πŸ†˜
  • -V, --version β€” Print version. know your version, slay. 🏷️
  • <paths> β€” this is just sitting here in the original manual. like, paths? idk. include it, I guess. πŸ™ˆ (no further explanation given, periodt.)

🧚 EXTRA 🧚

okay so this section is giving "the fine print" but make it cute. ✨

Do not copy a non-directory that has an existing destination with the same or newer modification timestamp; instead, silently skip the file without failing. If timestamps are being preserved, the comparison is to the source timestamp truncated to the resolutions of the destination file system and of the system calls used to update timestamps; this avoids duplicate work if several cp -pu commands are executed with the same source and destination. This option is ignored if the -n or --no-clobber option is also specified. Also, if --preserve=links is also specified (like with cp -au for example), that will take precedence; consequently, depending on the order that files are processed from the source, newer files in the destination may be replaced, to mirror hard links in the source. which gives more control over which existing files in the destination are replaced, and its value can be one of the following:

  • all: This is the default operation when an --update option is not specified, and results in all existing files in the destination being replaced. πŸ’―
  • none: This is similar to the --no-clobber option, in that no files in the destination are replaced, but also skipping a file does not induce a failure. no drama, just skip. 🚫
  • older: This is the default operation when --update is specified, and results in files being replaced if they're older than the corresponding source file. out with the old, in with the new. πŸ‘΅βž‘οΈπŸ‘Ά

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). no backup, no problem. πŸ™…β€β™€οΈ
  • numbered, t β€” make numbered backups. 1, 2, 3, slay. πŸ”’
  • existing, nil β€” numbered if numbered backups exist, simple otherwise. it depends, bestie. πŸ€·β€β™€οΈ
  • simple, never β€” always make simple backups. simple is chic. πŸŽ€

🌟 VERSION 🌟

v(uutils coreutils) 0.12.0

that's the version, no cap. πŸ’œ


and that's the whole manual, bestie! now go copy some files and serve looks. πŸ’…βœ¨

made with 🫢 by the uutils coreutils girlies β€” version v(uutils coreutils) 0.12.0, last updated 2026-09-17. mwah! πŸ’‹

πŸ“¦ where this page comes from