This post was migrated from my old blog

Navigating maven projects (or any java project for that matter) on the command line can be an incredible pain. Package structures 8 or 10 levels deep aren’t that uncommon, especially in large enterprise level projects. Below are two hooks that I use to hop around that I find really useful.

showlevel (alias l=‘showlevel’)

:::perl
#!/bin/perl -w

my $pwd=`pwd`;

my @parts = split("/", $pwd);
my $level = (scalar(@parts)-1);
# Want to show which directory we are going to
$level--;

print $pwd;

my $last_index = 0;
my $index = 0;

while( $index != -1 && $level >= 1)
{
   $index = index($pwd, "/", $index);
   my $space = "";

   my $double_digit_level = 0;
   # Needs to be 8 because we print the spacer first
   if( $level > 8 )
   {
      $double_digit_level = 1;
   }

   for( $i=0; $i < ($index - $last_index)-1; $i++)
   {
      if($double_digit_level)
      {
         # When we print the double digit level, we need to
         # leave off on "spacer"
         $double_digit_level = 0;
      }
      else
      {
         $space.=".";
      }
  }

   if($index != -1)
   {
      print $space.$level;
      $last_index = $index;
      $index++;
      $level--;
   }
}

print "

“;

~/.profile or ~/.bashrc

:::bash
function k
{
   level=$1
   cdback=""
   for i in `seq 1 $level`
   do
      cdback=$cdback"../"
   done

   cd $cdback
}