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

01 Shell Script概述

Shell Script概述

一、什么是Shell

​ Shell就是一个解释器,它的作用就是遵循一定的语法将输入的指令或者命令加以解释并传给系统。类似于windows系统的cmd.exe。

​ 分类:

​ 图形shell(GUI shell)

​ Windows explore

​ linux: x windows, KDE, CDE

​ 命令行shell(CLI shell)

​ bsh

​ bash

​ ksh

​ 常见的命令行Shell

​ Bourne Again Shell (bash):Linux操作系统中常见的shell

​ KornShell (ksh):AIX操作系统中常见的shell

​ Bourne Shell (bsh):Apache的Solaris中常见的shell

二、什么是Shell Script

​ Shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件。

​ Windows/Dos下的批处理相似。

​ 就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件。

​ 脚本中包含:

​ 变量

​ Shell 语法

​ 命令

#!/bin/bash#/etc/passwd line count
count=`wc -l /etc/passwd | cut -d' ' -f1'`
num=1
for i in `seq $count` ; dou=`head -$i /etc/passwd | tail -1 | cut -d: -f1`s=`head -$i /etc/passwd | tail -1 | cut -d: -f7`id=`head -$i /etc/passwd | tail -1 | cut -d: -f3`if [ $s == '/bin/bash' ]; thenecho -e "$num\t$u\t$id" >> /tem/test.txtnum=$[$num+1]fi
done

三、第一个Shell Script程序

​ 使用vim/vi命令编辑一个新文件。

​ 新建一个文件test.sh,扩展名为sh(sh代表shell)

​ 第一行声明解释器:

​ 语法:#!——约定的标记(shabang)

​ 如果脚本文件中没有#!这一行,那么它执行时会默认用当前Shell去解释这个脚本

​ 如果#!指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied”。

​ 如果#!指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。

#!/bin/bash
echo "hello world"

四、怎么执行?

​ 直接执行程序文件:

​ 查看sh文件是否有可执行的权限

​ ./sh文件名

# 查看sh文件权限
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 31 Aug 19 03:43 myshell.sh# 运行报错,权限不够
[root@localhost ~]# ./myshell.sh
-bash: ./myshell.sh: Permission denied# 添加执行权限
[root@localhost ~]# chmod u+x myshell.sh # 查看权限
[root@localhost ~]# ll
total 4
-rwxr--r--. 1 root root 31 Aug 19 03:43 myshell.sh# 运行
[root@localhost ~]# ./myshell.sh         
hello world

​ 指定一个解释器去执行sh文件:

​ bash sh文件

# 查看权限
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 31 Aug 19 03:43 myshell.sh# 没有执行权限,也能执行
[root@localhost ~]# bash myshell.sh
hello world

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HTTP 三、http在springboot中得应用
  • 好看的个人导航页面html源码
  • 使用Fign进行客户端远程调用和SpringFormEncoder的使用
  • Docker Container 常用命令
  • 新型PyPI攻击技术可能导致超2.2万软件包被劫持
  • 服务器/linux上登录huggingface网站
  • [UVM]5.config机制 report 消息管理
  • docker装大米cms(damicms)各种cms可用相同办法
  • 开源 AI 智能名片小程序在内容营销中的应用与价值
  • JVM系列(七) -对象的内存分配流程
  • Grafana 在 Linux 系统上安装
  • 打造温馨家居,全屋智能家居解决方案
  • 【大模型实战篇】大模型周边NLP技术回顾及预训练模型数据预处理过程解析(预告)
  • 数据分析:R语言计算XGBoost线性回归模型的SHAP值
  • Latex使用方式
  • Angular4 模板式表单用法以及验证
  • const let
  • java第三方包学习之lombok
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • Mithril.js 入门介绍
  • mysql innodb 索引使用指南
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Spring Boot快速入门(一):Hello Spring Boot
  • supervisor 永不挂掉的进程 安装以及使用
  • Webpack 4 学习01(基础配置)
  • 第十八天-企业应用架构模式-基本模式
  • 关于List、List?、ListObject的区别
  • 聚类分析——Kmeans
  • 开源地图数据可视化库——mapnik
  • 前嗅ForeSpider中数据浏览界面介绍
  • 手写一个CommonJS打包工具(一)
  • 小程序 setData 学问多
  • 小程序开发之路(一)
  • mysql面试题分组并合并列
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (ros//EnvironmentVariables)ros环境变量
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (四)React组件、useState、组件样式
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)Oracle存储过程编写经验和优化措施
  • ***检测工具之RKHunter AIDE
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .java 9 找不到符号_java找不到符号
  • .net 4.0发布后不能正常显示图片问题
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET企业级应用架构设计系列之开场白
  • /bin/bash^M: bad interpreter: No such file or directory
  • /var/log/cvslog 太大
  • @synthesize和@dynamic分别有什么作用?
  • [.NET 即时通信SignalR] 认识SignalR (一)