我想运行一个命令,然后调出第二个命令,但在按回车键之前先对其进行修改。(Cygwin)
我通常像这样输入:
svn up 8.0; ./merge.py 8.0 12345
我还必须对不同的版本和修订版执行此操作,因此之后,我会为每个版本和修订版再次输入所有内容:
svn up 8.1; ./merge.py 8.1 12345
问题是,12345 总是变化,所以我必须向上箭头并删除并重新输入它。
所以我想要做的是输入这个:
m8 12345
或者
m81 12345
或者
m8 54321
对于每个不同的情况。结果将是:
$ m8 12345
$ svn up 8.0; ./merge.py 8.0 12345
(但实际上并未运行,只是在提示符中为我输入)
$ m81 12345
$ svn up 8.1; ./merge.py 8.1 12345
(但实际上并未运行,只是在提示符中为我输入)
$ m8 54321
$ svn up 8.0; ./merge.py 8.0 54321
(但实际上并未运行,只是在提示符中为我输入)
此时我可以按回车键,或将 12345 改为其他,或者什么也不做。
答案1
创建alias
命令第一部分的 。完成后,您就可以使用unalias
它了。
在您的示例中您要做的如下:
alias m8='svn up 8.0; ./merge.py 8.0'
然后你可以这样做:
m8 12345
完成后,您可以删除别名:
unalias m8
答案2
使用bash
的历史记录功能。将以下内容放入您的.bashrc
文件中:
shopt -s histverify
现在,您可以在命令行中输入Controlr,然后开始输入svn up
。它应该会搜索您的历史记录中第一个以“svn up”开头的命令。反复按下Controlr将会找到以前的此类命令。如果您在任何时候按下Enter,histverify
我们上面设置的选项将导致当前显示的命令显示在命令行上以供编辑,而不是立即执行。
这并非您所要求的,但可能效果一样好。可以编写一个行为类似的函数 ( $ m 8.1 54321
),但细节比较复杂。
答案3
编写一个 shell 脚本或函数(例如,名为m
),执行如下操作:
验证参数:
$1
和$2
是数字。
计算ver_num
从$1
;例如,8
–>8.0
,81
–>8.1
my_command="svn up $ver_num; ./merge.py $ver_num $2"
echo "$my_command"
history -s "$my_command"
您必须以m 8 12345
(而不是m8 12345
)的形式运行它。该history -s
命令会将“$my_command”放入历史列表而不执行它,因此您应该能够按Cursor Up,可选地编辑该命令,然后按Enter–– 或不执行任何操作。