1
0
Fork 0
mirror of https://github.com/notwa/rc synced 2024-11-14 09:59:03 -08:00
rc/sh/bak

34 lines
875 B
Text
Raw Normal View History

2021-07-29 00:37:35 -07:00
#!/usr/bin/env sh
# YES_ZSH
# YES_BASH
# YES_DASH
2021-09-23 06:48:05 -07:00
# YES_ASH
2021-07-29 00:37:35 -07:00
bak() { ### @-
2021-08-01 09:27:25 -07:00
### backup files by creating copies and appending ".bak" to their names.
2021-08-01 07:58:21 -07:00
### this calls itself recursively to avoid clobbering existing backups.
###
### ```
2021-08-01 08:03:41 -07:00
### $ touch -d '2001-12-25 16:30:00' butts
### $ bak butts
### $ touch butts
### $ bak butts
### $ ls -l
2021-08-01 07:58:21 -07:00
### total 0
2021-08-01 08:03:41 -07:00
### -rw-r--r-- 1 notwa None 0 Aug 1 08:02 butts
### -rw-r--r-- 1 notwa None 0 Aug 1 08:02 butts.bak
2021-08-01 07:58:21 -07:00
### -rw-r--r-- 1 notwa None 0 Dec 25 2001 butts.bak.bak
### ```
2021-07-29 00:37:35 -07:00
[ $# -gt 0 ] || { printf "%s\n" "$0: too few arguments" >&2; return 1; }
local ret=0 f=
2021-07-29 00:37:35 -07:00
for f; do
if [ -e "$f.bak" ]; then
2021-08-01 08:03:41 -07:00
bak "$f.bak" || { ret=1; continue; }
2021-07-29 00:37:35 -07:00
fi
cp -p "$f" "$f.bak" || ret=1
2021-07-29 00:37:35 -07:00
done
return $ret
}
[ -n "${preload+-}" ] || bak "$@"