Linux运维之初识shell

简介: Linux运维之初识shell

一.补充知识点

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.演示38218c05fffc1d2c7aa1966790695a05.jpg

3.特殊变量

1. $n

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

 touch parameter.sh
 vim 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 world
 echo $?
0

四.运算符和条件判断

1.运算符

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


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


实际操作:

3704a039591e9682d2a204a5e1d5e8f0.jpg

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)

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


演示:f4493961527fed8427693d622e0cf388.jpg

五. 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!

相关文章
|
13天前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
215 9
|
13天前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
79 2
|
1月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
3月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
238 1
|
5月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
133 4
|
5月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
274 3
|
6月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
446 25
|
6月前
|
Linux Shell
shell_42:Linux参数移动
总的来说,参数移动是Linux shell脚本中的一个重要概念,掌握它可以帮助我们更好地处理和管理脚本中的参数。希望这个解释能帮助你理解和使用参数移动。
102 18
|
6月前
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
|
6月前
|
数据采集 运维 安全
Linux设备命令行运维工具WowKey问答
WowKey 是一款用于 Linux 设备运维的工具,可通过命令行手动或自动执行指令剧本,实现批量、标准化操作,如健康检查、数据采集、配置更新等。它简单易用,只需编写 WIS 指令剧本和 APT 帐号密码表文件,学习成本极低。支持不同流派的 Linux 系统,如 RHEL、Debian、SUSE 等,只要使用通用 Shell 命令即可通吃Linux设备。