如何 cd 到 .lnk 文件中链接的目录?
How to cd to directories linked in .lnk files?
在 Windows 中的 msys bash 中,我想 cd 到目录 a (Windows native) .lnk 链接。这些是标准的 Windows 快捷方式。我希望能够做到这一点:
~ $ cdlnk programs.lnk
/c/Program\ Files/ $
我已经走到这一步了:
strings "$lnk" | grep -A 1 DATA | tail -n 1
给我快捷方式链接到的路径。但是,现在我被困住了。我也可以
- 在 .bashrc 中创建一个别名 - 但是我不能使用管道或将参数传递给脚本,即我不能 运行 上面的代码。
- 制作一个脚本 cdlnk.sh - 但我只能更改它的 cd 而不是调用的 cd shell。
要同时处理参数和修改当前的shell,可以使用shell function in a file that has to be sourced,例如.bashrc
。
对于您的命令,函数可能如下所示:
cdlnk() {
strings "" | grep -A 1 DATA | tail -n 1
}
你可以使用 sed 代替 grep 和 tail
:
cdlnk() {
strings "" | sed -n '/DATA/{n;p;q;}'
}
其中 -n
抑制输出,并且在匹配 DATA
的行上,命令是 n
(将下一行放入模式缓冲区),p
(打印行)和 q
(退出 - 无需查看文件的其余部分)。
在 Windows 中的 msys bash 中,我想 cd 到目录 a (Windows native) .lnk 链接。这些是标准的 Windows 快捷方式。我希望能够做到这一点:
~ $ cdlnk programs.lnk
/c/Program\ Files/ $
我已经走到这一步了:
strings "$lnk" | grep -A 1 DATA | tail -n 1
给我快捷方式链接到的路径。但是,现在我被困住了。我也可以
- 在 .bashrc 中创建一个别名 - 但是我不能使用管道或将参数传递给脚本,即我不能 运行 上面的代码。
- 制作一个脚本 cdlnk.sh - 但我只能更改它的 cd 而不是调用的 cd shell。
要同时处理参数和修改当前的shell,可以使用shell function in a file that has to be sourced,例如.bashrc
。
对于您的命令,函数可能如下所示:
cdlnk() {
strings "" | grep -A 1 DATA | tail -n 1
}
你可以使用 sed 代替 grep 和 tail
:
cdlnk() {
strings "" | sed -n '/DATA/{n;p;q;}'
}
其中 -n
抑制输出,并且在匹配 DATA
的行上,命令是 n
(将下一行放入模式缓冲区),p
(打印行)和 q
(退出 - 无需查看文件的其余部分)。