如何从 tcsh 中的 pwd 中提取部分路径?
How do I extract partial path from pwd in tcsh?
我基本上想实现一个别名(使用 cd),它将我带到我的 pwd 中的第 5 个目录。 IE。
如果我的密码是 /hm/foo/bar/dir1/dir2/dir3/dir4/dir5
,我想要我的别名,说 cdf 带我去 /hm/foo/bar/dir1/dir2
。
所以基本上我试图弄清楚如何在 tcsh 中将给定路径剥离到给定数量的目录级别。
有什么指点吗?
编辑:
好的,我走到这一步是为了打印出我想使用 awk 进入的目录:
alias cdf 'echo `pwd` | awk -F '\''/'\'' '\''BEGIN{OFS="/";} {print ,,,,,,;}'\'''
我发现很难对其进行 cd,因为它已经变成了一堆转义字符。
这应该可以解决问题:
alias cdf source ~/.tcsh/cdf.tcsh
在~/.tcsh/cdf.tcsh
中:
cd "`pwd | cut -d/ -f1-6`"
我们使用 pwd
工具获取当前路径,并将其通过管道传输到 cut
,我们在此处按分隔符 /
(-d/
) 拆分并显示前 5 个字段 (-f1-6
).
您可以将 cut
视为 非常 轻 awk
;在许多情况下,这就足够了,并且极大地简化了事情。
您的别名的问题在于 tcsh 古怪的引用规则。我什至不打算尝试解决这个问题。我们使用 source
来规避所有这些;
tcsh 缺少功能,但您可以用它来模拟它们。没说好看
@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
我基本上想实现一个别名(使用 cd),它将我带到我的 pwd 中的第 5 个目录。 IE。
如果我的密码是 /hm/foo/bar/dir1/dir2/dir3/dir4/dir5
,我想要我的别名,说 cdf 带我去 /hm/foo/bar/dir1/dir2
。
所以基本上我试图弄清楚如何在 tcsh 中将给定路径剥离到给定数量的目录级别。
有什么指点吗?
编辑: 好的,我走到这一步是为了打印出我想使用 awk 进入的目录:
alias cdf 'echo `pwd` | awk -F '\''/'\'' '\''BEGIN{OFS="/";} {print ,,,,,,;}'\'''
我发现很难对其进行 cd,因为它已经变成了一堆转义字符。
这应该可以解决问题:
alias cdf source ~/.tcsh/cdf.tcsh
在~/.tcsh/cdf.tcsh
中:
cd "`pwd | cut -d/ -f1-6`"
我们使用 pwd
工具获取当前路径,并将其通过管道传输到 cut
,我们在此处按分隔符 /
(-d/
) 拆分并显示前 5 个字段 (-f1-6
).
您可以将 cut
视为 非常 轻 awk
;在许多情况下,这就足够了,并且极大地简化了事情。
您的别名的问题在于 tcsh 古怪的引用规则。我什至不打算尝试解决这个问题。我们使用 source
来规避所有这些;
tcsh 缺少功能,但您可以用它来模拟它们。没说好看
@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