在Bash中无意中逃避双引号


2

我试图在Git bash中添加以下Git别名作为命令(windows用户在这里)。

yolo = "!git init && git remote add origin $1 && git pull"

这似乎都不起作用。前者会引发错误,后者逃脱双引号中.gitconfigyolo = \"!git init && git remote add origin $1 && git pull\"

$ git config --global alias.yolo "!git init && git remote add origin $1 && git pull"

$ git config --global alias.yolo '"!git init && git remote add origin $1 && git pull"'

更新:第一个命令显示的错误是

git config --global alias.yolo "git config --global alias.yolo '"!git init && git remote add origin $1 && git pull"' init && git remote add origin $1 && git pull"
usage: git remote add [<options>] <name> <url>

-f, --fetch           fetch the remote branches
--tags                import all tags and associated objects when fetching
                      or do not fetch any tag at all (--no-tags)
-t, --track <branch>  branch(es) to track
-m, --master <branch>
                      master branch
--mirror[=<push|fetch>]
                      set up remote as a mirror to push to or fetch from

错误是什么?
Ouroborus 2015年

问题随错误而更新。
Collizo4sky 2015年

Answers:


1

是不是你的别名试图完成git clone已经做的事情?


$1这里不会做任何有用的事情--Git的别名扩展只是在配置命令的末尾附加用户给定的参数; 它没有告诉shell它们应该映射到$ @。

这里有两个选项:

  • 定义一个函数并运行它:

    yolo = "!fred() { git init && git remote add origin \"$1\" && git pull; }; fred"

    这样$ 1将意味着函数的参数并正常工作。

  • 写一个名为的脚本git-yolo

    (不一定是/ bin / sh,可以是bash或perl或任何东西)

    #!/bin/sh
    git init && git remote add origin "$1" && git pull

    将脚本放在配置$PATH目录中的任何位置,例如/usr/local/bin/git-yolo。这将使Git将其识别为git yolo子命令。


嗨,谢谢你的回答。我是bash脚本的新手。问题是,编辑.gitconfig并yolo = "!git init && git remote add origin $1 && git pull"git yolo运行命令时添加工作。它完美地运作。Git clone仅在目录不为空时才有效。我想要的是如何添加别名git config --global alias.yolo ... 我只想要双引号不被转义。
Collizo4sky 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.