基础命令执行方式
-
直接执行
在终端输入命令后按回车:ls -l # 列出当前目录内容 date # 显示系统时间
- 关键点:命令执行后立即返回结果,适用于单次操作。
-
执行脚本文件
通过脚本批量执行命令:# 创建脚本 echo 'echo "Hello World!"' > hello.sh chmod +x hello.sh # 添加执行权限 ./hello.sh # 输出:Hello World!
- 权限错误处理:若提示
Permission denied
,使用chmod +x 文件名
授权。
- 权限错误处理:若提示
命令执行的控制
-
顺序执行
用 分隔多个命令(无论前序命令是否成功):make ; make install # 先编译后安装
-
条件执行
&&
:前序命令成功(退出状态码为0)才执行后续命令git pull && npm build # 拉取代码成功后构建
- :前序命令失败才执行后续命令
ping -c1 example.com || echo "Host unreachable"
-
后台执行
在命令末尾加&
,释放终端:python long_running_task.py & # 后台运行 jobs -l # 查看后台任务 fg %1 # 将任务1切回前台
环境变量与路径
-
环境变量影响
变量定义直接影响命令行为:export PATH=$PATH:/custom/bin # 添加自定义路径 echo $HOME # 查看用户家目录
-
命令搜索路径
Bash按$PATH
变量顺序查找命令:echo $PATH # 输出:/usr/bin:/bin:/usr/local/bin which ls # 查看ls命令的实际路径
进阶执行方法
-
子Shell执行
用 创建独立子进程环境:(cd /tmp && touch test.txt) # 在子Shell中操作,不影响当前目录
-
命令替换
将命令输出作为参数:echo "Today is $(date)" # 输出:Today is [当前日期]
-
管道传递数据
用 连接命令,前序输出作为后序输入:cat log.txt | grep "ERROR" | wc -l # 统计错误行数
安全性与最佳实践
-
权限管理
- 普通用户需
sudo
执行特权命令:sudo systemctl restart nginx
- 避免使用
sudo
执行来源不明的脚本。
- 普通用户需
-
安全准则
- 警惕命令注入:避免直接执行用户输入的字符串
# 错误示例(危险!) user_input="; rm -rf /" eval "echo $user_input" # 可能导致灾难性删除
- 使用引号:变量包裹在双引号中防止意外解析:
filename="file with spaces.txt" rm "$filename" # 正确
- 警惕命令注入:避免直接执行用户输入的字符串
-
验证命令来源
- 下载脚本后检查哈希值:
sha256sum script.sh # 对比官方提供的哈希
- 阅读第三方脚本内容后再执行。
- 下载脚本后检查哈希值:
常见问题解决
-
命令未找到(Command not found)
检查拼写错误或安装缺失包:sudo apt install missing-package # Debian/Ubuntu sudo yum install missing-package # CentOS/RHEL
-
权限不足
使用sudo
或通过chown
/chmod
调整文件权限。 -
退出状态码
通过 获取上条命令的返回值(0表示成功):ls /nonexistent echo $? # 输出非0值(通常为2)
Bash命令执行的核心在于理解命令结构、环境变量、权限控制和数据流(管道/重定向),始终遵循最小权限原则,验证外部脚本安全性,并善用条件执行提高效率,实践时可通过 man
命令查看手册(如 man bash
)深化理解。
引用说明:
- Bash参考手册:GNU官方文档(www.gnu.org/software/bash)
- Linux权限管理:Linux Foundation文档(linuxfoundation.org)
- 安全实践:OWASP命令注入防护指南(owasp.org)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9803.html