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:粘贴先前删除的内容。