我有一个常见的用例,我想为其编写一个函数:我经常想 cd 到与某个文件相关的某个目录。
我当前的工作流程如下所示:
$ gem which rspec/core | xargs echo -n | pbcopy
$ cd *paste and delete end until direcory looks right*
注意:gem which rspec/core
打印类似“/Users/joshcheek/.rvm/gems/ruby-1.9.3-p125/gems/rspec-core-2.10.0/lib/rspec/core.rb”的内容
我希望它看起来像这样:
$ gem which rspec/core | 2dir 3
这将使我进入“/Users/joshcheek/.rvm/gems/ruby-1.9.3-p125/gems/rspec-core-2.10.0”(传递参数“3”告诉它删除“lib/rspec/ core.rb" 从最后)
这是迄今为止我得到的最好的:
2dir() {
read dir
for i in $(seq 1 $1)
do
dir="${dir%/*}"
done
cd "$dir"
}
但是 cd 改变了函数的目录,而不是我的。我试过用别名交换它,但不知道如何制作匿名函数或传递参数。