我正在尝试设置别名/函数以从 Windows 上的 bash (MINGW) 调用 Total Commander。到目前为止,我的所有尝试都失败了,关闭
function tc() {
dir="$1"
if [ "$dir" == "" ]; then
dir="."
fi
/c/TotalCmd/totalcmd.exe /O /L="`cygpath -wa $dir`" /R="`cygpath -wa .`" &
}
此解决方案有一个缺点:TC 会打开给定的目录,但路径/
中还有其他内容。当我尝试向上移动一个目录时,这会导致 TC 转到根目录。
您知道如何设置此别名才能正确工作吗?谢谢!
答案1
您必须用引号括住 $dir 参数,否则您可能会向 cygpath 提供两个以上的字符串作为参数(第一个是 -wa,第二个是 /path/)。只有当 $dir 参数包含路径包含空格的目录时,这才会成为问题。
IE
cygpath-wa“〜/ x /你好世界”
不同于
cygpath-wa〜/ x /你好世界
这应该对你有用(就像对我一样):
jaroslav@wraptor ~
$ function winPath { cygpath.exe -wa -- "$1"; }
$ FreeCommander.exe C: "$(winPath /cygdrive/m/muzica/_christian_liturgy/\
Athonite\ Fathers\ of\ St.\ Anthony\'s\ Greek\ Orthodox\ Monastery\ -\ \
Vigil\ of\ St.\ Anthony/)"
答案2
所以解决方案有效,感谢 Jaroslav!
function tc() {
dir="$1"
if [ "$dir" == "" ]; then
dir="."
fi
/c/totalcmd/totalcmd.exe /O L="`winPath $dir`"
}
function winPath { cygpath.exe -wa -- "$1"; }