HCRM博客

如何在CentOS 7上高效使用Bash脚本?

CentOS 7 Bash 使用指南

一、简介

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

如何在CentOS 7上高效使用Bash脚本?-图1
(图片来源网络,侵权删除)

二、基本命令

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:删除空目录

如何在CentOS 7上高效使用Bash脚本?-图2
(图片来源网络,侵权删除)
    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. 文件权限与所有权

如何在CentOS 7上高效使用Bash脚本?-图3
(图片来源网络,侵权删除)

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

分享:
扫描分享到社交APP
上一篇
下一篇