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@/[^/]*$@@'
...
|