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 ) :
@ |
% ...
|
---|
-