相关疑难解决方法(0)

如何在Git中检索当前提交的哈希值?

我想保留(现在)能够将Git变更集链接到存储在TFS中的工作项.

我已经编写了一个工具(使用Git中的一个钩子),我可以在其中将workitemidentifiers注入到Git变更集的消息中.

但是,我还想将Git提交的标识符(哈希)存储到自定义TFS工作项字段中.通过这种方式,我可以检查TFS中的工作项,并查看与工作项相关联的Git更改集.

如何从Git的当前提交中轻松检索哈希?

git tfs changeset tfs-workitem

1788
推荐指数
18
解决办法
81万
查看次数

如何最好地包含其他脚本?

通常包含脚本的方式是"源"

例如:

main.sh:

#!/bin/bash

source incl.sh

echo "The main script"
Run Code Online (Sandbox Code Playgroud)

incl.sh:

echo "The included script"
Run Code Online (Sandbox Code Playgroud)

执行"./main.sh"的输出是:

The included script
The main script
Run Code Online (Sandbox Code Playgroud)

...现在,如果您尝试从其他位置执行该shell脚本,除非它在您的路径中,否则无法找到包含.

确保脚本可以找到包含脚本的好方法是什么,特别是如果脚本需要可移植的话?

bash

338
推荐指数
11
解决办法
31万
查看次数

Python无法在git bash的命令行中运行

Python不会在git bash(Windows)中运行.当我在命令行中键入python时,它将我带到一个空白行,而不是说它已经像在Powershell中那样输入了python 2.7.10.它没有给我一个错误消息,但python只是不运行.

我已经确定了PATH中的环境变量c:\python27.我还能检查什么?


发生此问题的会话如下所示:

user@hostname MINGW64 ~
$ type python
python is /c/Python27/python

user@hostname MINGW64 ~
$ python
Run Code Online (Sandbox Code Playgroud)

......坐在那里而不回到提示.

python windows git command-line git-bash

192
推荐指数
11
解决办法
11万
查看次数

在Windows安装的Git Bash中更改〜目录的位置

我甚至不确定我是在问正确的问题.让我解释一下我的情况:

这是关于Windows 7上的Git.

我的公司在网络驱动器上设置Windows用户目录,而不是在本地硬盘驱动器上(用于备份和超出此问题范围的其他目的).我不能改变这个政策.

我可以在该方案之外拥有本地文件,这就是我的Apache服务器的设置方式.完全是当地的.

我安装了Git.它安装了Bash.当我启动Bash和cd ~(更改到根目录)时,我发现它(Bash根目录)指向我的网络用户目录.我希望它不要那样做.我想要 ~在我的硬盘上的其他地方.我想要它,以便当我执行其他操作,如安装证书,SSH密钥等时,其默认值不会自动使用该网络目录.

我到处搜索都是徒劳的,我能找到的所有内容都指的是涉及别名,重定向和$ HOME指向的位置的答案.但这根本不是我想要的.

问题是:我可以更改该目录吗?如果是这样的话:怎么样?

更新:所以,$ HOME是我需要修改的.但是我一直无法找到这个神秘的$ HOME变量的位置,所以我认为它是一个Linux系统版本的PATH或其他东西.无论如何 ......

我的确有一个"个人资料"文件git/etc.以下是内容(注意没有$ HOME):

  # To the extent possible under law, the author(s) have dedicated all
  # copyright and related and neighboring rights to this software to the
  # public domain worldwide. This software is distributed without any warranty.
  # You should have received a copy of the CC0 Public Domain Dedication along
  # with this software.
  # If not, see …
Run Code Online (Sandbox Code Playgroud)

git msysgit mingw32 git-bash msys2

119
推荐指数
6
解决办法
10万
查看次数

从shell脚本导入函数

我有一个shell脚本,我想用shUnit测试.脚本(和所有功能)都在一个文件中,因为它使安装更容易.

示例 script.sh

#!/bin/sh

foo () { ... }
bar () { ... }

code
Run Code Online (Sandbox Code Playgroud)

我想编写第二个文件(不需要分发和安装)来测试中定义的函数 script.sh

就像是 run_tests.sh

#!/bin/sh

. script.sh

# Unit tests
Run Code Online (Sandbox Code Playgroud)

现在的问题在于.(或source在Bash中).它不仅解析函数定义,还执行脚本中的代码.

由于没有参数的脚本没有任何坏处,我可以

. script.sh > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

但如果有更好的方法来实现我的目标,我就会徘徊.

编辑

我建议的解决方法在源脚本调用的情况下不起作用,exit所以我必须捕获退出

#!/bin/sh

trap run_tests ERR EXIT

run_tests() {
   ...
}

. script.sh
Run Code Online (Sandbox Code Playgroud)

run_tests调用该函数但是只要我重定向source命令的输出,脚本中的函数就不会被解析,并且在陷阱处理程序中不可用

这有效,但我得到的输出script.sh:

#!/bin/sh
trap run_tests ERR EXIT
run_tests() {
   function_defined_in_script_sh
}
. script.sh
Run Code Online (Sandbox Code Playgroud)

这不打印输出但是我得到一个错误,该函数未定义:

#!/bin/sh
trap run_tests ERR EXIT
run_tests() {
   function_defined_in_script_sh
}
. script.sh …
Run Code Online (Sandbox Code Playgroud)

shell

48
推荐指数
3
解决办法
4万
查看次数

什么是相当于Python的`if __name__ =='__ main __'的bash?

在Bash中,我希望能够同时获取脚本并执行该文件.什么是Bash相当于Python的if __name__ == '__main__'

我没有在Stackoverflow上找到关于这个主题的现成问题/解决方案(我怀疑我的问题是这样的方式与现有的问题/答案不符,但这是我能想到的最明显的方式.问题是因为我的Python经验).


ps关于可能的重复问题(如果我有更多时间,我会写一个更短的回复):

链接到问题问:"如何检测如果脚本正在采购",但这个问题是问"你怎么创建一个bash脚本,既可以是采购和运行的脚本?".这个问题的答案可能会使用上一个问题的某些方面,但有其他要求/问题如下:

  • 一旦检测到脚本被采购,不运行脚本的最佳方法是什么(并避免意外的副作用(除了导入感兴趣的功能),如添加/删除/修改环境/变量)
  • 一旦你检测到脚本正在运行而不是源代码实现你的脚本的规范方法是什么(把它放在一个函数中?或者只是把它放在if语句之后?如果你把它放在if语句之后它会有 - 影响?
  • 我在Bash上发现的大多数谷歌搜索都没有涵盖这个主题(一个可以同时获取和执行的bash脚本)实现这个的规范方法是什么?这个话题没有被涵盖,因为它是沮丧还是不好?有陷阱吗?

bash

29
推荐指数
4
解决办法
3380
查看次数

如何在bash中更改printf命令中的小数点分隔符?

我使用Cygwin的意大利语本地化,因此我的printf命令使用逗号分隔浮点数,并且不理解以点分隔的浮点数

$ printf "%f" 3.1415
-bash: printf: 3.1415: invalid number
0,000000

$ printf "%f" 3,1415
3,141500
Run Code Online (Sandbox Code Playgroud)

这会产生一些问题,因为基本上其他所有东西都使用点来分隔十进制数字.

如何将小数点分隔符从逗号更改为点?

bash printf

16
推荐指数
2
解决办法
2万
查看次数

Appium Doctor - 无法在MacOS 10.12上将$ JAVA_HOME/bin设置为PATH变量

在MacOS 10.12上用npm安装了appium医生,它给了我一个错误:

WARN AppiumDoctor ? Bin directory for $JAVA_HOME is not set.
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尽力了,请帮忙.这是我的.bash_profile:

export ANDROID_HOME="/Users/sergei/Library/Android/sdk/"
export PATH=$ANDROID_HOME/platform-tools:$PATH
export PATH=$ANDROID_HOME/tools:$PATH
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export M2_HOME="/Users/sergei/Desktop/1246702 Sergio/apache-maven-3.3.9"
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export JYTHON_HOME="/Users/sergei/jython2.7.0/"
export JYTHON=JYTHON_HOME/bin
export PATH=JYTHON:$PATH

export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)

java bash path java-home appium

9
推荐指数
4
解决办法
2万
查看次数

将 MSYS 添加到 Windows 终端

我通过编辑 settings.json 文件将 Windows 上的 bash 添加到 Windows 终端,当我尝试编译用 c++ 编写的简单 hello world 时,它会抛出错误,未检测到 gcc 或 g++ 如何正确添加 MSYS bash 终端,以便我可以从 Windows 终端编译文件

在 settings.json 中,我添加了 bash shell 的路径,如下所示:

{
  "commandline": "powershell.exe",
  "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
  "hidden": false,
  "name": "Windows PowerShell"
},
{
  "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
  "hidden": false,
  "name": "Azure Cloud Shell",
  "source": "Windows.Terminal.Azure"
},
{
  "commandline": "C:\\msys64\\usr\\bin\\bash.exe -i -l",
  "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
  "hidden": false,
  "name": "msys2"
},
{
  "guid": "{495d29da-4bfb-4956-abd8-ed1760703232}",
  "commandline": "cmd.exe",
  "hidden": false,
  "name": "cmd.exe"
}
Run Code Online (Sandbox Code Playgroud)

msys windows-terminal

7
推荐指数
2
解决办法
4917
查看次数

在Linux上从ARM转换为*.hex到*.bin

我想使用st-flash命令将程序上传到我的STM32F4 Discovery板.问题是,当我尝试上传*.hex或*.elf文件时,它只是无法正常工作.我尝试了很多方法(比如使用xxd)从*.elf或*.hex转换为*.bin但是当我上传它时仍然无法正常工作.是的,我尝试从其他Windows计算机上传hex文件,它的工作原理.

hex文件的示例(前三行,只是为了向您展示它的内容):

:020000040800F2
:100000000000022099020008A1020008A5020008D1
:10001000A9020008AD020008B102000800000000BB
Run Code Online (Sandbox Code Playgroud)

我的操作系统是Ubuntu 14.04 LTS.

感谢帮助!

linux binary hex file-conversion stm32f4discovery

6
推荐指数
2
解决办法
1万
查看次数