Skip to content

Commit

Permalink
Fix cp plugin completion and refactor (#5427)
Browse files Browse the repository at this point in the history
* cp plugin: change cpv to function so that completion works

* cp plugin: show numbers in units of 1024 (K,M,G,T)

Use `-h` level (3): output numbers in units of 1024.
See the manpage of rsync for more information.

* cp plugin: add a README file

* cp plugin: recurse directories

* cp plugin: remove `--` to separate files from options

This has some undesired effects, like having `cpv --help` be a file
not found error.

Use `--` yourself if you need it (which you generally don't):

```zsh
cpv -- -some-file-with-hyphens.txt /tmp
```

Added this same info to the README.
  • Loading branch information
mcornella committed Oct 3, 2016
1 parent d57f36d commit 81981ef
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 14 deletions.
32 changes: 32 additions & 0 deletions plugins/cp/README.md
@@ -0,0 +1,32 @@
# cp plugin

This plugin defines a `cpv` function that uses `rsync` so that you
get the features and security of this command.

To enable, add `cp` to your `plugins` array in your zshrc file:

```zsh
plugins=(... cp)
```

## Description

The enabled options for rsync are:

- `-p`: preserves permissions.

- `-o`: preserves owner.

* `-g`: preserves group.

* `-b`: make a backup of the original file instead of overwriting it, if it exists.

* `-r`: recurse directories.

* `-hhh`: outputs numbers in human-readable format, in units of 1024 (K, M, G, T).

* `--backup-dir=/tmp/rsync`: move backup copies to "/tmp/rsync".

* `-e /dev/null`: only work on local files (disable remote shells).

* `--progress`: display progress.
18 changes: 4 additions & 14 deletions plugins/cp/cp.plugin.zsh
@@ -1,14 +1,4 @@
#Show progress while file is copying

# Rsync options are:
# -p - preserve permissions
# -o - preserve owner
# -g - preserve group
# -h - output in human-readable format
# --progress - display progress
# -b - instead of just overwriting an existing file, save the original
# --backup-dir=/tmp/rsync - move backup copies to "/tmp/rsync"
# -e /dev/null - only work on local files
# -- - everything after this is an argument, even if it looks like an option

alias cpv="rsync -poghb --backup-dir=/tmp/rsync -e /dev/null --progress --"
cpv() {
rsync -pogbr -hhh --backup-dir=/tmp/rsync -e /dev/null --progress "$@"
}
compdef _files cpv

0 comments on commit 81981ef

Please sign in to comment.