Linux bash脚本编程学习

Linux bash脚本编程

linux脚本编程通常用于控制操作系统,操作文件系统,进行简单的数字运算等。和Python,c语言不同的是,通常不用于复杂的逻辑和算数运算。
应用场景:大量使用bash命令对文件系统进行操作,控制操作系统

简述

bash脚本编程具体总结有以下几个方面

  1. 变量操作
  2. 文件操作
  3. 权限操作
  4. 文本操作
  5. vim编辑器
  6. bash脚本编写格式
  7. 条件判断
  8. 循环语句
  9. 常用命令和快捷键

1.变量操作

bash为解释性语言,弱类型语言,具体设置变量有以下特点

  1. 不强制区分变量类型,无论存储什么类型的数据,默认均存储为ascii
  2. 不需要事先声明

set 定义变量

set Var_NAME = Value
set可以省略

unset撤销变量

unset Var_NAME

使用变量

  • 方法一
NAME="Open Stack"
echo $NAME  
unset NAME
  • 方法二
echo "There are some ${animal}s."  

注意:
必须为双引号,单引号不会将转义 ${animal}
如果变量中间有空格,则必须用花括号,否则花括号可以省略

变量类型

本地变量:NAME="Open Stack",只对当前shell进程有效,对子shell和其他shell无效
局部变量:local VAR_NAME=Value 只对代码段有效,仅对局部代码有效,不包括当前shell
环境变量:export VAR_NAME,对当前shell及其子shell有效,例如:export LANG=en
位置变量:$1, 2 , . . . 特殊变量: 2,... 特殊变量: 2,...特殊变量: , , ,!,KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲,?

声明变量declare

bash也可以用declare声明变量
declara [option] var_name
option:

  • -i 整形变量
  • -x 环境环境变量
  • -a 声明一个数组

显示当前系统所有环境变量的命令:

  • printenv
  • export

查看所有变量命令:

  • set

使用变量

变量引用 :${VAR_NAME}
双引号:弱引用,可以进行变量替换
单引号:强引用,不可以进行变量替换,显示字符串本身
反引号:命令引用,``,$(),显示命令执行的结果

echo "My name is $NAME"  
echo "The time is `data +%T`"  
echo "The time is $(data +%T)"  

例如:创建以当前日期为文件名的文件

touch file-`data +%F`.txt
touch file-$(data +%F).txt

2. 文件操作

文件夹操作

按列表显示文件详细信息  
ls -al /tmp   显示/tmp下面所有文件的详细信息

创建文件夹
mkdir test1
mkdir -p test1/test2  递归创建文件  

删除文件夹  
rmdir test1  只能删除空文件夹
rmdir -p test1/test2  只能删除空文件夹
rm -rf  test111 强制删除文件或文件夹中所有内容

移动文件或文件夹
mv test1 /tmp
mv test1 test2 test3 /tmp  将前面文件全部移动到/tmp目录下

给文件或文件夹改名  
mv test1 test111

拷贝文件或文件夹
cp test1 /tmp   只能拷贝单个文件或空文件夹
cp test1 test2 test3 /tmp  将前面文件全部拷贝到/tmp目录下
cp -r test111 /tmp  递归拷贝,将文件夹中所有文件全部拷贝到/tmp目录下

文件操作

文件其他操作同上述文件夹一样

创建文件  
touch 1.txt 创建一个空文件  
touch 1.txt 2.txt 3.txt 创建3个空文件

修改文件内容
vim 1.txt 使用vim编辑器编辑1.txt

删除文件
rm 1.txt

3.权限管理

chmod +x demo.py  给demo.py一个执行权限
chmod o-w 1.txt 取消其他人对1.txt写权限
chown user1:grp1 test1 修改test1的属主为user1,属组为grp

详细内容见下面博客
linux中修改文件或文件夹权限的命令

4.文本操作

grep过滤命令

grep通常配合管道使用
例如:

 ls -al | grep test  查找当前路径下文件名包含test字样的文件
grep "sbin/nologin$" /etc/passwd  查找/etc/passwd文件中以sbin/nologin结尾的文件

正则表达式使用

通常我们在查找,搜索,过滤方面使用正则表达式,正则表达式需要配合相关命令使用,bash中正则表达式和一般编程使用的正则表达式稍有不同

^string  锚定行首符合条件的内容
string$ 锚定行尾符合条件的行
.:匹配任意单个字符
*:匹配紧挨着其前面的任意次
[]:匹配指定范围内的任意单个字符  
\?:匹配紧挨在其前面的字符0次或1次   写法 a\?b
\{m,n\}:匹配其前面的字符至少m次,至多n次
匹配至多3次 \{0,3\}
匹配至少3次 \{3,\}
匹配3次 \{3\}
\<: 锚定词首  
\>: 锚定词尾  
\<pattern\>:锚定词首
\bpattern\b:锚定词尾
\(\): 分组  \(pattern\)    
 \(ab\)\{1,3\}: 可以匹配多个ab组合
 \(a.b\).*\1 : 可以引用,\1引用第一个括号内容,\2引用第二个括号内容
 
 扩展正则表达式 需要grep -e 或者egrep命令
 +:匹配其前面的字符至少1次
 ?:匹配其前面的字符0次或1次
 {m,n}:至少m次,至多n次
 (): 分组,支持引用\1,\2
 a|b: 匹配a或者匹配b 
 词首词尾锚定,必须要\转义
 \<: 锚定词首
 \>: 锚定词尾
 ^: 匹配开头
 $: 匹配结尾

详细内容见下面博客
linux中grep命令以及正则的使用

5.vim编辑器使用

linux中最常见的文本编辑器,通常我们用他来编写文本程序或者编写代码

打开vim   vim 1.txt
编写内容  输入i进入输入模式
保存并退出  输入模式按ESC,然后输入:qw   

详细内容见下面博客
Vim命令总结

6. bash脚本编写格式

通常以.sh为后缀,脚本文件第一行需要声明sh的位置

#!/bin/bash

echo hello world

打印hello world

7. 条件判断

if条件判断

if 条件1; then
    语句1
    语句2
elif 条件2; then
    语句1
    语句2
else
    语句1
    语句2
fi

详细内容见下面博客
bash if条件判断

case条件判断

case 变量 in 
条件1)
  语句1
  语句2;;
条件2)
  语句1
  语句2;;
*)
  语句1
  语句2;;
esca

详细内容见下面博客
bash case用法

8. 循环语句

for循环

示例1
for VAR_NAME in 元素1 元素2 ...
do
    语句1
    语句2
    ....
done
示例2
for ((i=0;i <=100;i++));do
    let sum+=i
done

详细内容见下面博客
bash for循环

while和until循环

while循环格式如下

while 测试条件;do
    语句1
    语句2
    ...
done

until循环格式如下

until 测试条件; do
    语句1
    语句2
    ....
done

详细内容见下面博客
bash while循环和until循环

9. 常用命令和快捷键

ctrl + l	清屏
ctrl + c	取消或终止
tab         命令补齐,路径补齐

详细内容见下面博客
Linux常用命令和快捷键

用户和组相关命令
linux用户和组相关的命令

未完待续…

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值