Linux中Alias多行命令用法

嗯...Linux 中的别名命令...真的很有限...你知道...你不能直接创建多行...
例如...你想创建一个别名...让它运行一个命令...然后运行另一个命令...你可以使用分号...分号就是它;啊...
像这样... alias myalias='echo "Start"; ls; echo "End"'...一旦定义...你使用myalias...它会先echo "Start"...然后ls...最后echo "end"...
但是注意...如果你用分号连接...前面的命令无论成功与否都会被执行...后面的命令都会被执行...这是前面的命令我会成功...它会被执行...然后你必须使用&&...和符号...
例如...alias myalias='cd /home/user; ls && echo "First Directory"'... 此 cd... 如果成功... ls 将运行... 如果 cd 失败... ls 将不会运行... 相反,echo "First Directory"...
或者... 如果您想要... 如果上一个命令失败... 那么将执行以下命令... 然后使用 ||... 或符号此...'类似 | echo "无法进入目录"'...这张cd...如果失败... echo "无法进入目录"将会被执行...
另外...可以使用大括号...中括号...来加入一组命令...关机后...这些命令将在一个进程中执行...
例如 echoali "{S'tar..." ls;回声“完成”; }'...这样定义...使用myalias...它会把这三个命令一起运行...
但是要小心...括号和命令之间必须有空格...并且...末尾必须有分号...
这种方法的好处是...它们运行在当前Shell进程中...而不是在新打开的小进程中...
比如有很多,特别复杂...for...或者很多循环...最推荐的方法...是先定义一个函数...然后使用别名来调用函数...
例如...您可以创建一个函数... multitask_func() { echo "Task 1 starts";命令1 ; echo "任务1 完成"; echo "任务2 开始";命令2 ; }...这样定义函数后...然后alias...alias myalias='multitask_func'...
使用myalias...会执行multitask_func函数的内容...这样方便多了...一切都可以在函数中完成...多行命令...条件判断...笨拙...就这样吧...这是一个函数...在~/.bashrc或~/.zshrc这样的文件中...设置后...可以打开一个新终端...或者使用source ~/.bashrc...使其有效...
但是要小心...直接在Shell中定义的别名...是临时定义的...那么这个别名只在本次Shell会话中有效...如果要重启就关闭“Shell”...有效...需要在配置文件中设置...
另外...越复杂的别名...或者复杂的功能...我建议单独测试...例如单独运行这个命令...或者单独运行这个函数...看看是否可以正常工作...然后集成到alias中或者函数...
你还应该注意安全问题...不要使用inali'我的例子-aliasrf...$1 '...这是非常危险的...如果用户输入是一个目录...那么整个目录将被删除...所以最好小心...
一个小例子...例如,如果你想有一个备份别名...你可以创建一个函数... backup_func() { echo "Backup..."; tar czf backup_$(data +%F).tar.gz ~/Documents && echo "备份完成!"; || echo "预订失败!"; ...然后alias backup='backup_func'...使用backup...它会打包~/Documents目录...并且备份文件名有日期...根据打包结果...会输出备份完成!或者备份失败! ...
总之...方法就那么几个...可以命名多行命令...简单实用...

请问我在Linux下想实现一个终端同时通过SSH执行其它多个终端内的shell脚本怎么实现?

北京2 02 3 年4 月1 日,发现该方法同时执行命令:使用带变量的ssh,如ssh$IP_1 02 -l$User "sh1 02 .sh"和ssh$IP_1 03 -l$User "sh1 03 .sh",否则执行的命令会一一执行。
执行完成后,将创建一个日志文件,以便更轻松地查看进度。

在Linux系统中使用Shell实现多线程运行任务(多任务并发执行) 2022-05-30

啊,是的,是的,就是这样。
2 02 2 年这样做将是一件非常头疼的事情。
我当时在一个城市,具体是哪个城市并不重要。
无论如何,剩下的存储空间就这么少了,大概也就几百GB吧。
具体记不太清了,不过差不多已经满了。
必须合并并压缩一组 fastq 文件,否则下一步将无法完成。

想一想,fastq文件read1 和read2 需要分别合并然后压缩。
一个示例,读取 1 合并并压缩,一天,读取 2 合并并压缩,另一天。
一批几十个样品半天就能处理完,不太现实。
我当时就很困惑,我该怎么办?
我想,read1 和read2 可以一起工作吗?这样,时间就减半了。
查了资料,发现Shell中是可以实现多线程的。
就像你说的,在命令中添加“&”并将其设置为背景。
然后在最后添加一个“等待”,等待所有后台处理完成,然后退出。
就是这么简单。

其实,如果任务不多,手动添加一些“&”和“等待”就可以了。
但是那一套任务,几十个样本,read1 read2 ,上百条命令,手动添加,我后来才意识到,不行,我需要写一个脚本。

就用循环,for循环,批量运行。
{“命令1 &”; “命令2 &”; ...; “commandN &”},后跟“wait”。
你看,逐行运行效率要高得多。
但你不能盲目奔跑。
如果线程太多,CPU就会死机,那就更糟糕了。
肯定有一个限制,比如1 00以内。
网上说这个限制可以进一步研究,比如看内存,或者用某些命令来限制,但我当时只是用了1 00,并没有深入研究。

就这样,解决了。
其实,多线程,尤其是shell脚本的实现,并不难,关键是用它。
你提到的知乎文章写得很好,解释得很清楚。
那个博主写的文章很复杂。
我读了好几遍,很困惑。
我稍后再谈。
我们先来看看可以用什么。