一.补充知识点

1.系统定时任务

系统定时任务需要用到crontab命令,但是使用此命令有一个前提,即需要打开crond服务。为了不那么复杂,可以直接使用我之前学的systemctl命令重新启动crond服务。

  • 语法:``crontab [-e -l -r] `

  • 选项:-e 编辑crontab定时任务;-l 查询系统crontab任务;-r 删除当前用户的所有crontab任务

  • 参数:

    项目 含义 范围
    第一个“*” 一小时当中的第几分钟 0-59
    第二个“*” 一天当中的第几个小时 0-23
    第三个“*“ 一个月当中的第几天 1-31
    第四个“*” 一年当中的第几天 1-12
    第五个“*” 一周当中的星期几 0-7
  • 参数特殊符号:

    特殊符号 含义
    * 代表任意时间
    , 代表不连续的时间
    - 代表连续的时间
    */n 代表每隔多久执行一次

注意,这里使用crontab -e进入编辑后(界面此时是一个vim编辑器),先输入要设置的5个“*”,然后输入命令保存即可。

2.克隆虚拟机

之前我们了解了虚拟机快照技术,这对我们个人平时试错有很大的帮助,同时这里再补充一种技术,克隆虚拟机。它不仅能有助于恢复,同时对如果想把我们的虚拟机分享给别人(假设你的虚拟机配置了许多东西,别人重新安装配置很麻烦,而你们需要相同工作环境),那么这个时候使用克隆虚拟机技术就相当方便了。

如果你需要使用克隆技术,这里有一个其他博主的链接,或许对你有帮助虚拟机克隆

二.初识shell

1.shell

Shell (外壳)是一个用C语言编写的程序,它是用户使用Linux 的桥梁。Shell既是一种命令语言,又是一种程序设计语言。

Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

2.脚本

脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑)。常见的脚本: JavaScript, VBScript,ASP, JSP, PHP, SQL, Perl, Shell, python, Ruby, JavaFX,Lua等。

3.常见shell

在Linux中有很多类型的shell, 不同的shell具备不同的功能,shell 还决定了脚本中函数的语法,Linux中默认的shell是/bin/bash,流行的shell 有ash、bash、 ksh、 csh、zsh等,不同的shell都有自己的特点以及用途。

大多数Linux系统默认使用的shell, bash shell是Bourne shell的一个免费版本,它是最早的Unix shell, bash 还有一个特点, 可以通过help 命令来查看帮助。包含的功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径。

4.shell基础

  • 约定俗成,文件以.sh结尾代表一个shell文件
  • shell文件开始必须是#!/bin/bash,代表选择这个版本解释器
  • 执行shell文件。使用命令bash(sh) 路径

其实执行shell文件的方式有许多中,但是上面这种不需要任何其他命令辅助,其他方式或多或少都有一些问题,使用这一种即可。

三.shell变量

1.系统预定义变量

$HOME$PWD$SHELL$USER等是系统预定义的变量,是环境变量,在所有的shell文件中都能使用。

关于环境变量(全局变量)或者说系统预定义变量可以参考我的上一篇博客:环境变量

补充:

Bash是一种Unix/Linux操作系统的命令行解释器,它允许用户在终端上输入命令并执行它们。可以单独使用bash命令来启动一个新的Bash shell会话,在该会话中,您可以执行各种命令和操作。例如,在终端上输入bash并按Enter键可以启动新的Bash shell会话。此时,您将看到一个新的命令提示符,表示您现在位于一个新的Bash shell中,可以在此处输入各种命令以进行操作。要退出Bash shell会话,请输入exit并按Enter键即可。

2.自定义变量

1.基本语法

  • 定义变量:变量名=变量值,注意,=号前后不能有空格
  • 撤销变量:unset 变量名
  • 声明静态变量(只读变量,无法更改):readonly 变量,注意:不能 unset

2.变量定义规则

  • (1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
  • (2)等号两侧不能有空格
  • (3)在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
  • (4)变量的值如果有空格,需要使用双引号或单引号括起来

3.演示

3.特殊变量

1. $n

$n (功能描述:n 为数字,$0 代表该脚本名称,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})

 touch parameter.shvim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
[atguigu@hadoop101 shells]$ chmod 777 parameter.sh
[atguigu@hadoop101 shells]$ ./parameter.sh cls xz
==========$n==========
./parameter.sh
cls
xz

2.$#

$# (功能描述:获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性)

 vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
[atguigu@hadoop101 shells]$ chmod 777 parameter.sh
[atguigu@hadoop101 shells]$ ./parameter.sh cls xz
==========$n==========
./parameter.sh
cls
xz
==========$#==========
2

3.$*、$@

  • $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
  • $@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
 vim parameter.sh
#!/bin/bash
echo '==========$n=========='
echo $0
echo $1
echo $2
echo '==========$#=========='
echo $#
echo '==========$*=========='
echo $*
echo '==========$@=========='
echo $@
[atguigu@hadoop101 shells]$ ./parameter.sh a b c d e f g
==========$n==========
./parameter.sh
a
b
==========$#==========
7
==========$*==========
a b c d e f g
==========$@==========
a b c d e f g

4.$?

$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

./helloworld.sh
hello worldecho $?
0

四.运算符和条件判断

1.运算符

基本语法:$((运算式))$[运算式]

在其他语言中,定义变量的方式你应该不陌生,但是如果在shell中定义变量a=1+5,你可以尝试一下他输出的是什么,针对shell里面的运算,有一个新的命令expr可以计算,但由于乘法运算的星号在shell中有其他意思,它会报错,所以才设置了运算符。

实际操作:

2.条件判断

语法:(1)test condition (2)[ condition ](注意 condition 前后要有空格)两种方式任选一种即可
注意:条件非空即为 true,[ atguigu ]返回 true,[ ] 返回 false。

常用判断条件

(1)两个整数之间比较

  • -eq 等于(equal) -ne 不等于(not equal)
  • -lt 小于(less than) -le 小于等于(less equal)
  • -gt 大于(greater than) -ge 大于等于(greater equal)

注:如果是字符串之间的比较 ,用等号“=”判断相等;用“!=”判断不等。

(2)按照文件权限进行判断

  • -r 有读的权限(read)
  • -w 有写的权限(write)
  • -x 有执行的权限(execute)

(3)按照文件类型进行判断

  • -e 文件存在(existence)
  • -f 文件存在并且是一个常规的文件(file)
  • -d 文件存在并且是一个目录(directory)

多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令,|| 表示上一条命令执行失败后,才执行下一条命令)

演示:

五. read 读取控制台输入

在shell变量中我们知道输入.sh文件参数可以通过特殊变量$n的意义进行操作,但是不可能总是这种输入,shell里面也有类似于C语言中scanf()函数的键盘输入函数,即这里用的read函数。

1.基本语法

  • 语法:read (选项) (参数)
  • ①选项:
    -p:指定读取值时的提示符;
    -t:指定读取值时等待的时间(秒)如果-t 不加表示一直等待
  • ②参数
    变量:指定读取值的变量名

2.演示代码

$ touch read.sh
$ vim read.sh
#!/bin/bash
read -t 7 -p "Enter your name in 7 seconds :" NN
echo $NN

上面两行为终端输入命令,下下面三行即read.sh文件的内容,运行即可。

六.说明

新星计划:Linux运维@刘晨阳导师创作打卡4!

Linux运维之初识shell相关推荐

  1. Linux运维对比:Shell运维 VS Python运维

    目录 一.目的所在 二.实例 2.1.需求 2.2.通过Shell实现 2.3.通过Python实现 2.4.扩展 Shell Python 主要区别: 实现功能: 跨平台性: 一.目的所在 通过简单 ...

  2. linux运维对比python,Linux运维对比:Shell运维 VS Python运维 | 求索阁

    一.目的所在 通过简单的例子去找出Linux运维中使用shell与使用python的一些不同,分析两者的主要特点 二.实例 2.1.需求 1.查询当前主机是否支持超线程 2. 查询当前内存使用情况 2 ...

  3. linux 运维高级脚本生成器,Linux运维系列,Shell高级脚本自动化编程实战

    课程文件目录: Linux自动化运维系列 Shell高级脚本自动化编程实战 [6.1G] ┣━━01.Shell基础概述 [315.1M] ┃ ┣━━1-1 Shell脚本体系概述.mp4 [154. ...

  4. 第13章代码《跟老男孩学习Linux运维:Shell编程实战》

    本书历史上已出版最实战的Shell高级编程实战书籍,没有之一,和市面书籍不同,本书是作者经过18年的运维工作及教学工作后,创新类企业级实战书籍,适合所有学习及从事Linux相关工作的读者. <跟 ...

  5. 合格linux运维人员必会的30道shell编程面试题及讲解

    超深度讲解shell高级编程实战,截至目前shell编程课程国内培训机构最细的课程,不信请看学员表现的水平. 课程牛不牛,不是看老师.课表,而是看培养的的学生水平,目前全免费中伙伴们赶紧看啊. htt ...

  6. linux上安装shell编辑器与linux运维面试题

    分两个部分 一.安装B-shell解释器 安装cygwin  Eclipse要找到安装的bin路径 https://cygwin.com 二.安装编辑器shellEd 下载可以得到一个:net.sou ...

  7. linux cc脚本,Linux运维知识之Linux简单处理CC攻击shell脚本

    本文主要向大家介绍了Linux运维知识之Linux简单处理CC攻击shell脚本,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 第一个脚本是通过查找日志中访问次数过多的ip,并 ...

  8. linux运维自动化脚本,linux运维自动化shell脚本小工具

    linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...

  9. linux运维基础进阶和shell入门,Linux运维工程师从基础到进阶:Shell变量知识梳理...

    原标题:Linux运维工程师从基础到进阶:Shell变量知识梳理 Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂 ...

最新文章

  1. 激活函数之logistic sigmoid函数介绍及C++实现
  2. 数据库学习笔记2--MySQL数据类型
  3. 【IM】关于参数模型和核模型的理解
  4. Error Code: 1052. Column '列名' in where clause is ambiguous
  5. 蓝凌ekp开发_新华教育集团战略升级,携手蓝凌量身定制数字化办公平台
  6. python网页动图_python,tensorflow线性回归Django网页显示Gif动态图
  7. java中filehandler_java – 如何配置特定FileHandler的属性
  8. 20个有用正则表达式
  9. UG模具设计从入门到精通
  10. c语言 分数通分,如何用C语言,实现简单的分数化简
  11. TalkingData
  12. 中国银联在线支付接口开发——前台支付
  13. MySQL数据库中存储引擎和数据类型
  14. N阶幻方入门算法及图解
  15. 员工试用期转正申请书(泸州老窖)
  16. c语言 结构体 选择题,c语言结构体共用体选择题新
  17. 什么是token,如何使用token
  18. html获取问号后的参数,html问号后的值怎么获取
  19. 【ZJOI2009】狼和羊的故事
  20. Invalid bound statement (not found): com.xxx.dao.xxxDao.selectByxx错误

热门文章

  1. 解放双手,一键自动完成2022京东618任务
  2. excel的FILTERXML函数
  3. win11、10下安装eNSP最新系列(1.3.00)并完美运行
  4. 达梦数据库一键化启停脚本设计注意事项
  5. 考研英语 - word-list-6
  6. 应用随机过程笔记 第二周
  7. SpringBoot(JSP的使用)
  8. python 调用dll 东芝_如何在东芝笔记本电脑和Windows 7上使用python进行文本到语音转换?...
  9. 一文教你学会社交论坛小程序开发
  10. 零起点魔兽争霸3UI布局编辑器 预览版