Linux shell 脚本分享

Shell 是一个命令解释器,处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户,Shell 它是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁,同时,Shell 也可以作为一门强大的编程语言

理论

我们常说的 Shell 是命令行解释器的意思,也有内核上的一层壳的含义,Shell 常见的几种类型有 sh、csh、bash、zsh 等提供的脚本支持.

Shell 诞生于 Unix,是与 Unix/Linux 交互的脚本编程,单独地学习 Shell 是没有意义的,有 Linux 基础的同学应该知道,Linux 都默认集成了 Shell 环境,Shell 的功能点在于外部命令的使用.

其内部数据处理方面,侧重文本(或者说字符串,或字符流)处理,而对运算和其他基本数据结构的原生较弱(例如常用的 array、set、map 等等), 功能目标在于实现命令自动化.

但是呢,实现命令自动化的同时,Shell 需要依赖其他程序才能完成大部分的工作,这是它的缺陷也是一个优点吧,但它不容置疑的长处是:简洁的脚本语言标记方式,而且比 C 语言编写的程序执行更快、更有效率.

所以我们如果有做运维甚至是基础管理 Linux 服务器的朋友,只要学会了 Shell 编程,大大的可以节约我们的时间,更快捷的管理我们的服务器了.

Bash 是 Linux 标准默认的 Shell,是 BourneAgain Shell 的缩写,因为 bash 有很多特性,比如:可以使用类似 DOS 下面的 doskey 的功能,用方向键查阅和快速输入并修改命令。自动通过查找匹配的方式给出以某字符串开头的命令

还有就是 bash 包含了自身的帮助功能,你只要在提示符下面键入 help 就可以得到相关的帮助,在 Linux 系统中我们经常看见以:#!/bin/bash 开头的文件内容,这就是声明了该文件是一个基于 bash 的 Shell 编程文件

干货

有这么一个程序 :

#!/bin/bashcd /home/liwei/mongodb/bin./mongod --dbpath=../liwei_db

我们知道计算在执行指令的时候,是一条一条执行的。那么很好理解以上这 3 行。依次操作的目的是:进入 mongodb/bin 目录,接着执行启动 mongodb 数据,保存为 m.sh, 这样,只要我们在 Linux 终端执行一条:sh m.sh,回车,计算就会依次执行指令,达到启动 mongodb 数据库的功能.

那么要执行更多的指令,可以么?回答肯定是可以,如果我们需要执行上百行指令,单独执行的话,我们要重复操作,那么把它们依次写入一个 Shell,这样来执行的时候就可以很方便了,执行 Shell 的过程中,我们可以通过 > 或者 >> 来记录下一些节点的结果报告.

比如这么一个 shell:

#!/bin/bashcd /lampls *.tar.gz > ls.listfor TAR in `cat ls.list`dotar -zxf $TARdone

这个 Shell 要解决的实际问题是将 lamp 目录里面所有的压缩包,批量解压出来,这样我们可以看出 ls 的结果集可以拿出来参与下一个指令的执行

那么我们现在有个需求就是将某个文件夹下所有的文件名字里的大写字母改成小写字母,如果要人工一个个改的话,但是找文件就够眼花蛋疼了,这个时候 Shell 就发挥了强大的力量了

#!/bin/bashfor file in `ls | grep '[A-Z]'`dostr=`echo $file|tr 'A-Z' 'a-z'`mv $file $str

这样就很好的解决了一个复杂的操作

有时候我们在管理文件的时候需要将空文件,没用的文件全删掉

for filename in `ls`doif test -d $filenamethen b=0else  a=$(ls -l $filename | awk '{ print $5 }') if test $a -eq 0 then rm $filename fifi done

针对于 Shell 编程,远远不止我给大家分享的这些,还有很多强大的地方,大家慢慢的挖掘吧。

以上就是Linux shell 脚本分享的详细内容,希望对你有所帮助。

shell脚本自动回车_干货分享:Linux shell脚本分享!!快收藏起来吧相关推荐

  1. linux中将文本中的单词换掉的指令_干货:Linux常用命令全称及讲解

    从事IT行业的很多人都会使用Linux常用命令,但是知道这些常用命令全称的人并不多,让我们来看看这些常用命令对应的全称吧!小编精心整理了一下,毕竟常用命令比较多,如果没有你常用的还望海涵,可以评论区补 ...

  2. linux常用命令_干货:Linux常用命令全称及讲解

    从事IT行业的很多人都会使用Linux常用命令,但是知道这些常用命令全称的人并不多,让我们来看看这些常用命令对应的全称吧!小编精心整理了一下,毕竟常用命令比较多,如果没有你常用的还望海涵,可以评论区补 ...

  3. jstack 脚本 自动日志_运维老司机又翻车, 居然没用过日志切割Logrotate

    运维老司机又翻车, 居然没用过日志切割Logrotate 作为一个运维老司机, 这次又翻车了.只能说明一个原因, 就是菜, 所有才要多学习. 说起日志切割, 自己可以说是溜的一批.基本的套路就是在cr ...

  4. c语言打开当前目录下的文件_干货||嵌入式Linux下的C编程知识要点总结

    一 基本开发环境 Linux和C语言有着很深的渊源,因为Linux本身就是用C语言编写的.同时,在Linux操作系统中也提供了C语言的开发环境.这些开发环境一般包括程序生成工具.程序调试工具.工程管理 ...

  5. linux shell 函数 格式化,速查笔记(linux shell编程)

    零.shell中的内部变量: 1. $?:    表示shell命令的返回值. 2. $$:    表示当前shell的pid. 3. $!:    最后一个放入后台作业的PID值. 4. $0:   ...

  6. shell 查某个字符串_操作系统_4:shell基础 - 一路向北321

    目录: 1.Shell是什么?1分钟理解Shell的概念! 2.Linux Shell脚本攻略 3.一篇文章让你彻底掌握 shell 语言 1.Shell是什么?1分钟理解Shell的概念! 现在我们 ...

  7. 用python编写脚本计算linux_利用Python3实现Linux的脚本功能 !

    Python 3的更新已经有一段时间了,相比较于Python2也有许多不同的改变,Python 3 在Linux中也是利用比较多的,这里主要实践了一些Python3利用Linux的脚本执行命令. !/ ...

  8. shell实行mysql语句_【Mysql】shell运行mysql的sql语句_MySQL

    bitsCN.com [Mysql]shell运行mysql的sql语句 shell本身是一种脚本语言,所以不能像java一样通过api去连接数据库.shell还是要借助mysql本身的一些运行脚本才 ...

  9. python脚本的编写_记一次python脚本的编写过程

    糖豆贴心提醒,本文阅读时间6分钟 因工作需求要写一个python脚本,来测试memcache服务器. 因为第一次写python脚本在线上运行,所以不敢大意.而又因为我自己看着python教程自学了一点 ...

最新文章

  1. ActionScript 3.0 编程精髓 示例源码下载
  2. 802.11协议基础
  3. 使用Spring Rest和Spring Data JPA和H2以及Spring Boot示例的Restful API
  4. php中newself(),在php代码中新建对象用到的new self与new static有什么不同
  5. JSP九大内置对象(转载)
  6. 使用序列化反序列化实现学生管理系统
  7. 关于Java String对象创建问题解惑
  8. eva每一集片尾曲是谁唱的_新世纪福音战士片尾曲FLY ME TO THE MOON谁唱的?
  9. JS:ES6-5 rest参数与扩展运算符
  10. andriod搭建自己的轮询框架
  11. 阅兵方阵(蓝桥杯2018真题)
  12. 「源码解读」知名程序员 TJ 的 only 库
  13. vscode 配置ts自动转换成js文件
  14. java实现退出重启后保存_JAVA实现关机、重启等
  15. MySQL派生表联表查询记录
  16. clearcase下的一些常用命令
  17. 浏览器访问一个页面的步骤详解
  18. 如何用Phaser实现一个全家福拼图H5
  19. 深拷贝工具类DeepCopyUtil
  20. 为什么在java中-(2的31次方)*(-1)还是-(2的31次方)(也就是-2147483648)?

热门文章

  1. 在消费女性身材焦虑上,大码女装和BM风没有本质区别
  2. aix如何安装mysql_AIX下安装Mysql
  3. 连接失败_iG.Firefox连接失败?iG新赛季仍未敲定主教练人选
  4. matlab绘图z=sin(x_「matlab画三维图」Matlab 应用之绘制三维图形(基础篇) - seo实验室...
  5. db2关闭下一句sql的日志_DB2_数据库日志管理
  6. kali启动cobaltstrike_Cobalt Strike MetaSploit 联动
  7. matlab变量名不同循环,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!...
  8. 生成树协议实验报告_STP生成树协议
  9. linux网卡热,linux网卡
  10. 上海交大计算机学院张卫东,张卫东