When you write shell scripts or functions, sometimes you have a file's
absolute pathname
but need the parent directory's name.
(You might need the parent's name
to see if you have write permission in the
directory - say, to remove or rename the file.)
If the pathname is stored in a csh
shell (not environment) variable, use
the
modifier :h
(9.6
)
.
In the Bourne shell, see if your system has the
dirname
(45.18
)
command.
If it doesn't, you can get the GNU version from the Power Tools
disc - or use
expr
(45.28
)
with a
regular expression (26.4
)
that
gives you everything up to (but not including) the last slash.
For example, if the pathname /home/mktg/fred/afile
is stored in
the shell
variable file
, these csh
and sh
commands
would store /home/mktg/fred
into the variable dir
:
% set dir=$file:h
$ dir=`dirname "$file"`
$ dir=`expr "$file" : '\(.*\)/'`
To handle multiple pathnames, give this regular expression to
sed
(34.24
)
:
@
|
% ... sed 's@/[^/]*$@@'
...
|