我的预提交钩子压缩/编译css / js文件。发生错误时,我只需使用echo
输出错误,然后exit 1
。但是,写入控制台的文字是 WHITE ,因此在发生错误时不容易看到。
是否有其他方法可以写入控制台(errOut?),使文字 RED ?
答案 0 :(得分:8)
处理此问题的最佳方法是将您的钩子输出着色而不是PS1提示,如下所示:
class HttpInterceptor {
constructor() {
['request', 'requestError', 'response', 'responseError']
.forEach((method) => {
if(this[method]) {
this[method] = this[method].bind(this);
}
});
}
}
class AuthenticationInterceptor extends HttpInterceptor {
/* ngInject */
constructor($q, $window) {
super();
this.$q = $q;
this.$window = $window;
}
responseError(rejection) {
var authToken = rejection.config.headers.Authorization;
if (rejection.status === 401 && !authToken) {
let authentication_url = rejection.data.errors[0].data.authenticationUrl;
this.$window.location.replace(authentication_url);
return this.$q.defer(rejection);
}
return this.$q.reject(rejections);
}
}
注意:需要使用red='\033[0;31m'
green='\033[0;32m'
yellow='\033[0;33m'
no_color='\033[0m'
echo -e "\n${yellow}Executing pre-commit hook${no_color}\n"
... do your hook stuff ...
if [[ something bad happens ]]; then
>&2 echo -e "\n${red}ERROR - Something BAD happened!\n${no_color}"
exit 1
fi
echo -e "${green}Git hook was SUCCESSFUL!${no_color}\n"
和-e
- 它指定解释特殊字符,如颜色和新行。 (http://ss64.com/bash/echo.html)
答案 1 :(得分:1)
定制你的bash可能是个好主意,如下所示:
0 ;) $ cat ~/.bashrc
PS1="\[\033[01;37m\]\$? \$(if [[ \$? == 0 ]]; then echo \"\[\033[01;32m\];)\"; else echo \"\[\033[01;31m\];(\"; fi) $(if [[ ${EUID} == 0 ]]; then echo
'\[\033[01;31m\]\h'; else echo '\[\033[01;32m\]\u@\h'; fi)\[\033[01;34m\] \w \$\[\033[00m\] "
它显示一张绿色的幸福面孔;)如果最后一个命令没有错误,一个红色的悲伤面孔;(如果它失败了,例如:
0 ;) $ cat 1.sh
#!/bin/bash
exit 1
0 ;) $ ./1.sh
1 ;( $
0 ;( $ cat 1.sh
#!/bin/bash
exit 0
0 ;) $ ./1.sh
0 ;) $
您可以根据需要自定义输出。
该示例来自here
<强>更新强>
对于Windows的Git 2.5,它应该是
if ! \$?; then
PS1="\[\e[1;32m\]Nice Work!\n\[\e[0;32m\]\u@\h \[\e[0;33m\]\w\[\e[0;37m\]\n\$ "
else
PS1="\[\e[1;31m\]Something is wrong!\n\[\e[0;32m\]\u@\h \[\e[0;33m\]\w\[\e[0;37m\]\n\$ "
fi