使用 msysgit/“Git for Windows”导航 Windows 快捷方式?

使用 msysgit/“Git for Windows”导航 Windows 快捷方式?

我在 Windows 上使用 msysgit 来使用 git,但我经常想通过 Windows 风格的*.lnk快捷方式导航。我通常通过 Windows 的资源管理器管理我的文件结构,因此使用不同类型的快捷方式(例如在 git 中创建硬链接或软链接)是不可行的。我该如何通过这种类型的快捷方式导航?

例如:

PCUser@PCName ~
$ cd Desktop

PCUser@PCName ~/Desktop
$ ls
Scripts.lnk

PCUser@PCName ~/Desktop
$ cd Scripts.lnk
sh.exe": cd: Scripts.lnk: Not a directory

是否可以改变这种行为,这样它就不会出现错误,而是直接转到目录的位置?或者,是否有命令可以获取文件中的路径*.lnk

编辑: 我听说过与之相反对于 cygwin,允许您创建一个与 explorer 一起工作的符号链接。

答案1

*咳咳*

第一的,编译下列自动热键脚本:

FileGetShortcut, %1%, shortcut_target
FileAppend, %shortcut_target%, *
ExitApp

.EXE文件放入%小路%目录。我将我的目录命名为follow.exe

现在,您可以.LNK使用以下语法有效地跟踪工作目录中的 Windows 文件:

cd `follow Shortcut.lnk`

哪里Shortcut.lnk目标是有效目录。


示范:

捷径

git bash


设置完成后follow.exe,您可以将以下 shell 函数添加到文件中~/.bashrc,以进一步简化语法。谢谢,丹尼尔

function cd
{
    if [[ ".lnk" = "${1:(-4)}" && -f "$1" ]] ;
        then builtin cd "$( follow "$1" )" ;
    else builtin cd "$1" ;
    fi
}

现在,您只需使用!即可关注.LNK文件。cd

cd Shortcut.lnk

示范:

光盘

答案2

目前似乎还不可能,建议的方法是使用连接点公用事业:

关于在 msys 上创建符号

更新:

谢谢劉劉曉感谢您的回答。

但是,在我的例子中,有时 bash 自动完成功能会在/快捷方式后面放置一个,例如cd /f/downloads/scripts.lnk/,所以我用它作为借口来玩 bash 脚本并调整脚本,同时检查不可接受的快捷方式(损坏或指向文件):

cd() {

    shopt -s nocasematch

    if [[ -z "$1" ]];
        then
            echo Error: missing operand;
            return 1;
    fi;

    if [[ "$1" == "/" ]];
        then
            destination=$1;
        else
            destination=${1%/};
    fi;

    extension=${destination##*.}

    if [[ -f "$destination" && $extension == "lnk" ]];
        then

            finaldestination=`follow "$destination"`;

            if [[ -z "$finaldestination" ]];
                then
                    echo Error: invalid destination;
                    return 2;
            fi;

            if [[ -f "$finaldestination" ]];
                then
                    echo Error: destination is a file;
                    return 3;
            fi;

            builtin cd "$finaldestination";

        else
            builtin cd "$destination";
    fi;
}

答案3

msys可以cmd通过以下标志从内部打开快捷方式/C

cmd //C "C:\Shortcut.lnk"

如果它是文件夹的快捷方式,它将被打开。斜线必须逃脱所以 msys 不会转换/CC:\

相对路径同样有效,简单路径不需要引号。如果文件lnk位于当前文件夹中:

cmd //C Shortcut.lnk

答案4

如果你创建一个符号链接(mklink /D <link name> <target dir>从具有管理员权限的 cmd 使用)而不是快捷方式,git bash 可以使用 来跟踪它cd -P <link name>

相关内容