Linux系统下连续执行多条命令的用法指南

在 Ubuntu 系统中,可以通过多种方式连续执行多条命令,常用方法包括使用命令分隔符(;&&||)、管道(|)或编写 shell 脚本。以下是具体示例:

一、使用分号(;)无条件顺序执行

无论前一条命令是否执行成功,均按顺序执行后续命令。
语法

命令1; 命令2; 命令3

示例

  1. 更新系统并安装软件(不检查更新是否成功,强制安装):

    sudo apt update; sudo apt install -y python3-pip; pip3 --version
    • 先更新软件源,再安装 python3-pip,最后查看版本。
  2. 文件操作组合(创建目录、进入目录、新建文件):

    mkdir -p ~/demo; cd ~/demo; touch example.txt
    • 在用户目录下创建 demo 目录(-p 确保父目录存在),进入该目录,创建空文件 example.txt

二、使用逻辑与(&&)仅前一条成功时执行下一条

语法

命令1 && 命令2 && 命令3

示例

  1. 安全更新与安装(仅当更新成功时才安装):

    sudo apt update && sudo apt install -y nginx && systemctl start nginx
    • apt update 失败(如网络问题),后续的 apt install 和启动 Nginx 命令不会执行。
  2. 条件文件操作(仅当文件存在时删除并备份):

    test -f ~/data.csv && rm ~/data.csv && cp /backup/data.csv ~/
    • 先检查 data.csv 是否存在(test -f 返回真),再删除旧文件并恢复备份。

三、使用逻辑或(||)仅前一条失败时执行下一条

语法

命令1 || 命令2 || 命令3

示例

  1. 错误处理(若命令失败,输出提示):

    sudo service nginx start || echo "Nginx 启动失败,请检查服务状态"
    • 若启动 Nginx 失败,打印错误信息(不影响后续流程)。
  2. 备选命令执行(根据系统版本选择安装方式):

    apt install -y docker.io || snap install docker
    • 若通过 apt 安装 Docker 失败,尝试通过 snap 安装。

四、使用管道(|)传递命令输出

将前一条命令的输出作为后一条命令的输入,适用于数据处理场景。
语法

命令1 | 命令2 | 命令3

示例

  1. 过滤日志文件(查找包含“error”的行并统计数量):

    cat /var/log/app.log | grep "error" | wc -l
    • cat 读取日志文件,grep 过滤含“error”的行,wc -l 统计行数。
  2. 实时监控进程(筛选指定进程并排序):

    ps -ef | grep python | grep -v grep | sort -k 8
    • 列出所有 Python 进程(排除 grep 自身),按 CPU 使用率排序。

五、在 shell 脚本中组合多条命令

将多条命令写入 .sh 文件,通过 bash 脚本名.sh 执行,适合复杂流程自动化。
示例脚本(deploy.sh

#!/bin/bash
# 停止旧服务
sudo systemctl stop myapp.service || echo "旧服务不存在,跳过停止"
# 拉取最新代码
git pull origin main && echo "代码更新成功" || echo "代码拉取失败"
# 重启服务
sudo systemctl start myapp.service && systemctl status myapp.service

执行

chmod +x deploy.sh && ./deploy.sh

六、高级用法:子shell 与后台执行

  1. 在子shell 中执行多条命令(不影响当前终端环境):

    (cd ~/project; make clean; make install)
    • 在子shell 中进入项目目录,清理并安装,执行完后回到当前目录。
  2. 后台异步执行(用 & 结尾,适用于耗时任务):

    (sudo apt update && sudo apt upgrade -y) &
    • 在后台更新系统,前台可继续操作(用 jobs 查看后台任务,fg 切回前台)。

总结

  • ;:无条件顺序执行,不检查前序命令状态。
  • &&:仅前序命令成功时执行后续命令,用于依赖关系。
  • ||:仅前序命令失败时执行后续命令,用于错误处理。
  • |:传递数据到下一条命令,用于流式处理。
  • 脚本:适合复杂流程,可添加注释、变量和逻辑判断(如 if 语句)。

根据场景选择合适的分隔符,可大幅提升命令行操作效率,尤其在自动化脚本、服务器运维和数据处理中广泛应用。

京ICP备13031296号-4