Search code examples
pathdirectorytcshpwd

How do I extract partial path from pwd in tcsh?


I want to basically implement an alias (using cd) which takes me to the 5th directory in my pwd. i.e. If my pwd is /hm/foo/bar/dir1/dir2/dir3/dir4/dir5, I want my alias, say cdf to take me to /hm/foo/bar/dir1/dir2 . So basically I am trying to figure how I strip a given path to a given number of levels of directories in tcsh.

Any pointers?

Edit: Okay, I came this far to print out the dir I want to cd into using awk:

alias cdf 'echo `pwd` | awk -F '\''/'\'' '\''BEGIN{OFS="/";} {print $1,$2,$3,$4,$5,$6,$7;}'\'''

I am finding it difficult to do a cd over this as it already turned into a mess of escaped characters.


Solution

  • @carpetsmoker's solution using cut is nice and simple. But since his solution awkwardly uses another file and source, here's a demonstration of how to avoid that. Using single quotes prevents the premature evaluation.

    % alias cdf 'cd "`pwd | cut -d/ -f1-6`"'
    % alias cdf
    cd "`pwd | cut -d/ -f1-6`"
    

    Here's a simple demonstration of how single quotes can work with backticks:

    % alias pwd2 'echo `pwd`'
    % alias pwd2
    echo `pwd`
    % pwd2
    /home/shx2