什么是脚本?

脚本简单地说是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的,可以通过记事本打开和编辑

为什么要学习和使用shell

shell属于内置脚本

程序开发的效率非常高,依赖于功能强大的命令可以迅速的完成开发任务(批处理)

语法简单,代码写起来比较轻送,简单易学

shell简介

shell是一个C语言编写的脚本语言,它是用户与linux的桥梁,用户输入命令交给shell处理,shell将相应的操作传递给内核,内核把处理的结果输出给用户

Linux 基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。

shell分类

1:图形界面shell

GUI shell 是为Unix或者类Unix操作系统构建的一个功能完善操作简单以及界面友好的桌面环境。

2:命令行界面shell

CLI是在用户提示符下键入可执行指令的界面,用户通过键盘输入指令,完成一系列操作。

查看shell 

shell是一个程序,一般放在/bin或者/user/bin目录下,当前linux系统可用的shell都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,你可以在图形界面下打开它,也可以使用cat命令查看他。

在现在的linux上,sh已经被bash代替,/bin/sh往往是指向/bin/bash的符号链接

如果你希望查看当期那linux的默认shell,那么可以输出SHELL环境变量

$ echo $SHELL
/bin/bash

输出结果表明默认的shell是bash

SHELL是linux系统中的环境变量,他指明了使用的shell程序的位置,也就是使用的哪个脚本

第一个shell脚本

用vim打开test.sh

#!/bin/bash
echo "Hello world!"

第一行是指定解释器,第二行是打印Hello World!

写好后,有三种执行脚本的方法

方法一:直接用bash解释器执行

# bash test.sh
Hello world!

当前终端会新生成一个子 bash 去执行脚本。

方法二:添加可执行权限

# ll
test.sh -rw-r--r--. 1 root root 32 Aug 18 01:07 test.sh# chmod +x test.sh# ./test.sh
-bash: ./test.sh: Permission denied
# chmod +x test.sh
# ./test.sh
Hello world!

这种方式默认根据脚本第一行指定的解释器处理,如果没写以当前默认 Shell 解释器执行。

注意,这里在运行时一定要写成 ./test.sh(绝对路径亦可),而不是 test.sh,运行其它二进制的程序也一样,直接写 test.sh,Linux 系统会去 PATH(环境变量) 里寻找有没有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 test.sh 是会找不到命令的,要用 ./test.sh 告诉系统说,就在当前目录找。

方法三:source命令执行,以当前默认shell解释器执行

# source test.sh
Hello world!

三种方法的区别:

当shell脚本具有可执行权限时,用bash与绝对路径执行脚本是没区别的。绝对路径是因为当前目录没在PATH中,所以用"."是用来表示当前目录的

source这个命令其实只是简单地读取脚本里面的语句一次在当前的shell里面执行,没有建立行的子shell。那么脚本里面所有的新建、改变变量的语句都会保存在当前的shell里面

bash重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell

shell编程的几个常用命令

grep命令详解

过滤来自一个文件或者面准输入匹配模式的内容

除了grep外,还有egrep。egrep是grep的扩展,相当于grep -E

grep常用选项

    选项             

描述

-E,--extended-regexp

模式是扩展正则表达式(ERE)

 -i,--ignore-case

忽略大小写

 -n,--line-number

打印行号

 -o,--only-matching

只打印匹配的内容

 -c,--count

只打印每个文件匹配的行数

 -B,--before-context=NUM

打印匹配的前几行

 -A,--after-context=NUM

打印匹配的后几行

-C,--context=NUM

打印匹配的前后几行

--color[=WHEN],

 匹配的字体颜色

-v,--invert-match

 打印不匹配的行

cut命令

使用说明:

cut命令从文件的每一行剪切字节,字符和字段并将这些字节,字符和字段写至标准输出

如果不指定file参数,cut命令将读取标准输入

常用参数:

-c:以字符为单位进行分割

-d:自定义分隔符

-f:与-d一起使用,指定显示哪个区域

[root@ken ~]# echo "this is ken" | cut -c  4
s
[root@ken ~]# echo 'this is ken' | cut -d' ' -f3
ken

sort命令

sort命令用于将文本内容加以排序

sort可针对文本文件的内容,以行为单位来排序

常用参数说明:

*  -n:依据数值的大小排序(默认是根据字符进行排序)

*  -r:以相反的顺序来排序

*  -u:去除重复的行(只要那个指定的字段重复,就认定是重复的行)

   -t:<分隔符号>指定排序时所用的栏位分割字符

   -k:根据切割后的那一段进行排序

uniq命令

作用:去除重复的行(相邻且相同,认定为重复)

选项:

  -c:在首行用数字表示该行出现了多少次

  -u:仅仅显示那些没有出现重复过的行

seq命令

作用:生成一个数组序列

[root@ken ~]# seq 5       #终止位5
1
2
3
4
5
[root@ken ~]# seq 2 5     #起始位2,终止位5
2
3
4
5
[root@ken ~]# seq 2 2 10  #起始位2,步长为2,终止位10
2
4
6
8
10

tr命令

作用:突然命令用于转换或者删除文件中的字符

tr指令从标准输入设备读取数据,经过字符串转义后,将结果输出到标准输出设备

a-z  任意小写

A-Z  任意大写

0-9  任意数字

替换实例:

[root@ken ~]# echo "this is ken" | tr a-z A-Z
THIS IS KEN
[root@ken ~]# echo "THIS IS KEN" | tr A-Z a-z
this is ken

删除特定字符串实例:

[root@ken ~]# cat test
6 this:is:ke3
2 this:is:ke4
2 this:is:ke4
2 this:is:ke4
2 this:is:ke4
5 this:is:ke2
6 this:is:ke1
1 this:is:ke6
8 this:is:ke7
[root@ken ~]# cat test | tr -d 's'
6 thi:i:ke3
2 thi:i:ke4
2 thi:i:ke4
2 thi:i:ke4
2 thi:i:ke4
5 thi:i:ke2
6 thi:i:ke1
1 thi:i:ke6
8 thi:i:ke7

转载于:https://www.cnblogs.com/it-ljm1903/p/10867321.html

shell脚本简介及常用文本编辑命令相关推荐

  1. shell脚本编写之常用基础命令(diff、patch、cut、sort、uniq、与||、test、tr)

    文章目录 一.shell(计算机壳层) 二.shell中常用的基本命令 1.diff 命令(比对文件) 1.1 基本概念以及命令的格式 1.2 结果读取方式 1.3 diff中常用的参数 2.patc ...

  2. (四) Shell脚本简介,变量的定义、引用、删除,常见状态和运算符,命令,软件的安装和维护(RPM),软件的安装和维护(yum)

    1,课程回顾 2,本章重点 shell 脚本 软件管理(rpm yum) 3,具体内容 3.1 Shell脚本简介 3.1.1 什么是shell脚本 1.当命令不在命令行中执行,而是从一个文件中执行时 ...

  3. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  4. 面向dba的linux shell 脚本简介,面向 DBA 的 Linux Shell 脚本简介

    DBA:Linux 面向 DBA 的 Linux Shell 脚本简介 作者:CasimirSaternos 学习一些在 Linux 上安装.运行和维护 Oracle 数据库所需的基本 bash sh ...

  5. Shell 脚本中如何使用make命令

    最近开发的项目中需要编写Shell脚本对整个工程进行自动化编译,即在Shell脚本中使用make命令来进行编译,下面回顾一下Shell脚本中如何使用make命令) 在开发一个系统时,一般是将一个系统分 ...

  6. linux脚本简介,Linux Shell脚本简介

    Shell 诞生于 Unix,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,请先参考Unix/Linux入门教程,了解 Unix/Lunix 基础. 近几年来,Shel ...

  7. shell脚本编写时的必备命令(文章末尾含几个简单应用的脚本实例)

    一.书写shell脚本时的常用命令 脚本是一种解释型语言.一般以 .sh 结尾用shell脚本保存执行动作:用脚本判定命令的执行条件:用脚本来实现动作的批量执行. ##脚本的执行一般有两种方法(这里以 ...

  8. bash特性以及shell脚本简介

    bash的特性之多命令执行的逻辑关系: 1.命令替换 COMMAND1 $(COMMAND2) 2.管道 COMMAND1 | COMMAND2 | COMMAND3 ... 3.顺序执行结构 COM ...

  9. 面向dba的linux shell 脚本简介,面向dba的linuxshell脚本简介.doc

    面向dba的linuxshell脚本简介.doc 面向DBA的LinuxShell脚本简介7年前,Oracle发布了Linux上的第一个商业数据库.从那时起,Oracle.RedHat和Novell/ ...

最新文章

  1. 2017年大数据的十大发展趋势
  2. laravel php配置,PHP Laravel框架路由配置及设置技巧全解
  3. 六十九、数据结构链表的实现
  4. JavaWeb课程复习资料(十)——修改功能
  5. Oracle数据库卸载
  6. 瀑布流JavaScript
  7. 数据结构排序系列详解之三 冒泡排序
  8. saltstack 自动化运维神器(四)salt-ssh
  9. pop3协议手机开通服务器,手机服务器pop3设置方法
  10. 论文写作笔记4 期刊选择-医学计算机
  11. [ecshop 资料]ecshop积分充值可充值等级积分余消费积分教程 pay_points
  12. 华为大数据生态适配地图
  13. javac不是内部或外部命令,也不是可运行的程序 或批处理文件的细节问题(window10)
  14. java中的相对路径和绝对路径,获取一个文本上每个字符出现的次数
  15. HTML简单汇总(不全)
  16. 回归年、恒星年、太阳日、恒星日和闰秒相关知识
  17. 使用 canvas 实现 js 取渐变色某段色值
  18. mysql 密码 enc_配置文件的属性ENC加密
  19. 基于多目标算法的冷热电联供型综合能源系统运行优化 多目标粒子群 冷热电联供 综合能源系统 运行优化
  20. class wizard entry is missing的解决方法

热门文章

  1. Android JNI利用opengl渲染文字 (二)
  2. 在阿里云里面服务器怎么样可以更好的链接数据库
  3. 原来论文收版面费已经成惯例
  4. 一加手机怎么导出照片_一加手机视频删除了怎么恢复-互盾安卓恢复大师
  5. Git 使用教程,最详细,最傻瓜,最浅显,小姐姐真正手把手教会你
  6. ※ 绘制炸弹轨迹 III——绘制一条轨迹
  7. Docker复习08——Docker-compose容器编排
  8. 都2022年了,你还不会用Python预测茅台股票涨跌吗?
  9. Redhat team链路聚合
  10. 【搜索】:罗纳尔多和C罗是一个人吗?