跳至主要内容

shell一次性执行多条命令

 1.每个命令之间用;隔开

说明:各命令的执行给果,不会影响其它命令的执行。换句话说,各个命令都会执行,但不保证每个命令都执行成功。

2.每个命令之间用&&隔开
说明:若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。

3.每个命令之间用||隔开
说明:||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。

比如:

sudo -u root whoami && sudo -u root unzip -o -d /apps /apps/zhenxi.zip && sudo -u root

进入Docker时,始终是镜像的初始状态,需要手动开启各种服务,以及之前做过但没有保留状态的操作,如果比较多的时候,就比较麻烦,所以可以编写一个文件,包含我们所需要运行的所有命令,这样直接运行该文件就可以自动完成准备工作。

以开启apache和mysql服务为例:

1、编写脚本文件,列出所有需要执行的命令(自定义名称为run.sh)

#!/bin/sh
service apache2 start;
service mysql start;

#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。

其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。

比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等。

—–来源

2、修改权限

chmod -R 777 run.sh

3、执行该脚本文件

./run.sh

评论

此博客中的热门博文

使用小丸工具箱将使用了VSFilterMod插件的Aegisub字幕文件压制到视频中

 转自:https://zhuanlan.zhihu.com/p/103732408 通常视频字幕有三种存在方式:外挂字幕、内挂字幕、内嵌字幕。 外挂字幕指的是视频文件与字幕文件分离,使用者需要通过视频播放器的功能手动加载字幕到视频中。 内挂字幕与外挂字幕基本一致,只不过是将字幕文件一同封装进了支持字幕流的容器中(例如.mkv)。 上述字幕发行方式的优点是:1. 可以不需要将视频压制,只需要直接发布字幕或者简单地将字幕封装即可发布,节约发布者大量时间。2. 通常挂载的字幕分辨率不受视频分辨率影响,拥有最清晰锐利的观感。3. 观众可根据自身需要调节字幕。 缺点也很明显:1. 需要播放器支持。比如绝大多数手机自带播放器并不支持播放字幕流, 同时绝大多数播放器默认不支持VSFilterMod特效插件 。 2. 字幕不受保护,可能会被他人盗取,重新加工后二次发布。3. 有时候字幕内使用了用户未安装的字体,会导致播放字幕时字体被“降级”为默认字体宋体。 4. 若使用了大量特效则会导致字幕渲染掉帧、卡顿。 第三种方式的内嵌字幕,也叫硬字幕。这种方式需要将视频解码后通过字幕滤镜插件,将字幕完全与视频帧融合在一起重新编码。也就是说内嵌字幕视频中的字幕是完全和视频融为一体的。 内嵌字幕的兼容性最高,上述挂载字幕的缺点全部都没有,但是压制过程非常耗时且相对复杂。本文将介绍如何使用小丸工具箱进行对使用了  VSFilterMod  特效插件的.ass字幕压制到视频中,变为内嵌字幕视频。 本文由小Hshan编辑,保留原作者信息可自由转载。 本文必要软件: 小丸工具箱(官网链接已失效):  maruko.appinn.me/ 小丸工具箱r236绿色版网盘下载地址: 百度网盘: https://pan.baidu.com/s/1bhoEfkBMnShV8sIixrOFcg https://pan.baidu.com/s/1bhoEfkBMnShV8sIixrOFcg  提取码:gsi2 Mega: mega.nz/# VSFilterMod x86版:  https://github.com/sorayuki/VSFilterMod/releases/tag/r5.2.1 Avisynth 2.6.0 32位: sourceforge....

科学上网工具Sub-Store部署使用

  转自: https://www.qichiyu.com/268.html Openwrt Docker安装: docker run -it -d \ --restart=always \ -e " SUB_STORE_BACKEND_SYNC_CRON =55 23 * * *" \ -e SUB_STORE_FRONTEND_BACKEND_PATH=/CKg2abstVnOeRpm1aB4G \ --net=host \ -v /etc/sub-store:/opt/app/data \ --name sub-store \ xream/sub-store VPS安装: docker run -it -d \ --restart=always \ -e " SUB_STORE_BACKEND_SYNC_CRON =50 23 * * *" \ -e SUB_STORE_FRONTEND_BACKEND_PATH=/T3B9dgzBzdRbBF8Aqx7P \ -p 3001:3001 \ -v /etc/sub-store:/opt/app/data \ --name sub-store \ xream/sub-store Docker compose代码: services: sub-store: stdin_open: true tty: true restart: always environment: - SUB_STORE_BACKEND_SYNC_CRON =50 23 * * * - SUB_STORE_FRONTEND_BACKEND_PATH=/iversonlive123456789 ports: - 3001:3001 volumes: - /etc/sub-store:/opt/app/data container_name: sub-store image: xream/sub-store networks: {} Sub-store地址: 如果你没有使用域名,那么请访问 http://192.168.0.188:3001?api=http://192....