热门标签 | 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用户和组相关的命令

未完待续…


推荐阅读
  • 本文深入解析了Linux系统中常用的文件和目录操作命令,包括但不限于`ls`、`cd`等。通过详细讲解每个命令的功能、语法及应用场景,帮助读者掌握这些基本工具的使用方法,提升在Linux环境下的操作效率。此外,文章还介绍了如何结合选项和参数来实现更复杂的文件管理任务,为初学者提供了丰富的实践示例和技巧。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 本文详细介绍了使用响应文件在静默模式下安装和配置Oracle 11g的方法。硬件要求包括:内存至少1GB,具体可通过命令`grep -i memtotal /proc/meminfo`进行检查。此外,还提供了详细的步骤和注意事项,确保安装过程顺利进行。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 在CentOS上部署并使用FFmpeg多媒体处理工具
    最近在进行音频处理时需要用到FFmpeg,本文将详细介绍如何在CentOS系统上部署并使用这一强大的多媒体处理工具。首先,从官方网站下载FFmpeg的最新版本,然后通过Xftp工具将下载的压缩包(如ffmpeg-4.3.1.tar.xz)传输到服务器上。接下来,解压文件并按照官方文档进行编译安装。安装完成后,可以通过命令行工具验证FFmpeg是否成功安装,并开始进行多媒体文件的转换和处理。此外,文章还将介绍一些常用的FFmpeg命令和参数,帮助用户快速上手。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 在项目开发过程中,掌握一些关键的Linux命令至关重要。例如,使用 `Ctrl+C` 可以立即终止当前正在执行的命令;通过 `ps -ef | grep ias` 可以查看特定服务的进程信息,包括进程ID(PID)和JVM参数(如内存分配和远程连接端口);而 `netstat -apn | more` 则用于显示网络连接状态,帮助开发者监控和调试网络服务。这些命令不仅提高了开发效率,还能有效解决运行时的各种问题。 ... [详细]
  • 基于域名、端口和IP的虚拟主机构建方案
    本文探讨了在单台物理服务器上构建多个Web站点的虚拟主机方案,详细介绍了三种主要的虚拟主机类型:基于域名、基于IP地址和基于端口的虚拟主机。每种类型的实现方式及其优缺点均进行了深入分析,为实际应用提供了全面的技术指导。 ... [详细]
  • 本文探讨了在不解压的情况下,如何高效地从包含文本文件的.gz压缩文件中查找特定字符串的方法。通过利用特定的工具和技术,可以在保持文件压缩状态的同时,快速定位和检索所需信息,提高处理大规模数据集时的效率和性能。 ... [详细]
  • 在Linux系统中,`inet_pton` 和 `inet_ntop` 是两个重要的IP地址转换函数,它们能够实现IP地址在“点分十进制”和“整数”格式之间的相互转换。特别是 `inet_pton`,它不仅支持IPv4,还支持IPv6地址的转换,广泛应用于网络编程中,确保了不同格式IP地址的高效处理和兼容性。本文将详细探讨这两个函数的内部实现机制及其在网络编程中的具体应用。 ... [详细]
  • Ceph API微服务实现RBD块设备的高效创建与安全删除
    本文旨在实现Ceph块存储中RBD块设备的高效创建与安全删除功能。开发环境为CentOS 7,使用 IntelliJ IDEA 进行开发。首先介绍了 librbd 的基本概念及其在 Ceph 中的作用,随后详细描述了项目 Gradle 配置的优化过程,确保了开发环境的稳定性和兼容性。通过这一系列步骤,我们成功实现了 RBD 块设备的快速创建与安全删除,提升了系统的整体性能和可靠性。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
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社区 版权所有