如何CD链接到.lnk文件中的目录?

时间:2018-12-19 14:33:58

标签: bash msys

在Windows的msys bash中,我想将目录cd到(Windows本机).lnk链接到的目录。这些是标准的Windows快捷方式。我希望能够做到这一点:

~ $ cdlnk programs.lnk
/c/Program\ Files/ $

我走了这么远:

strings "$lnk" | grep -A 1 DATA | tail -n 1

为我提供了快捷方式链接的路径。但是,现在我被卡住了。我可以

  1. 在.bashrc中创建一个别名-但随后我无法使用管道或将参数传递给脚本,即我无法在上述代码上运行。
  2. 制作一个脚本cdlnk.sh-但是我只能更改其cd,而不能更改调用shell的cd。

1 个答案:

答案 0 :(得分:1)

要能够处理参数修改当前的shell,可以在必须为shell function的文件中使用sourced,例如{{1 }}。

对于您拥有的命令,该函数可能如下所示:

.bashrc

您可以通过使用sed而不是grep和cdlnk() { strings "$1" | grep -A 1 DATA | tail -n 1 } 来缩短此时间:

tail

其中cdlnk() { strings "$1" | sed -n '/DATA/{n;p;q;}' } 禁止输出,在与-n匹配的行上,命令为DATA(将下一行放入模式缓冲区),n(打印行) ,和p(退出-无需查看文件的其余部分)。