symbolic link question
Michael O'Donnell
mod+gnhlug at std.com
Tue Dec 3 15:37:00 EST 2002
While solving a related problem I ended up writing the
following little program that might be of interest to you:
#include <stdio.h>
#include <string.h>
/*
* ----------------------------------------------------------------------------
* Read lines from stdin, assume they're pathnames, attempt
* to convert them to their "canonical" form, print canonical
* version if successful else just echo unconverted input.
*/
int
main(
int argc,
char **argv )
{
char pathname[ 102400 ];
char canonical[ 102400 ];
char *ptr;
while( fgets( pathname, (sizeof( pathname ) - 1), stdin ) ) {
if( (ptr = strchr( pathname, '\n' )) ) {
*ptr = 0;
}
printf( "%s\n", realpath( pathname, canonical )? canonical: pathname );
}
return( 0 );
}
...which (after saving that source code in a file
named canonicalPath.c) you might be able to use thus:
gcc -o ~/bin/canonicalPath canonicalPath.c
ln -s /tmp myLocalTMPsymlink
cd `echo myLocalTMPsymlink | ~/bin/canonicalPath`
pwd
...and of course you could then redefine your 'cd'
command as a function:
function cd() {
builtin cd `echo $1 | ~/bin/canonicalPath`
}
...which would allow you to just use your 'cd'
command as always.
More information about the gnhlug-discuss
mailing list