【发布时间】:2010-11-18 12:02:42
【问题描述】:
我的历史中有这样的命令(Linux bash shell):
1119 for dir in `ls -d MyMod.*`; \
do echo $dir; \
svn copy --parents $dir $REPO/tags/MyMod_20101115/$dir -m"MyMod tag for 20101115"; \
done
其中 1119 是命令编号。
(请注意,该命令实际上都在一行中,并且不包含任何 \ 字符。我只是将它们放入此处以使其适合页面)
是否有一个单行可以用来将上面的从 20101115 修改为 20101118(代表今天日期的标签)。显然我们可以创建一个脚本来执行此操作。
这不是关于 SVN 的问题。上面的示例是一个 SVN 示例,但问题的目的是知道如何进行替换,特别是考虑到它在历史中并使用了 for。我们尝试将 echo !1119 与 sed 混合使用,但没有得到想要的结果。
【问题讨论】:
-
我认为您正在寻找如何从 ~/.bash_history 中提取某些行?
-
用替换修改历史行并执行。执行它可以用 xargs 来完成,虽然我需要去掉命令号。实际上,我正在尝试执行 ^$OLDDATE^$NEWDATE 但不是针对最近的命令。很惊讶这比我想象的要困难。