Linux bash脚本编程

linux脚本编程通常用于控制操作系统操作文件系统,进行简单数字运算等。和Pythonc语言不同的是,通常不用于复杂逻辑算数运算
应用场景:大量使用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:

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

查看所有变量命令:

  • 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.pydemo.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>:锚定词首
bpatternb:锚定词尾
(): 分组  (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用户和组相关的命令

未完待续

原文地址:https://blog.csdn.net/xgy123xx/article/details/126168065

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_41736.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注