我试图将bash中的系统命令链接到我的git命令上。
例如:git commit -m cat commit_message.txt
。
我注意到我反复使用完全相同的4个命令,并且我想创建一个别名:
git add -A && git commit -m cat ~/my_project/commit_message.txt && git push origin dev && git push heroku-staging master
。
我喜欢在commit_message.txt文件中记录我对我的应用所做的更改,并在每次更改时更新它,所以如果我能从中读取此日志,那么它是理想的每当我想要改变时终端。
我绝不是终极向导,所以我希望这是一个我还没有遇到的简单解决方案。我搜索了很多,并没有找到类似用途。
答案 0 :(得分:4)
git commit
有一个-F
(--file
)可以完全按照您的意愿行事,而不使用任何shell魔法:只需使用git commit -F commit_message.txt
。
答案 1 :(得分:2)
您需要使用命令替换来将一个命令的输出用作另一个命令的参数:
git commit -m "$(< commit_message.txt)"
您还可以使用git commit -a
添加所有文件,因此无需拨打git add
:
git commit -am "$(< commit_message.txt)"
我会为它创建一个函数:
do_git_stuff() {
# Du stuff...
: # The colon is here because a function cannot be empty. This can be removed when you
# add some "real" code
}
把它绑在一起:
do_git_stuff() {
git commit -am "$(< commit_message.txt)" \
&& git push origin dev \
&& git push heroku-staging master
}
什么是"$(< file.txt)"
?
<
运算符意味着您应该从file.txt
获取stdin。命令替换($(...)
)将返回写入stdout的内容。引号用于避免单词拆分。
答案 2 :(得分:1)
你可以写一个剧本。
为您的可执行文件创建$HOME/bin
目录:
mkdir -p ~/bin
将目录添加到$PATH
中的~/.bashrc
。
export PATH=$PATH:$HOME/bin
更新当前终端会话中的环境:
source ~/.bashrc
创建脚本:
git_commit_file="$HOME/bin/git-commit"
cat > "$git_commit_file" <<'EOS'
#!/bin/bash -
message_file="$1"
# Add your commands here ...
EOS
chmod +x $git_commit_file
现在您可以运行git-commit message.txt
。
顺便说一下,创建别名就像在alias name=command
中添加~/.bashrc
一样简单,例如:
alias ls='ls --color=auto'
但我建议写一个剧本。
答案 3 :(得分:0)
创建一个系统别名,你可以这样做:
@After
public void executedAfterEach() throws Exception {
// dispose of dependent Windows...
EventQueue.invokeAndWait( new Runnable(){
@Override
public void run() {
if( app.mainFrame != null ){
for( Window window : app.mainFrame.getOwnedWindows() ){
if( window.isVisible() ){
System.out.println( String.format( "# disposing of %s", window.getClass() ));
window.dispose();
}
}
}
}
});
}
或者如果您只想要一个会话别名(仅在终端活动期间可用),您可以执行以下操作:
alias myName=myCommand
要启动它,您可以执行myName=myCommand
然后启动几个命令,你可以尝试使用管道:
$myName