mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-19 11:31:26 +01:00
166 lines
7.4 KiB
Text
166 lines
7.4 KiB
Text
COMMENT(!MOD!zsh/files
|
|
Some basic file manipulation commands as builtins.
|
|
!MOD!)
|
|
cindex(files, manipulating)
|
|
The tt(zsh/files) module makes available some common commands for file
|
|
manipulation as builtins; these commands are probably not needed for
|
|
many normal situations but can be useful in emergency recovery
|
|
situations with constrained resources. The commands do not implement
|
|
all features now required by relevant standards committees.
|
|
|
|
For all commands, a variant beginning tt(zf_) is also available and loaded
|
|
automatically. Using the features capability of zmodload will let you load
|
|
only those names you want.
|
|
|
|
The commands loaded by default are:
|
|
|
|
startitem()
|
|
findex(chgrp)
|
|
item(tt(chgrp) [ tt(-hRs) ] var(group) var(filename) ...)(
|
|
Changes group of files specified. This is equivalent to tt(chown) with
|
|
a var(user-spec) argument of `tt(:)var(group)'.
|
|
)
|
|
findex(chown)
|
|
item(tt(chown) [ tt(-hRs) ] var(user-spec) var(filename) ...)(
|
|
Changes ownership and group of files specified.
|
|
|
|
The var(user-spec) can be in four forms:
|
|
|
|
startsitem()
|
|
sitem(var(user))(change owner to var(user); do not change group)
|
|
sitem(var(user)tt(::))(change owner to var(user); do not change group)
|
|
sitem(var(user)tt(:))(change owner to var(user); change group to var(user)'s primary group)
|
|
sitem(var(user)tt(:)var(group))(change owner to var(user); change group to var(group))
|
|
sitem(tt(:)var(group))(do not change owner; change group to var(group))
|
|
endsitem()
|
|
|
|
In each case, the `tt(:)' may instead be a `tt(.)'. The rule is that
|
|
if there is a `tt(:)' then the separator is `tt(:)', otherwise
|
|
if there is a `tt(.)' then the separator is `tt(.)', otherwise
|
|
there is no separator.
|
|
|
|
Each of var(user) and var(group) may be either a username (or group name, as
|
|
appropriate) or a decimal user ID (group ID). Interpretation as a name
|
|
takes precedence, if there is an all-numeric username (or group name).
|
|
|
|
If the target is a symbolic link, the tt(-h) option causes tt(chown) to set
|
|
the ownership of the link instead of its target.
|
|
|
|
The tt(-R) option causes tt(chown) to recursively descend into directories,
|
|
changing the ownership of all files in the directory after
|
|
changing the ownership of the directory itself.
|
|
|
|
The tt(-s) option is a zsh extension to tt(chown) functionality. It enables
|
|
paranoid behaviour, intended to avoid security problems involving
|
|
a tt(chown) being tricked into affecting files other than the ones
|
|
intended. It will refuse to follow symbolic links, so that (for example)
|
|
``tt(chown luser /tmp/foo/passwd)'' can't accidentally chown tt(/etc/passwd)
|
|
if tt(/tmp/foo) happens to be a link to tt(/etc). It will also check
|
|
where it is after leaving directories, so that a recursive chown of
|
|
a deep directory tree can't end up recursively chowning tt(/usr) as
|
|
a result of directories being moved up the tree.
|
|
)
|
|
findex(ln)
|
|
xitem(tt(ln) [ tt(-dfhins) ] var(filename) var(dest))
|
|
item(tt(ln) [ tt(-dfhins) ] var(filename) ... var(dir))(
|
|
Creates hard (or, with tt(-s), symbolic) links. In the first form, the
|
|
specified var(dest)ination is created, as a link to the specified
|
|
var(filename). In the second form, each of the var(filename)s is
|
|
taken in turn, and linked to a pathname in the specified var(dir)ectory
|
|
that has the same last pathname component.
|
|
|
|
Normally, tt(ln) will not attempt to create hard links to
|
|
directories. This check can be overridden using the tt(-d) option.
|
|
Typically only the super-user can actually succeed in creating
|
|
hard links to directories.
|
|
This does not apply to symbolic links in any case.
|
|
|
|
By default, existing files cannot be replaced by links.
|
|
The tt(-i) option causes the user to be queried about replacing
|
|
existing files. The tt(-f) option causes existing files to be
|
|
silently deleted, without querying. tt(-f) takes precedence.
|
|
|
|
The tt(-h) and tt(-n) options are identical and both exist for
|
|
compatibility; either one indicates that if the target is a symlink
|
|
then it should not be dereferenced.
|
|
Typically this is used in combination with tt(-sf) so that if an
|
|
existing link points to a directory then it will be removed,
|
|
instead of followed.
|
|
If this option is used with multiple filenames and the target
|
|
is a symbolic link pointing to a directory then the result is
|
|
an error.
|
|
)
|
|
findex(mkdir)
|
|
item(tt(mkdir) [ tt(-p) ] [ tt(-m) var(mode) ] var(dir) ...)(
|
|
Creates directories. With the tt(-p) option, non-existing parent
|
|
directories are first created if necessary, and there will be
|
|
no complaint if the directory already exists.
|
|
The tt(-m) option can be used to specify (in octal) a set of file permissions
|
|
for the created directories, otherwise mode 777 modified by the current
|
|
tt(umask) (see manref(umask)(2)) is used.
|
|
)
|
|
findex(mv)
|
|
xitem(tt(mv) [ tt(-fi) ] var(filename) var(dest))
|
|
item(tt(mv) [ tt(-fi) ] var(filename) ... var(dir))(
|
|
Moves files. In the first form, the specified var(filename) is moved
|
|
to the specified var(dest)ination. In the second form, each of the
|
|
var(filename)s is
|
|
taken in turn, and moved to a pathname in the specified var(dir)ectory
|
|
that has the same last pathname component.
|
|
|
|
By default, the user will be queried before replacing any file
|
|
that the user cannot write to, but writable files will be silently
|
|
removed.
|
|
The tt(-i) option causes the user to be queried about replacing
|
|
any existing files. The tt(-f) option causes any existing files to be
|
|
silently deleted, without querying. tt(-f) takes precedence.
|
|
|
|
Note that this tt(mv) will not move files across devices.
|
|
Historical versions of tt(mv), when actual renaming is impossible,
|
|
fall back on copying and removing files; if this behaviour is desired,
|
|
use tt(cp) and tt(rm) manually. This may change in a future version.
|
|
)
|
|
findex(rm)
|
|
item(tt(rm) [ tt(-dfirs) ] var(filename) ...)(
|
|
Removes files and directories specified.
|
|
|
|
Normally, tt(rm) will not remove directories (except with the tt(-r)
|
|
option). The tt(-d) option causes tt(rm) to try removing directories
|
|
with tt(unlink) (see manref(unlink)(2)), the same method used for files.
|
|
Typically only the super-user can actually succeed in unlinking
|
|
directories in this way.
|
|
tt(-d) takes precedence over tt(-r).
|
|
|
|
By default, the user will be queried before removing any file
|
|
that the user cannot write to, but writable files will be silently
|
|
removed.
|
|
The tt(-i) option causes the user to be queried about removing
|
|
any files. The tt(-f) option causes files to be
|
|
silently deleted, without querying, and suppresses all error indications.
|
|
tt(-f) takes precedence.
|
|
|
|
The tt(-r) option causes tt(rm) to recursively descend into directories,
|
|
deleting all files in the directory before removing the directory with
|
|
the tt(rmdir) system call (see manref(rmdir)(2)).
|
|
|
|
The tt(-s) option is a zsh extension to tt(rm) functionality. It enables
|
|
paranoid behaviour, intended to avoid common security problems involving
|
|
a root-run tt(rm) being tricked into removing files other than the ones
|
|
intended. It will refuse to follow symbolic links, so that (for example)
|
|
``tt(rm /tmp/foo/passwd)'' can't accidentally remove tt(/etc/passwd)
|
|
if tt(/tmp/foo) happens to be a link to tt(/etc). It will also check
|
|
where it is after leaving directories, so that a recursive removal of
|
|
a deep directory tree can't end up recursively removing tt(/usr) as
|
|
a result of directories being moved up the tree.
|
|
)
|
|
findex(rmdir)
|
|
item(tt(rmdir) var(dir) ...)(
|
|
Removes empty directories specified.
|
|
)
|
|
findex(sync)
|
|
item(tt(sync))(
|
|
Calls the system call of the same name (see manref(sync)(2)), which
|
|
flushes dirty buffers to disk. It might return before the I/O has
|
|
actually been completed.
|
|
)
|
|
enditem()
|