在我的文件系统中,我发现拥有cd ..
的快捷方式是个好主意。因此,我在.bashrc中添加了几行:
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
因此模式在第一个点之后,尾随点的数量是备份要爬升的层次结构的目录数。我想使它具有可扩展性,理想情况下可以使用函数或其他东西,这样我就可以输入$ ......
并将它带到cd ../../../../..
。这样的事情可能吗?或者我应该继续添加行到我的.bashrc以覆盖我认为我想要一次性遍历的那么多的地方?
答案 0 :(得分:4)
您可以使用函数而不是别名来执行此操作。在shell函数运行时,${FUNCNAME[0]}
包含函数的名称。
whatsyourname() {
echo "I am ${FUNCNAME[0]}"
}
但我没有看到这一点。您仍然必须使用此定义定义所有单独的别名或函数。没有办法说“任何只是一堆点的命令应该运行这个功能”并让它计算点数。
为什么不定义一个带有参数的函数up
,这是要上升的级别数?因此up 3
会cd ../../..
。
答案 1 :(得分:1)
我认为没有办法完全按照你的意愿行事,但实现一个可以调用的脚本是非常简单的:up ...(arbitrary number of .'s)...
。
当您输入任意数量的.
>时,您真正要求的是让BASH调用单个函数的方法。 2.这似乎是一个“通配符函数名称”或其他东西,我认为不可能。
答案 2 :(得分:1)
将其放入.bashrc
:
cd_func() {
builtin cd "$(echo "$1" \
| sed -e ':a
s@\.\.\.@../..@g
t a')"
}
alias cd=cd_func
然后cd ...
与cd ../..
相同,cd ....
与cd ../../..
相同,依此类推,可以根据需要添加多个点。您甚至可以cd ..../foo/bar
快速移动。
这在DOS日期的命令行中的任何地方都可以使用。 cd
,dir
以及所有程序都处理了层次结构中引用文件夹n
的任何n
点序列。它很棒但是使用Windows XP和新的cmd.exe
它停止了工作......