基础执行方法
-
直接执行
在终端输入命令后按回车:ls -l # 列出当前目录文件 date # 显示系统时间
-
执行脚本文件
- 方法1:用解释器直接运行
bash script.sh
- 方法2:添加可执行权限后运行
chmod +x script.sh # 添加执行权限 ./script.sh # 通过路径执行(当前目录需加./)
- 方法1:用解释器直接运行
高级执行技巧
-
命令组合
- 连续执行(无论成功与否):
command1 ; command2
- 仅当上一条成功时执行:
command1 && command2
- 管道传递数据:
cat file.txt | grep "error"
- 连续执行(无论成功与否):
-
后台执行
在命令末尾加&
:sleep 60 & # 后台运行60秒睡眠 jobs # 查看后台任务
-
命令替换
将命令输出作为参数:echo "当前时间: $(date)"
环境与权限控制
-
指定环境变量
临时修改变量后执行:PATH="/custom/bin:$PATH" mycommand
-
切换用户执行
sudo -u username command # 指定用户 sudo command # 管理员权限
-
超时控制
限制运行时间:timeout 5s long_running_task # 5秒后终止命令
调试与错误处理
-
查看执行过程
bash -x script.sh # 打印每条执行的命令
-
错误重定向
command 2> error.log # 错误输出到文件 command &> all.log # 所有输出重定向
安全注意事项
-
外部输入风险
避免直接执行用户输入:# 危险示例! read user_input eval $user_input # 可能执行恶意命令
-
脚本安全建议
- 使用
set -e
使脚本遇错时自动退出 - 用
[[ ]]
替代[ ]
进行条件测试,避免解析错误 - 下载脚本后先检查内容再执行
- 使用
特殊场景处理
-
远程执行命令
ssh user@host "command"
-
交互式命令自动化
通过expect
工具处理提示:expect -c 'spawn ssh user@host; expect "password:"; send "mypwd\\r"; interact'
性能优化
-
减少子进程开销
使用内置命令替代外部程序:echo {1..100} # 优于seq 1 100
-
并行执行加速
for i in {1..10}; do (process $i) & done wait # 等待所有后台任务完成
引用说明参考Linux官方文档(man7.org)及Bash 5.1手册,遵循POSIX标准,安全建议依据CIS Linux安全基准,示例已在Ubuntu 22.04和CentOS 7验证。
最佳实践:生产环境执行关键命令前,建议在测试环境验证,并使用echo
预览变量展开结果,复杂操作应封装为有错误检测的脚本,通过版本控制系统管理。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9804.html