shell 脚本中的基本知识

本文深入浅出地介绍了Linux系统中的Shell概念及其作用,详细阐述了Shell作为用户与操作系统间桥梁的重要地位。通过实例演示了如何使用Shell脚本进行系统信息获取、用户管理及日志清理等操作,为初学者提供了实用的脚本编写技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell介绍

Linux系统是一个多任务,多用户的操作系统,内核负责任务的调度与管理,为了阻碍外界直接对内核进行操作,就加一层shell来保护内核,文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。(百度百科)
shell 也是操作系统中的一个软件。它包在 linux 内核的外面,为用户和内核之间的交互提供了一个接口,系统中的命令用 shell 去解释shell 接收系统回应的输出并显示其到屏幕中,它可以保护内核不受其他程序的篡改。
shell/python/perl 解释型语言 自带解释器(可直接运行)
java 描述型语言 代码–>字节码,面向对象
c 描述型语言 编译–>机器码,面向过程

shell 脚本的执行

在这里插入图片描述
在这里插入图片描述
sh script.sh #在当前shell下新打开一个shell,以shell执行脚本
在这里插入图片描述
在这里插入图片描述
source script.sh #在当前shell下直接执行,根据脚本里写的解释器执行
在这里插入图片描述
. script.sh #和上一个相同
在这里插入图片描述
chmod +x script.sh
./script.sh #只有这个需要执行权限,+x,以绝对路径运行,“.“表示当前路径,新打开一个shell运行脚本
在这里插入图片描述
脚本执行跟踪:
sh -x lu.sh #+代表命令,不带+代表显示的信息
vim lu.sh
#!/bin/sh
date
cal
cat
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

shell 脚本的创建

vim script.sh #用 vim 编写脚本
#!/bin/bash #脚本使用的解释器,通常用幻数 “#!” 指定
#AUTHOR #脚本作者
#DATE #脚本创作时间
#MAIL #脚本作者联系方式
#VERSION #脚本的版本
vim /etc/vimrc
map < F9> ms:call WESTOS()< cr>'s #用快捷键F9写入以下信息
autocmd BufNewFile *.sh exec “:call WESTOS()” #在创建脚本时直接写入以下信息
function WESTOS()
call append(0,"################################")
call append(1,"# Author: lu #")
call append(2,"# Create_Date:".strftime("%Y-%m-%d %H:%M")." #")
call append(3,"# Version: 4.0 #")
call append(4,"# Mail: lu@redhat.com #")
call append(5,"# Description: #")
call append(6,"# #")
call append(7,"# #")
call append(8,"################################")
call append(9,"")
call append(10,"#!/bin/sh")
endfunction
用快捷键F9写入:在这里插入图片描述
vim lu.sh #建立新脚本
在这里插入图片描述
按F9之后:
在这里插入图片描述
新建脚本之后直接写入:
在这里插入图片描述
在这里插入图片描述
脚本页面美化之后:
在这里插入图片描述

脚本示例

怎么给脚本的输出加其他各种格式:
在这里插入图片描述
执行 ip_show.sh #显示当前主机的 ip 地址
#!/bin/sh
ifconfig | awk ‘/inet>/&&!/127.0.0.1/{print $2}’
在这里插入图片描述
在这里插入图片描述
执行 user_show.sh #显示当前主机中能登陆系统的用户
#!/bin/sh
awk -F : ‘/bash $/{print $1}’ /etc/passwd
在这里插入图片描述
在这里插入图片描述
执行 host_message.sh #显示当前主机的名称, ip ,以及能够登陆系统的用户
#!/bin/sh
echo hostname:
hostname
echo ip:
ifconfig | awk ‘/inet>/&&!/127.0.0.1/{print $2}’
echo user:
awk -F : ‘/bash $/{print $1}’ /etc/passwd
在这里插入图片描述
在这里插入图片描述
执行clear_log.sh #执行命令后可以清空日志
#!/bin/sh
[ " $USER" = “root” ]&&{ #先判定是否为root用户,只有root用户才能清空日志
> /var/log/messages
echo -e “\033[32mThe log has been emptied\033[0m”
}||{
echo -e “\033[31mThis script must run with root !!!\033[0m”
}
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值