关键词:
什么是脚本?
脚本简单地说是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的,可以通过记事本打开和编辑
为什么要学习和使用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一起使用,指定显示哪个区域
[[email protected] ~]# echo "this is ken" | cut -c 4 s
[[email protected] ~]# echo ‘this is ken‘ | cut -d‘ ‘ -f3 ken
sort命令
sort命令用于将文本内容加以排序
sort可针对文本文件的内容,以行为单位来排序
常用参数说明:
* -n:依据数值的大小排序(默认是根据字符进行排序)
* -r:以相反的顺序来排序
* -u:去除重复的行(只要那个指定的字段重复,就认定是重复的行)
-t:<分隔符号>指定排序时所用的栏位分割字符
-k:根据切割后的那一段进行排序
uniq命令
作用:去除重复的行(相邻且相同,认定为重复)
选项:
-c:在首行用数字表示该行出现了多少次
-u:仅仅显示那些没有出现重复过的行
seq命令
作用:生成一个数组序列
[[email protected] ~]# seq 5 #终止位5 1 2 3 4 5 [[email protected] ~]# seq 2 5 #起始位2,终止位5 2 3 4 5 [[email protected] ~]# seq 2 2 10 #起始位2,步长为2,终止位10 2 4 6 8 10
tr命令
作用:突然命令用于转换或者删除文件中的字符
tr指令从标准输入设备读取数据,经过字符串转义后,将结果输出到标准输出设备
a-z 任意小写
A-Z 任意大写
0-9 任意数字
替换实例:
[[email protected] ~]# echo "this is ken" | tr a-z A-Z THIS IS KEN [[email protected] ~]# echo "THIS IS KEN" | tr A-Z a-z this is ken
删除特定字符串实例:
[[email protected] ~]# 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 [[email protected] ~]# 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
基本shell脚本的边界及变量(代码片段)
shell脚本与变量 shell脚本的用途:自动化常用命令执行系统管理和故障排除创建简单的应用程序处理文本或文件 shell脚本编写格式:第一行:shebang机制用#加shell类型开头后续可直接跟命令,用命令达到需要的效果即... 查看详情
shell脚本和常用命令(代码片段)
什么是脚本?脚本简单地说就是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的(如可以用记事本打开查看、编辑)。 常见的脚本:JavaScript(JS,前端),VBScript,ASP,JSP,PHP(后端),SQL(数据库操作... 查看详情
shell简介(代码片段)
1.前言1.1脚本 脚本简单地说就是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的(如可以用记事本打开查看、编辑)。 常见的脚本: JavaScript(JS,前端),VBScript, ASP,JSP,PHP(后端),SQL... 查看详情
shell脚本sed命令行编辑器(代码片段)
sed编辑器被称为流编辑器。sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在命令文本文件中。sed命令并不会影响原本文件,只会重新把改变的内容输出,如果需要改变原... 查看详情
10个面试及实战常用shell脚本(代码片段)
...量,避免污染其他作用域。5)有两个命令能帮助我调试脚本:set-e遇到执行非0时退出脚本,set-x打印执行过程。6)写脚本一定先测试再到生产上。1获取随机字符串或数字获取随机8 查看详情
第1期ubuntu入门篇:18shell脚本入门(代码片段)
文章目录简介目标阅读基础环境说明参考资料第一个shell脚本输出命令echo输出字符串脚本交互式shell脚本输入输出命令单个参数输入脚本多个参数输入脚本shell脚本的数值计算test测试命令test命令&&和||命令测试文件是否存在... 查看详情
shell常用命令-source(代码片段)
...令-source01概念02作用03sourcefilename与shfilename及./filenmae执行脚本对比前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^_^。 而且听说点赞的人每天的运气都不会太差,实... 查看详情
文本处理工具和正则表达式shell脚本编程(代码片段)
一、文本编辑工具VIM●命令模式-->插入模式i insert,在光标所在处输入I 在当前光标所在行的行首输入a append,在光标所在处后面输入A 在当前光标所在行的行尾输入o 在当前光标... 查看详情
shell脚本sed命令行编辑器(代码片段)
sed编辑器被称为流编辑器。sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在命令文本文件中。sed命令并不会影响原本文件,只会重新把改变的内容输出,如果需要改变原... 查看详情
linux下shell脚本命令行参数:getoptgetopts用法(代码片段)
...tions][--]在shell中使用它getopts简介简介我们通常在编写shell脚本时简单的方式是通过参数的方式来取到我们想要的参数,如:#!/bin/bashSYSCODE 查看详情
linux下shell脚本命令行参数:getoptgetopts用法(代码片段)
...tions][--]在shell中使用它getopts简介简介我们通常在编写shell脚本时简单的方式是通过参数的方式来取到我们想要的参数,如:#!/bin/bashSYSCODE 查看详情
shell脚本语言学习总结(代码片段)
Shell是一种脚本程序,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。编写第一个Shell程序 在linux命令行执行[root@iz2zeexr9tk4ckr7dp9vwsztest]#echo"我的第n个shell程序"我的第n个shell程序 打开文本编... 查看详情
shell脚本简介+编写(代码片段)
1、常用Linux命令2、Linux下脚本编写3、windows下CMD常用命令文章目录一、变量1、系统预定义变量2、自定义变量3、特殊变量:n、n、n、#、∗、*、∗、@、$?二、运算符三、条件判断1、两个整数之间比较2、文件权限判断3、文... 查看详情
sed和gawk(代码片段)
sed和gawk是shell脚本中必须熟练掌握的两个命令工具;这一节我们详细掌握sed命令的用法;1、文本处理 sed和gawk为Linuxshell脚本下最常用的行编辑器; 1.1、sed编辑器 流编辑器(streameditor),与普通的交互式文本... 查看详情
redis数据库的简介部署及常用命令(代码片段)
Redis数据库的简介、部署及常用命令前言一、关系数据库与非关系型数据库概述1、关系型数据库2、非关系型数据库3、关系数据库与非关系型数据库区别(1)数据存储方式不同(2)扩展方式不同(3)对事... 查看详情
java调用shell命令及脚本
shell脚本在处理文本及管理操作系统时强大且简单,将shell脚本结合到应用程序中则是一种快速实现的不错途径本文介绍使用java代码调用并执行shell我在~/bin/目录下写了jbossLogDelivery.sh,有两个功能{./jbossLogDelivery.shlist}作用是输... 查看详情
01-shell-简介及第一个脚本(代码片段)
目录什么是shell常见shell种类第一个shell脚本运行shell脚本什么是shellShell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell是指一种应用程序,这个应用程序提... 查看详情
lamp架构nginx简介及源码安装常用命令(代码片段)
...x/windows+apache/nginx+mysql/pgsql+php/python/golang一、nginx简介01_Nginx介绍Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器。其... 查看详情