热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linuxbash脚本编程学习

Linuxbash脚本编程linux脚本编程通常用于控制操作系统,操作文件系统,进行简单的数字运算等。和Python,c语言不同的是&#
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\}
\<: 锚定词首
\>: 锚定词尾
\:锚定词首
\bpattern\b:锚定词尾
\(\): 分组 \(pattern\) \(ab\)\{1,3\}: 可以匹配多个ab组合\(a.b\).*\1 : 可以引用&#xff0c;\1引用第一个括号内容&#xff0c;\2引用第二个括号内容扩展正则表达式 需要grep -e 或者egrep命令&#43;:匹配其前面的字符至少1次?:匹配其前面的字符0次或1次{m,n}:至少m次&#xff0c;至多n次(): 分组&#xff0c;支持引用\1,\2a|b: 匹配a或者匹配b 词首词尾锚定&#xff0c;必须要\转义\<: 锚定词首\>: 锚定词尾^: 匹配开头$: 匹配结尾

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

5.vim编辑器使用

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

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

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

6. bash脚本编写格式

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

#!/bin/bashecho 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&#61;0;i <&#61;100;i&#43;&#43;));dolet sum&#43;&#61;i
done

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

while和until循环

while循环格式如下

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

until循环格式如下

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

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

9. 常用命令和快捷键

ctrl &#43; l 清屏
ctrl &#43; c 取消或终止
tab 命令补齐&#xff0c;路径补齐

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

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

未完待续…


推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
author-avatar
手机用户2602937555
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有