在linux下将命令行串起来
在linux下将命令行串起来详细介绍
在 Linux 中,通过命令连接符可以将多个命令组合成一个更复杂的命令行,实现流程控制、数据传递或批量操作。以下是常用的命令串联方法:
一、
按顺序执行(不关心前序命令结果)
使用 分号(;),无论前一个命令是否执行成功,都会按顺序执行后续命令。
语法:
bash
命令1 命令2 命令3
示例:
bash
/tmp test_dir test_dir/file.txt
二、
条件执行(根据前序命令的退出状态)
1.
仅当前序命令成功时执行后续命令(&&)
使用 逻辑与(&&),当前一个命令的退出状态为 0(成功)时,才会执行后一个命令。
语法:
bash
命令1 命令2
示例:
bash
old_file.txt new_file.txt old_file.txt
2.
仅当前序命令失败时执行后续命令(||)
使用 逻辑或(||),当前一个命令的退出状态非 0(失败)时,才会执行后一个命令。
语法:
bash
命令1 命令2
示例:
bash
mydir
3.
组合条件执行(&& 和 || 混合)
可以链式组合,实现更复杂的逻辑:
bash
命令1 命令2 命令3
三、
数据传递(管道与重定向)
1.
管道(|)
将前一个命令的输出作为后一个命令的输入(标准输入)。
语法:
bash
命令1 命令2 命令3
示例:
bash
2.
重定向输入 / 输出(<、>、>>、2>、&>)
>:覆盖输出到文件(标准输出)。>>:追加输出到文件(标准输出)。<:从文件读取输入。2>:重定向错误输出到文件。&>或>&:同时重定向标准输出和错误输出到文件。
示例:
bash
/var/log log_files.txthttps://example.com > error.log
non_exist_file output.log
3.
tee 命令(同时输出到终端和文件)
bash
命令 文件命令 文件
示例:
bash
output.txt
四、
子 shell 与分组执行
1.
括号分组(子 shell)
使用 () 将多个命令分组,在子 shell 中执行,共享同一环境(如变量)。
语法:
bash
命令1 命令2 命令3
示例:
bash
cd /tmp dir1 dir2
2.
命令替换(将命令输出作为参数)
使用 $(命令) 或反引号 `命令` 捕获命令输出,作为其他命令的参数。
语法:
bash
命令 子命令
示例:
bash
/backup/+"
五、
后台执行与作业控制
1.
后台运行(&)
在命令末尾加 &,使命令在后台运行,不阻塞终端。
语法:
bash
命令
示例:
bash
bigfile.tar.gz /data
2.
多个后台命令(分号 + &)
bash
命令1 命令2 命令3
六、
综合示例
1.
过滤日志并统计行数
bash
app.log
2.
批量重命名文件
bash
*.txt " .txt}.md"
3.
下载文件并校验(成功后删除临时文件)
bash
https://example.com/file.tar.gz sha256sum file.tar.gz file.tar.gz
总结
- 分号(;):无条件顺序执行。
- 逻辑与(&&):前序成功则执行后续。
- 逻辑或(||):前序失败则执行后续。
- 管道(|):传递数据到后续命令的标准输入。
- 重定向(>、>>、2> 等):改变输入输出目标。
- 子 shell(()):分组执行或捕获输出。
根据需求选择合适的连接符,可高效组合命令实现自动化任务或复杂数据处理。