| | NAME |
---|
| | ---- |
---|
| | |
---|
| | **trm** - A Safer Delete Utility |
---|
| | |
---|
| | |
---|
| | SYNOPSIS |
---|
| | -------- |
---|
| | |
---|
| | ``trm.sh -cehistvx -g graveyard [file|dir] ...`` |
---|
| | |
---|
| | |
---|
| | DESCRIPTION |
---|
| | ----------- |
---|
| | |
---|
| | ``trm`` is a file- and directory removal tool with several key features: |
---|
| | |
---|
| | - Files are not actually removed, but put in a "graveyard" where |
---|
| | they can later be retrieved. By default, this is in |
---|
| | ``~/.graveyard``, but this can be overriden on the command line |
---|
| | with the ``-g`` option. |
---|
| | |
---|
| | - There is a "test mode" which doesn't actually do anything, but |
---|
| | only shows you what the program *would do* if it actually executed, |
---|
| | |
---|
| | - Deleted items are stored in the graveyard in the same directory hierarchy |
---|
| | they were originally in. |
---|
| | |
---|
| | - By default, deleted items have a datetime stamp or "serial number" |
---|
| | appended to them. This allows the graveyard to accumulate different |
---|
| | versions of a file- or directory tree as they are deleted over time. |
---|
| | |
---|
| | - ``trm`` can also be use to simply copy a set of files- and/or directories |
---|
| | into the graveyard, without actually removing them from their original |
---|
| | location. This is handy if you want to take advantage of the serial |
---|
| | number capability and keep versioned "deletions" around, but not actually |
---|
| | remove the original files- or directories. |
---|
| | |
---|
| | - Delete or copies can be invoked interactively so you can select |
---|
| | which of the targets you actually want affected. |
---|
| | |
---|
| | - You can either run the program as a standalone utility - via the |
---|
| | ``trm.sh`` program - Or, you can source it - ``. trm,sh``. This |
---|
| | loads the ``trm`` shell function into the current shell context for |
---|
| | subsequent use from the command line or another program. |
---|
| | |
---|
| | - You can put commonly used command line options in the ``$TRM`` environment |
---|
| | variable. For instance, you may want to default to test mode operation by |
---|
| | doing something like ``export TRM="-t"``. |
---|
| | |
---|
| | |
---|
| | OPTIONS |
---|
| | ------- |
---|
| | |
---|
| | You can override the program's default behavior with a number of command |
---|
| | line options: |
---|
| | |
---|
| | |
---|
| | -c copy targets to graveyard, don't remove them |
---|
| | -e empty the current graveyard (permanent removal) |
---|
| | -h display this help screen |
---|
| | -g graveyard use named graveyard instead of default |
---|
| | -i interactive removal/copy |
---|
| | -s don't generate serial number suffixes |
---|
| | -t test mode, just show what would be done |
---|
| | -v verbose mode - noisy output |
---|
| | -x execute, overrides previous -t |
---|
| | |
---|
| | |
---|
| | OPERATING NOTES |
---|
| | --------------- |
---|
| | |
---|
| | - Note that, in these examples, ``trm.sh`` means we're invoking the |
---|
| | program as a standalone utility that is presumably somewhere on your |
---|
| | ``$PATH``. ``trm`` means you've sourced it previously and it's |
---|
| | being called as shell function from your current command line |
---|
| | context. |
---|
| | |
---|
| | - You can use ``trm`` just like you do conventional ``rm``:: |
---|
| | |
---|
| | trm /tmp/foo /home/me/bar |
---|
| | |
---|
| | So the files/directories called ``foo`` and ``bar`` would be |
---|
| | "removed` from their current location and placed in |
---|
| | ``~./.graveyard/tmp/foo`` and ``~./.graveyard/home/me/bar`` |
---|
| | respectively. If the required directory structure does not exist in |
---|
| | the graveyard, ``trm`` will create it automatically. |
---|
| | |
---|
| | - Directory removal or copy is always recursive. |
---|
| | |
---|
| | - Options are processed left-to-right and take effect in that same |
---|
| | order. For example, ``trm.sh -ve`` will clear out the graveyard and |
---|
| | report on everything it is removing. However, ``trm.sh -ev`` will |
---|
| | not because the deletions will occur before the verbose option is |
---|
| | recognized. |
---|
| | |
---|
| | - If you are using multiple graveyards, you can use this property |
---|
| | to your advantage to clear them all with one command:: |
---|
| | |
---|
| | trm -v -g gy1 -e -g gy2 -e -g gy3 -e .... |
---|
| | |
---|
| | - Serial numbers are appened to the target *as named on the command |
---|
| | line*. If you delete a file, then it wil go into the graveyard as |
---|
| | ``file.serialnumber``. Similarly, a directory goes into the |
---|
| | graveyard as ``dir.serialnumber``. However, the names of anthing |
---|
| | *within* that directory, are left untouched. This allows you to |
---|
| | decide at what level of detail you want delete versioning to be |
---|
| | maintained. |
---|
| | |
---|
| | - If one of your delete/copy targets is a symlink, it will simply |
---|
| | be moved or copied to the graveyard as-is. However, if you |
---|
| | refer to a symlink somewhere in the path to a target, it *will* |
---|
| | be expanded. That target will be moved or copied to a |
---|
| | directory tree within the graveyard that mirrors the canonical |
---|
| | location of the original target. |
---|
| | |
---|
| | For example, say you have a symlink such as ``/local -> /usr/local``. |
---|
| | Then:: |
---|
| | |
---|
| | trm /local # Moves the symlink to ~/.graveyard/local |
---|
| | |
---|
| | But:: |
---|
| | |
---|
| | trm /local/bin/x # Moves x to ~/,graveyard/usr/local/bin/x |
---|
| | |
---|
| | |
---|
| | BUGS AND MISFEATURES |
---|
| | -------------------- |
---|
| | |
---|
| | None known as of this release. |
---|
| | |
---|
| | |
---|
| | COPYRIGHT AND LICENSING |
---|
| | ----------------------- |
---|
| | |
---|
| | **trm** is Copyright (c) 2016 TundraWare Inc., Des Plaines, IL 60018 USA |
---|
| | |
---|
| | For terms of use, see the ``trm-license.txt`` file in the |
---|
| | program distribution. |
---|
| | |
---|
| | If you install **trm** on a FreeBSD system using the 'ports' |
---|
| | mechanism, you will also find this file in:: |
---|
| | |
---|
| | /usr/local/share/doc/trm |
---|
| | |
---|
| | AUTHOR |
---|
| | ------ |
---|
| | |
---|
| | :: |
---|
| | |
---|
| | Tim Daneliuk |
---|
| | tundratundraware.com |
---|
| | |
---|
| | |