CentOS 7 bash 使用指南
一、简介
CentOS 7 是企业级 Linux 发行版,广泛用于服务器环境,Bash(Bourne Again Shell)是大多数Linux系统默认的 shell,它功能强大且灵活,适合各种日常操作与脚本编写任务,本文旨在详细介绍如何在 CentOS 7 下高效使用 Bash,包括基本命令、变量、条件判断、循环及函数等。

二、基本命令
1. 文件与目录操作
cd:切换目录
- cd /path/to/directory
pwd:显示当前工作目录
- pwd
ls:列出目录内容
- ls
- ls l
- ls a
mkdir:创建目录
- mkdir dir_name
- mkdir p /path/to/dir_name
rmdir:删除空目录

- rmdir dir_name
rm:删除文件或目录
- rm file_name
- rm r directory_name
cp:复制文件或目录
- cp source_file destination_file
- cp r source_directory destination_directory
mv:移动或重命名文件或目录
- mv old_name new_name
- mv /path/to/source /path/to/destination
touch:创建空文件或更新时间戳
- touch new_file
cat, less, more, head, tail, grep:查看文件内容
- cat file_name
- less file_name
- more file_name
- head file_name
- tail file_name
- grep 'pattern' file_name
2. 文件权限与所有权

chmod:修改文件权限
- chmod 755 file_name
chown:更改文件所有者
- chown user_name file_name
chgrp:更改文件组
- chgrp group_name file_name
3. 文本处理工具
grep:搜索文本
- grep 'pattern' file_name
sed:流编辑器,用于文本替换
- sed 's/pattern/replacement/' file_name
awk:强大的文本分析工具
- awk '/pattern/ {action}' file_name
4. 打包与压缩
tar:打包工具
- tar cvf archive.tar file_name
- tar xvf archive.tar
- tar czvf archive.tar.gz file_name
- tar xzvf archive.tar.gz
gzip & gunzip:压缩与解压工具
- gzip file_name
- gunzip file_name.gz
bzip2 & bunzip2:另一种压缩方式
- bzip2 file_name
- bunzip2 file_name.bz2
三、变量与常量
在 Bash 中,变量无需声明即可直接使用,注意赋值时不要有空格。
1. 定义变量
- variable_name=value
- VAR2="This is a string"
- VAR3='This is also a string'
2. 使用变量
- echo $variable_name
- echo $$ # 当前 shell 的进程 ID
- echo $? # 上一个命令的退出状态
3. 环境变量
- export VAR_NAME=value
- env # 查看环境变量
- unset VAR_NAME # 删除环境变量
4. 只读变量
- readonly READONLY_VAR=value
- READONLY_VAR=new_value # 只读变量不能被重新赋值
四、条件判断结构
Bash 支持多种条件判断结构,如 if、case 语句。
1. if 语句
- if [ condition ]; then
- commands
- elif [ another_condition ]; then
- other_commands
- else
- more_commands
- fi
示例:判断两个数是否相等
- #!/bin/bash
- read p "Enter first number: " num1
- read p "Enter second number: " num2
- if [ $num1 eq $num2 ]; then
- echo "The numbers are equal."
- else
- echo "The numbers are not equal."
- fi
2. case 语句
- case $variable in
- pattern1)
- commands1;;
- pattern2)
- commands2;;
- *)
- default_commands;;
- esac
示例:根据用户输入显示星期几
- #!/bin/bash
- read p "Enter a number (17): " day_num
- case $day_num in
- 1) echo "Monday";;
- 2) echo "Tuesday";;
- 3) echo "Wednesday";;
- 4) echo "Thursday";;
- 5) echo "Friday";;
- 6) echo "Saturday";;
- 7) echo "Sunday";;
- *) echo "Invalid day number";;
- esac
五、循环结构
Bash 提供了多种循环结构,如 for、while、until。
1. for 循环
- for var in item1 item2 item3; do
- commands
- done
示例:输出 1 到 10
- #!/bin/bash
- for i in {1..10}; do
- echo $i
- done
2. while 循环
- while [ condition ]; do
- commands
- done
示例:输出 1 到 10
- #!/bin/bash
- i=1
- while [ $i le 10 ]; do
- echo $i
- ((i++))
- done
3. until 循环
- until [ condition ]; do
- commands
- done
示例:输出 10 到 1
- #!/bin/bash
- i=10
- until [ $i lt 1 ]; do
- echo $i
- ((i))
- done
六、函数定义与使用
Bash 支持函数,可以简化代码复用。
1. 定义函数
- function func_name {
- commands
- }
或者简写为:
- func_name() {
- commands
- }
2. 调用函数
- func_name [arguments]
示例:定义并调用一个函数,计算两个数的和
- sum() {
- local result=$(($1 + $2))
- echo "Sum: $result"
- }
- sum 3 5 # 输出: Sum: 8
七、常用快捷键与编辑技巧
Tab:自动补全命令、文件名等。
Ctrl+L:清屏。
Ctrl+U:清除光标所在行之前的内容。
Ctrl+W:清除光标所在单词之前的内容。
Alt+.:重复上一个命令的最后一个参数,输入cd
后按Alt+.
,会自动补全为cd /home/user
。
Ctrl+R:历史命令搜索,输入部分命令后按Ctrl+R
,可以搜索历史记录中的相关命令。
Ctrl+A:光标移到行首。
Ctrl+E:光标移到行尾。
Ctrl+K:删除光标后的内容。
Ctrl+Y:粘贴先前删除的内容。