如何从tcsh中的pwd中提取部分路径?

时间:2015-07-01 18:07:13

标签: path directory tcsh pwd

我想基本上实现一个别名(使用cd),它将我带到我的pwd中的第5个目录。即 如果我的密码是/hm/foo/bar/dir1/dir2/dir3/dir4/dir5,我想要我的别名,说cdf带我去/hm/foo/bar/dir1/dir2。 所以基本上我试图弄清楚如何将给定路径剥离到tcsh中给定数量级别的目录。

任何指针?

编辑: 好的,我到目前为止打印出我想要使用awk的目录:

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

我发现很难对此进行cd,因为它已经变成了一堆乱码。

2 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

alias cdf source ~/.tcsh/cdf.tcsh

~/.tcsh/cdf.tcsh

cd "`pwd | cut -d/ -f1-6`"

我们使用pwd工具获取当前路径,然后将其传递到cut,我们将分隔符/-d/)拆分并显示第一个路径5个字段(-f1-6)。
您可以将cut视为非常awk;在很多情况下,它足够了,并且大大简化了事情。

你的别名问题是tcsh的quircky引用规则。我甚至不打算尝试解决这个问题。我们使用source来逃避所有这些; tcsh缺少函数,但你可以用它来模拟它们。从来没有说它很漂亮。

答案 1 :(得分:0)

@ carpetsmoker使用cut的解决方案非常简单。但由于他的解决方案笨拙地使用了另一个文件source,所以这里有一个如何避免这种情况的演示。使用单引号可以防止过早评估。

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

这里简单演示了单引号如何与反引号一起使用:

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