bash 命令
基本介绍
bash (Bourne-Again Shell) 是 Linux 和 Unix 系统中最常用的命令行解释器。它是 GNU 项目的一部分,兼容原始的 Bourne Shell,并添加了许多新功能,如命令历史、命令补全、别名、函数等。bash 是大多数 Linux 发行版的默认 shell。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
语法
bash [选项] [脚本文件]
启动选项
| 选项 | 说明 |
|---|
-c <command> | 执行指定的命令后退出 |
-i | 启动交互式 shell |
-l | 作为登录 shell 启动 |
-r | 启动受限 shell |
-s | 从标准输入读取命令 |
-v | 显示读取的输入行 |
-x | 执行命令前显示命令及其参数 |
常用内置命令
文件和目录操作
| 命令 | 说明 |
|---|
cd <dir> | 切换目录 |
pwd | 显示当前目录 |
ls | 列出目录内容 |
mkdir <dir> | 创建目录 |
rmdir <dir> | 删除空目录 |
rm <file> | 删除文件或目录 |
cp <src> <dst> | 复制文件 |
mv <src> <dst> | 移动或重命名文件 |
变量和环境
| 命令 | 说明 |
|---|
export <var>=<value> | 设置环境变量 |
set | 显示所有变量和函数 |
unset <var> | 删除变量 |
env | 显示环境变量 |
echo <text> | 输出文本 |
read <var> | 读取用户输入 |
流程控制
| 命令 | 说明 |
|---|
if ... then ... fi | 条件判断 |
case ... esac | 多条件分支 |
for ... do ... done | 循环 |
while ... do ... done | 条件循环 |
until ... do ... done | 直到条件满足 |
break | 跳出循环 |
continue | 继续下一次循环 |
函数和脚本
| 命令 | 说明 |
|---|
function <name> { ... } | 定义函数 |
<name>() { ... } | 定义函数(简化形式) |
return <n> | 从函数返回 |
source <file> | 执行脚本文件 |
./<script> | 执行脚本文件 |
作业控制
| 命令 | 说明 |
|---|
& | 后台执行命令 |
jobs | 显示后台作业 |
fg | 将后台作业调至前台 |
bg | 将前台作业放至后台 |
kill <pid> | 终止进程 |
Ctrl+C | 终止当前命令 |
Ctrl+Z | 挂起当前命令 |
使用示例
1. 启动交互式 shell
bash
2. 执行单个命令
bash -c "echo 'Hello World'"
3. 执行脚本文件
bash script.sh
4. 作为登录 shell 启动
bash -l
5. 调试脚本(显示执行的命令)
bash -x script.sh
6. 读取并执行标准输入
echo "echo 'Hello'" | bash -s
7. 启动受限 shell
bash -r
8. 显示命令历史
history
9. 设置别名
alias ll='ls -la'
10. 定义函数
greet() { echo "Hello, $1!"; }
greet World
11. 后台执行命令
sleep 10 &
12. 查看后台作业
jobs
13. 条件判断
if [ -f "/etc/passwd" ]; then echo "File exists"; fi
14. 循环遍历文件
for file in *.txt; do echo "$file"; done
配置文件
系统级配置
/etc/profile - 全局登录 shell 配置/etc/bashrc - 全局 bash 配置/etc/profile.d/ - 额外配置脚本目录
用户级配置
~/.bash_profile - 用户登录 shell 配置~/.bashrc - 用户 bash 配置~/.bash_history - 命令历史记录~/.bash_logout - 退出时执行的命令
特殊变量
| 变量 | 说明 |
|---|
$0 | 脚本名 |
$1-$9 | 位置参数 |
$* | 所有位置参数(作为单个字符串) |
$@ | 所有位置参数(作为独立字符串) |
$# | 参数数量 |
$$ | 当前进程 ID |
$? | 上一条命令的退出状态 |
$- | 当前 shell 的选项标志 |
!$ | 上一条命令的最后一个参数 |
命令行快捷键
| 快捷键 | 说明 |
|---|
Ctrl+A | 移动到行首 |
Ctrl+E | 移动到行尾 |
Ctrl+U | 删除光标到行首 |
Ctrl+K | 删除光标到行尾 |
Ctrl+W | 删除光标前的单词 |
Ctrl+Y | 粘贴删除的内容 |
Ctrl+R | 搜索命令历史 |
Tab | 命令补全 |
Ctrl+D | 退出 shell |
实用技巧
1. 查看命令历史
history | grep "apt"
2. 执行历史命令
!5
!apt
!!
3. 命令替换
echo "当前目录: $(pwd)"
4. 管道和重定向
ls -la | grep ".txt" > output.txt
5. 后台执行并输出到日志
nohup ./script.sh > output.log 2>&1 &
6. 设置永久别名
echo "alias ll='ls -la'" >> ~/.bashrc
source ~/.bashrc
相关命令
| 命令 | 说明 |
|---|
sh | Bourne Shell(原始 shell) |
csh | C Shell |
tcsh | TENEX C Shell |
zsh | Z Shell |
ksh | Korn Shell |
注意事项
- 脚本执行权限:脚本需要执行权限(chmod +x script.sh)
- shebang 行:脚本开头应添加
#!/bin/bash - 路径问题:当前目录不在 PATH 中时,需使用
./script.sh - 引号使用:单引号不展开变量,双引号展开变量
- 特殊字符:特殊字符如
$, \, | 需要转义 - 脚本调试:使用
bash -x script.sh 进行调试
总结
bash 是 Linux 系统中最常用的命令行 shell,提供了丰富的功能和灵活的脚本编程能力。掌握 bash 的基本用法是使用 Linux 系统的基础。