The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
Google UNIX.COM


Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Taking a name out of $PATH cleansing_flame UNIX for Dummies Questions & Answers 7 01-28-2008 02:48 PM
$PWD shows absolute path vs path w/symbolic links kornshellmaven Shell Programming and Scripting 3 06-13-2007 09:15 AM
how to check the actual path instead of link path reldb UNIX for Advanced & Expert Users 4 10-04-2006 06:55 AM
vi - replacing a relative path with absolute path in a file Yinzer955i UNIX for Dummies Questions & Answers 2 09-07-2006 08:47 AM
cc path problem - no acceptable path found kendokendokendo UNIX for Dummies Questions & Answers 2 09-12-2005 06:52 AM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 06-06-2004
Nat Nat is offline
Registered User
 

Join Date: Oct 2003
Location: Netherlands
Posts: 12
taking the end off a path

I need a script to be able to take a path such as "/foo/bar/thing" a put the "/foo/bar/" bit in one variable and the "thing" bit in another.

I figured awk would probably be the best tool for the job but looking at the man page didn't seem to help. The only way i know how to use awk is with '{print $1, $2 ,$3}' but that doesn't help unless i can get it to count from the end of the string.

What should i do?
__________________
I intend to live forever...
So far, so good!
Reply With Quote
Forum Sponsor
  #2 (permalink)  
Old 06-06-2004
google's Avatar
Moderator
 

Join Date: Jul 2002
Location: Atlanta
Posts: 740
use basename to get the file name
and dirname to get the path.

Code:
program=/this/is/the/path/to/my/file.ksh

FILE=$(basename program)
DIR=$(dirname program)

echo $FILE
file.ksh

echo $DIR
/this/is/the/path/to/my

Dont use this code since its better to use built-ins rather than
writing something like this, but, here is a method in Awk to
get the parent directory of a file.


echo $PARENT_PATH | awk ' {
     
              arraySize = split($0, parentPath, "/");
              delete parentPath[arraySize];
    
              for (i in parentPath ) {
               w = w "/" parentPath[i];
  
              }
              print w
            }'

Last edited by google; 06-06-2004 at 06:42 AM.
Reply With Quote
  #3 (permalink)  
Old 06-06-2004
Nat Nat is offline
Registered User
 

Join Date: Oct 2003
Location: Netherlands
Posts: 12
with a few minor changes it works great

thanks a lot :-)
__________________
I intend to live forever...
So far, so good!
Reply With Quote
  #4 (permalink)  
Old 06-06-2004
google's Avatar
Moderator
 

Join Date: Jul 2002
Location: Atlanta
Posts: 740
what were the minor changes?
Reply With Quote
  #5 (permalink)  
Old 06-06-2004
Nat Nat is offline
Registered User
 

Join Date: Oct 2003
Location: Netherlands
Posts: 12
by minor changes i mean adapting it for my script and changing for example "FILE=$(basename program)" to "FILE=$(basename $program)"

I have also encountered another problem on closer investigation.

$0 which provides the input for dirname and basename does not put a \ before spaces which dirname especially doesn't like.

the only way around this that i can think of is to use something like;

no1=$($0 | awk '{print $1}')
no2=$($0 | awk '{print $2}')
no3=$($0 | awk '{print $3}')

execpath=$(echo $no1\ $no2\ $no3)

exedir=$(dirname $execpath)
exefile=$(filename $execpath)

however this would require me to know how many spaces exactly will be in the files path.

This is starting to look complex.
What do i do?
__________________
I intend to live forever...
So far, so good!
Reply With Quote
  #6 (permalink)  
Old 06-06-2004
Registered User
 

Join Date: May 2004
Location: Hawaii
Posts: 37
This is where you use quotes most liberally:

exedir=$(dirname "$0")
exefile=$(filename "$0")
Reply With Quote
  #7 (permalink)  
Old 06-06-2004
google's Avatar
Moderator
 

Join Date: Jul 2002
Location: Atlanta
Posts: 740
Can you post some or all of your script? It would be easier to see the script to better trouble shoot it.
Reply With Quote
Google The UNIX and Linux Forums
Reply

Thread Tools
Display Modes




All times are GMT -7. The time now is 09:53 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008. All Rights Reserved.Ad Management by RedTyger Visit The Global Fact Book

Content Relevant URLs by vBSEO 3.2.0