Michael L Torrie wrote:
I have a script that is passed a filename.  This filename could be
absolute, it could be relative.  I need the script to be able to
determine the pull path to this file.  I've read lots of hacks for doing
this that involve ls, find, and pwd, but none of them do what I need.
If the script was invoked like this,

Any tips?

C has a function called realpath() that does the job, but bash has no such counterpart. I usually end up building my own little binary to do it, and calling that from my shell scripts. Here's the source:


#include <limits.h>
#include <stdio.h>
#include <stdlib.h>

/**
* Converts a directory or file name to its canonicalized representation
* using the realpath() function (man realpath).
*/
int main( int argc, char **argv )
{
   if( argc != 2 )
   {
       printf( "Usage: %s <path>\n", argv[0] );
       return 1;
   }

   char output[PATH_MAX];
   realpath( argv[1], output );
   printf( "%s\n", output );

   return 0;
}

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to