我试图合并多个linux命令在一行执行部署操作。 例如
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
我试图合并多个linux命令在一行执行部署操作。 例如
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
当前回答
我发现使用;分离命令只在前台工作。例如:
cmd1;cmd2;Cmd3 & -将只在后台执行Cmd3,而 如果没有错误,cmd1 && cmd2 && cmd3 & -将在后台执行整个链。
为了满足无条件执行,使用括号解决了这个问题:
(cmd1;cmd2;Cmd3) & -将在后台执行命令链,即使任何步骤失败。
其他回答
要一次性运行它们,你可以使用管道键“|”,如下所示:
$ cd /my_folder | rm *.jar | svn co path to repo | mvn compile package install
cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install
使用;
不管第一个命令cmd1是否成功运行,总是运行第二个命令cmd2: $ CD myfolder;不管CD到我的文件夹是否成功,运行Ls
使用& &
当第一个命令cmd1执行成功后,再执行第二个命令cmd2: $ CD myfolder && ls #只在CD到myfolder后运行ls
使用| |
当第一个命令cmd1执行失败时,执行第二个命令cmd2: $ CD myfolder || ls #如果CD到myfolder失败,' ls '将运行
你可以用分号分隔命令:
cd /my_folder;rm *.jar;svn co path to repo;mvn compile package install
你是这个意思吗?
只有一个&号有什么用? 今天早上,我在XFCE面板(Manjaro+XFCE)中创建了一个启动器,以同时启动2个密码管理器:
sh -c "keepassx && password-gorilla"
or
sh -c "keepassx; password-gorilla"
但它不像我想的那样工作。也就是说,第一个应用程序启动,但第二个应用程序只有在前一个应用程序关闭时才启动
然而,我发现(只有一个&号):
sh -c "keepassx & password-gorilla"
现在它就像我想要的那样…