我将所有内容转换为Git供我个人使用,我发现存储库中已有一些旧版本的文件.如何根据文件的"修改日期"以正确的顺序将其提交到历史记录,以便我有一个准确的文件历史记录?
我被告知这样的事情会起作用:
git filter-branch --env-filter="GIT_AUTHOR_DATE=... --index-filter "git commit path/to/file --date " --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud) 有两种方法可以捕获命令行的输出bash:
Legacy Bourne shell反手``:
var=`command`
Run Code Online (Sandbox Code Playgroud)$() 语法(据我所知,特定于Bash,或至少不受原始Bourne等非POSIX旧shell支持)
var=$(command)
Run Code Online (Sandbox Code Playgroud)与反引号相比,使用第二种语法有什么好处吗?或两者完全相同?
我有两个问题,可以使用一些帮助来理解它们.
${}和之间有什么区别$()?我理解这()
意味着在单独的shell中运行命令并放置$意味着将值传递给变量.有人能帮助我理解这个吗?如果我错了,请纠正我.
如果我们可以使用for ((i=0;i<10;i++)); do echo $i; done并且它工作正常那么为什么我不能用它while ((i=0;i<10;i++)); do echo $i; done?两者的执行周期有什么不同?
如果之前的退出代码为 0,我想显示绿色笑脸,如果不成功则显示红色笑脸。
基本上我想做这个提示,但包括其他东西。
PS1='\u@\h:\w `if [ $? = 0 ]; then echo \[\e[32m\]:\)\[\e[37m\]; else echo \[\e[31m\]:\(\[\e[37m\]; fi` $ '
Run Code Online (Sandbox Code Playgroud)
我想将条件逻辑抽象为一个函数,但是当我尝试将这两个组合在一起时,会显示转义字符而不是颜色。
smiley()
{
if [ $? == 0 ]; then
echo ':)'
else
echo ':('
fi
}
RED="\033[1;5;91m"
GREEN="\033[1;5;92m"
NONE="\033[m"
NORMAL="\[\033[0m\]"
YELLOW="\[\033[1;4;93m\]"
MAGENTA="\[\033[35m\]"
WHITE="\[\033[1;37m\]"
BLINK="\[\033[5m\]"
#INVERT="\[\e[7m\]"
#OFF="\[\033[m\]"
PS1="${YELLOW}\u${MAGENTA}@${YELLOW}\h${NORMAL}:${WHITE}\w $(smiley)\n"
Run Code Online (Sandbox Code Playgroud)
我什至尝试了一条线,但它也不起作用。
PS1='\[\033[1;4;93m\]\u\[\033[35m\]@\[\033[1;4;93m\]\h\[\033[0m\]\[\033[1;37m\] \W if [ $? = 0 ]; then echo \[\e[32m\]:\)\[\e[37m\]; else echo \[\e[31m\]:\(\[\ e[37m\]; fi\n'
Run Code Online (Sandbox Code Playgroud)
如果没有 PROMPT_COMMAND 有什么办法可以做到这一点?
似乎无法在网上找到这个答案...
我有一个字符串变量(外部源),新行"\n"编码为字符串.
我想用实际的新行回车替换这些字符串.下面的代码可以达到这个目的......
echo $EXT_DESCR | sed 's/\\n/\n/g'
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将结果存储到它自己的变量中时,它会将它们转换回字符串
NEW_DESCR=`echo $EXT_DESCR | sed 's/\\n/\n/g'`
Run Code Online (Sandbox Code Playgroud)
如何实现这一目标,或者我做错了什么?
这是我的代码,我一直在测试,以尝试获得正确的结果
EXT_DESCR="This is a text\nWith a new line"
echo $EXT_DESCR | sed 's/\\n/\n/g'
NEW_DESCR=`echo $EXT_DESCR | sed 's/\\n/\n/g'`
echo ""
echo "$NEW_DESCR"
Run Code Online (Sandbox Code Playgroud)