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
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
bash
2. 执行单个命令
bash
bash -c "echo 'Hello World'"
3. 执行脚本文件
bash
bash script.sh
4. 作为登录 shell 启动
bash
bash -l
5. 调试脚本(显示执行的命令)
bash
bash -x script.sh
6. 读取并执行标准输入
bash
echo "echo 'Hello'" | bash -s
7. 启动受限 shell
bash
bash -r
8. 显示命令历史
bash
history
9. 设置别名
bash
alias ll='ls -la'
10. 定义函数
bash
greet() { echo "Hello, $1!"; }
greet World
11. 后台执行命令
bash
sleep 10 &
12. 查看后台作业
bash
jobs
13. 条件判断
bash
if [ -f "/etc/passwd" ]; then echo "File exists"; fi
14. 循环遍历文件
bash
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. 查看命令历史
bash
history | grep "apt"
2. 执行历史命令
bash
!5 # 执行第5条命令
!apt # 执行最近以apt开头的命令
!! # 执行上一条命令
3. 命令替换
bash
echo "当前目录: $(pwd)"
4. 管道和重定向
bash
ls -la | grep ".txt" > output.txt
5. 后台执行并输出到日志
bash
nohup ./script.sh > output.log 2>&1 &
6. 设置永久别名
bash
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 系统的基础。