当前位置: 首页 > news >正文

Shell以及Shell编程

Shell的任务

①分析命令;

②处理通配符、变量替换、命令替换、重定向、管道和作业控制;

③搜索命令并执行。

内部命令:内嵌在Shell中。

外部命令:存在于磁盘上的独立可执行文件。

#!/bin/bash

#! 称为一个幻数,内核用它来标识来解释执行脚本中的程序。该行必须在写在脚本的第一行,否则便失去其作用。

bash的功能

①名称补全   Tab键

②命令别名

alias  dir=‘ls – –color=tty’增加一个别名

unalias dir    删除一个别名

③命令历史机制 history

④输入输出重定向

⑤管道

“”    字符串界定符,允许进行变量和命令替换

‘’    字符串界定符,不允许进行变量和命令替换

&    后台执行,格式:命令&

()    成组命令,括号中的命令将在子shell中执行

{}    成组命令,括号中的命令将在当前shell中执行

\    转义符

shell变量

一是标准shell变量,用户登录时Shell为建立用户环境而注册的变量,也称环境变量;

另一类是用户自己定义的变量,即用户变量(临时变量)。

环境变量可以被当前Shell下启动的子进程(子Shell) 所继承,而局部(用户)变量不被继承;而且子进程的环境变量独立于父进程,子进程中对环境变量的修改不影响父进程变量的值。 

1)变量命名:以下划线 / 字母开头,后加任意;

2)变量赋值:通过等号,且等号两边无空格;

3)变量引用:$

4)命令替换:

m=date

$m   //输出date

m=$(date)

$m  //输出当前时间

5)变量输入 read m   //从键盘输入变量值即赋值成功;

//编写一个shell程序,程序执行时从键盘读入一个目录名,然后显示这个目录下的所有文件信息#! /bin/sh
echo "Please input name of directory "
read Dir
cd $Dir
ls -l//该shell程序名为shell1 运行时chmod +x shell1  之后./shell1

字符串的比较

string1 = string2    //字符串相等为真;

string1 != string2   //字符串不相等为真;

-n string  //字符串不为空为真

-z string //字符串为空为真

算数比较

expression1 -eq expression2    //表达式相等为真;

expression1 -ne expression1    //不等为真

expression1 -gt expression2     //大于为真

expression1 -ge expression2  //大于|等于为真

expression1 -lt expression2  //小于为真

expression1 -le expression2   //小于等于为真

! expression  //表达式为假为真

文件测试

-d file   //文件是一个目录 结果为真

-e file   //文件存在为真

-f file   //普通文件为真

-r file  //可读为真

-w file  //可写为真

-x file   //可执行为真 

-s file  //文件长度不为零 为真

//利用内置变量和位置参数编写一个shell2的简单删除程序,如删除的文件名为a,则在终端输入的命令为shell2 a#! /bin/sh
if [$# -eq 0]   #参数长度是0
then
echo “Please specify a file!”
else
gzip $1   #对文件进行压缩
mv $1.gz $HOME/dustbin  #移动到回收站
echo "File $1 is deleted!"
fi
//输入一个字符串,如果是目录,则显示目录下的信息,如果是文件,则显示文件的内容#! /bin/sh
read m    #将键盘输入的字符串存在变量m中
if [ -d $m ]   #输入的内容是目录的话
then
cd $m
ls -l
elif [ -f $m ]   #如果是文件的话    #注意 elif 的写法 并且要加then
then
cat $m
else
echo "input error!"   #输入不合理
fi
//使脚本仅仅接受一个命令行参数,并检查这个命令行参数是不是一个文件或者目录
//如果执行的时候没有给定参数或者参数的个数多于1个 或者这个参数不是一个普通文件 
//脚本则返回出错信息#! /bin/sh
if [ $# -ne 1 ]  #如果参数个数为0 或者大于1
then
echo "参数个数不正确"
exit 1        //不正确会退出
fi
if [ -d "$1" ]  #是文件或者目录
then
echo "这是一个目录"
exit 0
elif [ -f "$1" ]
then
echo "这是一个文件"
else
echo "这个参数指定的类型不符合要求"
fi
//显示出当前目录中所有以字母 f 开头的脚本文件,并且假设所有脚本程序以.sh结尾
for filex in $(ls f*.sh)
do
cat $filex
done
exit 0
//根据指定的目录 输出目录的以及子目录的大小 并将目录中的文件都改为可执行
if [ $# -ne 1 ]
then
echo "参数个数不正确"
fi
exit 1 
if [ -f $1 ]
then
echo "参数指定为文件"
else
echo "参数类型不合适"
fi
exit 1#一个位置参数  并且是目录
echo "$1目录的大小为"
#目录的大小
du -s $1    
#设置循环
for dir in $(ls $1)
doif [ -d $dir ]  #是子目录显示其内存 thenecho "$dir是子目录,其大小为:"du -s $direlif [ -f $dir ]            #是文件 设置可执行then chmod +x $dirfi
done
//限制循环次数
#!/bin/bash
foo=1                        #注意赋值不许出现空格
while [ "$foo" -le 20 ]      #在test[]中的表达式要用引号  还有每个地方的空格注意
doecho "Hero i7"foo= $(($foo+1))          #自增的表示!!!  #表达式的表达情况!      
done
exit 0
//设计脚本统计目录中的普通文件、目录、连接文件的个数
#! /bin/sh
if [ $# -ne 1 ]
then
echo "参数个数不正确"
else
then
a=$(ls -l|grep ^-|wc -l)
b=$(ls -l|grep ^d|wc -l)
c=$(ls -l|grep ^l|wc -l)
echo "普通文件的个数是a,目录的个数是b,符号链接的个数是c"
fi//或者中间部分替换为
a=`ls -l|grep ^-|wc -l`
//编写一个脚本名称为backup.sh,将第二个位置参数及其以后各参数所指定目录中的以.c和.sh结尾的,
//且文件大小不为0的文件复制到第一个位置参数所指定的目录中。 
//(注:要求检查位置参数的合法性)

编写一个脚本名称为backup.sh,将第二个位置参数及其以后各参数所指定目录中的以.c和.sh结尾的,且文件大小不为0的文件复制到第一个位置参数所指定的目录中(注:要求检查位置参数的合法性)

//注意循环范围  “ $@ ”    第二个循环范围并列写 $dir/*.c $dir/*.sh

//注意  -s 文件名 代表文件大小不为0为真

//注意左移位置变量 shift N 

编写脚本mytar.sh,将位置参数指定的所有文件(目录)进行归档并压缩,文件名格式:年月日(xxxx-xx-xx).tar.gz。要求检测位置参数个数,若为0,给出错误信息。

相关文章:

Shell以及Shell编程

Shell的任务 ①分析命令; ②处理通配符、变量替换、命令替换、重定向、管道和作业控制; ③搜索命令并执行。 内部命令:内嵌在Shell中。 外部命令:存在于磁盘上的独立可执行文件。 #!/bin/bash #! 称为一个幻数&…...

从记忆到想象:探索AI的智能未来

引言 人工智能(AI)在信息处理、数据分析和任务自动化等方面展现了强大的能力。然而,在人类独有的记忆和想象力领域,AI仍然有很长的路要走。加利福尼亚大学戴维斯分校的心理学和神经科学教授查兰兰加纳特(Charan Ranga…...

“安全生产月”专题报道:AI智能监控技术如何助力安全生产

今年6月是第23个全国“安全生产月”,6月16日为全国“安全宣传咨询日”。今年全国“安全生产月”活动主题为“人人讲安全、个个会应急——畅通生命通道”。近日,国务院安委会办公室、应急管理部对开展好2024年全国“安全生产月”活动作出安排部署。 随着科…...

【转】ES, 广告索引

思考: 1)直接把别名切换到上一个版本索引 --解决问题 2)广告层级索引如何解决? -routing、join 3)查询的过程:query and fetch, 优化掉fetch 4)segment合并策略 5)全量写入时副…...

Unity学习要点

前言 学习Unity作为游戏开发的强大工具,对于初学者来说,掌握一些基础而实用的技巧是非常重要的。这不仅能帮助你更快地上手,还能在项目开发过程中提高效率。以下是一些Unity初学者的使用技巧,希望能为你的学习之旅提供帮助。 ##…...

简单使用phpqrcode 生成二维码图片

$path ROOT_PATH; //tp项目根路径 require_once $path.vendor/phpqrcode/phpqrcode.php; //加载phpqrcode库 $url http://.$_SERVER[HTTP_HOST]./home/index/detail?id.$param[id]; $value $url; //二维码内容 $errorCorrectionLevel L; //容错级别 $mat…...

软考架构-计算机网络考点

会超纲,3-5分 网络分类 按分布范围划分 局域网 LAN 10m-1000m左右 房间、楼宇、校园 传输速率高 城域网 MAN 10km 城市 广域网 WAN 100km以上 国家或全球(英特网) 按拓扑结构划分 总线型:利用率低、干…...

渗透测试之内核安全系列课程:Rootkit技术初探(三)

今天,我们来讲一下内核安全! 本文章仅提供学习,切勿将其用于不法手段! 目前,在渗透测试领域,主要分为了两个发展方向,分别为Web攻防领域和PWN(二进制安全)攻防领域。在…...

大模型日报2024-06-08

大模型日报 2024-06-08 大模型资讯 AI研究:通过消除矩阵乘法实现高效的大语言模型 摘要: 该AI研究探讨了通过消除矩阵乘法来实现高效且可扩展的大语言模型(LLMs)。此方法旨在提升模型性能,提供更快速和高效的计算方案。 AWS大力投…...

leetcode 1631.最小体力消耗路径

思路:BFS二分 这道题和洛谷上的那个“汽车拉力赛”那道题很相似,但是这道题相较于洛谷那个来说会简单一些。 这里作者一开始写的时候思路堵在了怎么在BFS中用二分,先入为主的以为需要先写出来搜索函数然后再去处理二分的事,但是…...

【ARM64 常见汇编指令学习 19.2 -- ARM64 地址加载指令 ADR 详细介绍】

文章目录 地址加载指令 ADRADR 指令使用场景例子注意事项 地址加载指令 ADR ARMv8 架构引入了一系列的改进和扩展,包括对汇编指令集的更新。在这之中,ADR 指令是一个重要的组成部分,它用于计算并加载一个地址到寄存器。 ADR 指令 ADR 指令…...

vscode输出控制台中文显示乱码最有效解决办法

当VSCode的输出控制台中文显示乱码时,一个有效的解决办法是通过设置环境变量来确保编码的正确性。以下是解决方式: 首先,设置环境变量以修正乱码问题: 如果上述方法没有解决乱码问题,请继续以下步骤: 右键…...

springboot + Vue前后端项目(第十五记)

项目实战第十五记 写在前面1.后端接口实现1.1 用户表添加角色字段1.2 角色表增加唯一标识字段1.3 UserDTO1.4 UserServiceImpl1.5 MenuServiceImpl 2. 前端实现2.1 User.vue2.2 动态菜单设计2.2.1 Login.vue2.2.2 Aside.vue 2.3 动态路由设计2.3.1 菜单表新增字段page_path2.3.…...

如何在Windows 11中恢复丢失的快速访问菜单?这里提供解决办法

序言 在电脑的“快速访问”菜单中找不到固定的项目?或者,整个菜单对你来说已经消失了吗?无论哪种方式,你都可以强制你的电脑恢复菜单并显示其中的所有项目。以下是如何在你的Windows 11电脑上做到这一点。 将文件资源管理器设置为打开到主页 当你在文件资源管理器的左侧…...

变声器软件免费版有哪些?国内外12大热门变声器大盘点!(新)

变声软件是一种人工智能AI音频处理工具,允许用户实时修改自己的声音或改变预先录制的音频。这些软件解决方案可提供不同的效果,如改变声音的音调或速度,或将我们的声音转换成其他人或其他东西的声音,如名人、卡通人物、机器人或不…...

计算机网络 —— 数据链路层(无线局域网)

计算机网络 —— 数据链路层(无线局域网) 什么是无线局域网IEEE 802.11主要标准及其特点: 802.11的MAC帧样式 我们来看看无线局域网: 什么是无线局域网 无线局域网(Wireless Local Area Network,简称WLAN…...

SpringBoot图书管理系统【附:资料➕文档】

前言:我是源码分享交流Coding,专注JavaVue领域,专业提供程序设计开发、源码分享、 技术指导讲解、各类项目免费分享,定制和毕业设计服务! 免费获取方式--->>文章末尾处! 项目介绍048: 图…...

shell简介

一、Shell 概念定义 Shell 是用 C 语言编写的程序,是用户使用 Linux 的桥梁,既是命令语言又是程序设计语言。 shell 脚本为 Shell 编写的脚本程序,常说的 shell 通常指 shell 脚本。 包含一系列命令的文本文件,这些命令按照特定…...

使用 Scapy 库编写 ICMP 不可达攻击脚本

一、介绍 ICMP不可达攻击是一种利用ICMP(Internet Control Message Protocol)不可达消息来干扰或中断目标系统的网络通信的攻击类型。通过发送伪造的ICMP不可达消息,攻击者可以诱使目标系统认为某些网络路径或主机不可达,从而导致…...

Electron qt开发教程

模块安装打包 npm install -g electron-forge electron-forge init my-project --templatevue npm start //进入目录启动 //打包成一个目录到out目录下,注意这种打包一般用于调试,并不是用于分发 npm run package //打出真正的分发包,放在o…...

尝试用 GPT-4o 写 2024高考语文作文

文章目录 新课标I卷科技进步与问题的演变 新课标II卷抵达未知之境:探索与成长的旅程 全国甲卷坦诚交流:构建真正相遇的桥梁 北京卷历久弥新 天津卷定义与自定义:在世界的缤纷中前行 上海卷认可度的思考与反思 新课标I卷 阅读下面的材料&#…...

自动化Reddit图片收集:Python爬虫技巧

引言 Reddit,作为一个全球性的社交平台,拥有海量的用户生成内容,其中包括大量的图片资源。对于数据科学家、市场研究人员或任何需要大量图片资源的人来说,自动化地从Reddit收集图片是一个极具价值的技能。本文将详细介绍如何使用…...

自动驾驶人工智能

自动驾驶技术中使用的算法和滤波器 如何部署软件中的算法和滤波器,以增强传感器数据的可用性和应用性 自动驾驶人工智能 文章目录 一、介绍二、自动驾驶的算法2.1 感知算法2.2 本地化算法2.3 映射算法2.4 规划算法2.5 控制算法2.6 过滤 器2.7 卡尔曼滤波器2.8 颗粒过…...

基础乐理入门

基础概念 乐音:音高(频率)固定,振动规则的音。钢琴等乐器发出的是乐音,听起来悦耳、柔和。噪音:振动不规则,音高也不明显的音。风声、雨声、机器轰鸣声是噪音,大多数打击乐器&#…...

mysql 8 linux7,8安装教程

选择自己对应的linux版本 cat /etc/os-release //查看自己linux系统版本 1.mysql下载地址 MySQL :: Download MySQL Community Server (Archived Versions) 拉到下面找到 选择自己linux指定的版本,否则会很麻烦 cat /etc/os-release //查看系统版本 2.查…...

『矩阵论笔记』特征分解(eigendecomposition)通俗解释!

特征分解(eigendecomposition)通俗解释! 文章目录 一. 特征分解(eigendecomposition)通俗解释!1. 它是如何工作的2. 试图达到什么目的3. 为什么它有用(将一个方阵分解成这三个组成矩阵有什么好处呢?)二. 参考文献一. 特征分解(eigendecomposition)通俗解释! 大家好,欢迎回…...

顶级域名和二级域名的区别

互联网是一个由无数个网络节点组成的复杂系统,而域名则是这个系统中用于识别和定位这些节点的重要工具。在域名体系中,顶级域名(Top-Level Domain,TLD)和二级域名(Second-Level Domain,SLD)是两个基本的层级概念。本文将探讨这两者…...

深入解析Kafka消息丢失的原因与解决方案

深入解析Kafka消息丢失的原因与解决方案 Apache Kafka是一种高吞吐量、分布式的消息系统,广泛应用于实时数据流处理。然而,在某些情况下,Kafka可能会出现消息丢失的情况,这对于数据敏感的应用来说是不可接受的。本文将深入解析Ka…...

【Python列表解锁】:掌握序列精髓,驾驭动态数据集合

文章目录 🚀一、列表🌈二、常规操作💥增💥删💥改💥查 ⭐三、补充操作 🚀一、列表 列表是一个能够存储多个同一或不同元素的序列 列表:list ---- [] 列表属于序列类型(容器…...

安卓打造安装包(应用打包、规范处理安装包、安全加固)

本章介绍应用安装包的基本制作规范,主要包括:如何导出既美观又精简的APK文件、如何按照上线规范调整App的相关设置、如何对APK文件进行安全加固以防止安装包被破解。 应用打包 本节介绍APK安装包的打包过程,包括:如何利用Androi…...

欧莱雅的网络营销策划方案/合肥seo代理商

7:30:起床。英国威斯敏斯特大学的研究人员发现,那些在早上5:22―7:21 分起床的人,其血液中有一种能引起心脏病的物质含量较高,因此,在7:21之后起床对身体健康更加有益。  打开台灯。“一醒来,就将灯打开&…...

岳阳政府网站建设公司/外贸推广平台哪家好

这里需要升级docker版本,因为centos7 yum源默认自带的docker版本无法使用compose,详情见: http://nanguawu.me/container/5013.html容器部署目录结构:[rootvm2 web_django]# tree -L 2.├── db│ ├── auto.cnf│ ├── ca-key.pem│ ├── ca.pem…...

天津网站建设哪里好/百度云服务器

https://www.cnblogs.com/wolipengbo/archive/2013/10/23/3383667.html转载于:https://www.cnblogs.com/norm/p/7856179.html...

阿狸网站建设/seo信息优化

R语言与统计分析第四章课后习题(汤银才) 题-1 模拟得到1000个参数为0.3的贝努里分布随机数, 并用图示表示出来 # 为了更清晰显示密度,通过cex把点画小点 plot(rbinom(1000,1,0.3),cex0.5)题-2 用命令rnorm( )命令产生1000个均值为10, 方差为4的正态分布随机数,用…...

做静态网站软件/百度知道首页官网

远程医疗是什么远程医疗是指通过计算机技术、通信技术与多媒体技术,同医疗技术相结合,旨在提高诊断与医疗水平、降低医疗开支、满足广大人民群众保健需求的一项全新的医疗服务。目前,远程医疗技术已经从最初的电视监护、电话远程诊断发展到利…...

网站发帖做业务/比较好的搜索引擎

为什么80%的码农都做不了架构师?>>> /*** Created by liuhu on 2017/6/23.* 微信获取签名* 对于签名需要对token ticket做服务端缓存以防api调用次数超过上限*/ const request require("request"); const sha1 require("sha1"); …...