diff options
author | Marc Cornellà <marc.cornella@live.com> | 2016-10-04 01:03:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-04 01:03:16 +0200 |
commit | 81981ef248e6e05d11affd4fca40bcfb98306b0e (patch) | |
tree | bcec7f76cdd1bcf96767d9f045a021534a578a65 | |
parent | d57f36dab82b332be6fd7362c0916b226709834b (diff) | |
download | zsh-81981ef248e6e05d11affd4fca40bcfb98306b0e.tar.gz zsh-81981ef248e6e05d11affd4fca40bcfb98306b0e.tar.bz2 zsh-81981ef248e6e05d11affd4fca40bcfb98306b0e.zip |
Fix cp plugin completion and refactor (#5427)
* 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.
-rw-r--r-- | plugins/cp/README.md | 32 | ||||
-rw-r--r-- | plugins/cp/cp.plugin.zsh | 18 |
2 files changed, 36 insertions, 14 deletions
diff --git a/plugins/cp/README.md b/plugins/cp/README.md new file mode 100644 index 000000000..e8a9b6ccc --- /dev/null +++ b/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. diff --git a/plugins/cp/cp.plugin.zsh b/plugins/cp/cp.plugin.zsh index 7355a9990..fe6ea87a8 100644 --- a/plugins/cp/cp.plugin.zsh +++ b/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 |