shell脚本基本常用命令 grep echo alias别名 快捷键 history 输出重定向 管道符 通配符解释说明

一. Shell是什么

   Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的方法。
   Shell 是界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
   Shell 是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。
   Shell 是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。

二. Shell的分类

   1. Bourne Shell:从1979年起Unix就开始使用Bourne Shell,Bourne Shell的主文件名为sh。
   2. C Shell:C Shell主要在BSD版的Unix系统中使用,其语言和C语言相似而得名。

   Shell的主要语法类型有Bourne和C,这两种语法彼此不兼容。
   Bourne家族主要包括:sh、ksh、psh、zsh;
   C家族主要包括:csh、tcsh

查看当前计算机运行的shell
		echo $SHELL
查看当前计算机支持的shell 
		vi /etc/shells
进入一种shell语言环境
		shell家族的名称即可 eg : bash   或 sh   退出使用 : exit

三. 文本处理工具grep

工具 
		# grep [选项] '关键字' 文件名
		
		常见选项:
			options:
				-i:不区分大小写
				-v:查找不包含指定内容的行,反向选择
				-w:按单词搜索
				-o:打印匹配关键字
				-c:统计匹配到的次数
				-n:显示行号
				-r:逐层遍历目录查找
				-A:显示匹配行及后面多少行
				-B:显示匹配行及前面多少行
				-C:示匹配行及前后多少行
				-l:只列出匹配的文件名
				-L:列出不匹配的文件名
				-e:使用正则匹配
				-E:使用扩展正则匹配
				^key:以关键字开头
				key$:以关键字结尾
				^$:匹配空行
				--color=auto:可以将找到的关键字部分加上颜色显示
		eg:# grep --color=auto 'root' original-ks.cfg  这个只是当前有效

查询文件指定内容:

[root@wskh logs]# grep -C 10  name=sec catalina.out 

查询文件catalina.out 中内容包含 name=sec 前后10行内容搜索显示

四. 别名 alias

	a)查看系统中的所有别名
		# alias 						
	b)起别名
		# alias 别名= '原命令'    	
		eg:alias grep='grep --color=auto' 临时生效
			可以在/etc/bashrc 文件后追加 alias grep='grep --color=auto'  保存对所有用户生效
			或 vim ~/.bashrc     ///把别名写入环境配置文件
	c)删除别名	 临时删除
		# unalias 别名     
	d)命令的生效顺序
		第一顺位执行用绝对路径或相对路径执行的命令。
		第二顺位执行别名
		第三顺位执行Bash的内部命令
		第四顺位执行按照$PATH环境变量定义的目录查找顺序找到第一个命令
			
		# echo $PATH   可以查看环境变量,外部执行bash命令都在环境变量中有定义才能执行

五. 快捷键

	ctrl + c 强制终止当前命令
	ctrl + l 清屏
	ctrl + a 光标移动到命令行首
	ctrl + e 光标移动到命令行尾
	ctrl + u 从光标所在位置删除到行首
	ctrl + z 把命令放入后台 ,但是命令并没有终止
	ctrl + r 在历史命令中搜索

六. 文件查看less

   lessmore 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且less 在查看之前不会加载整个文件。可以通过Shift+G到达文件底部。

语法:less [参数] 文件

参数说明:
	-b <缓冲区大小> 设置缓冲区的大小
	-e 当文件显示结束后,自动离开
	-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
	-g 只标志最后搜索的关键词
	-i 忽略搜索时的大小写
	-m 显示类似more命令的百分比
	-N 显示每行的行号
	-o <文件名> 将less 输出的内容在指定文件中保存起来
	-Q 不使用警告音
	-s 显示连续空行为一行
	-S 行过长时间将超出部分舍弃
	-x <数字> 将"tab"键显示为规定的数字空格
	/字符串:向下搜索"字符串"的功能
	?字符串:向上搜索"字符串"的功能
	n:重复前一个搜索(与 / 或 ? 有关)
	N:反向重复前一个搜索(与 / 或 ? 有关)
	b 向上翻一页
	d 向后翻半页
	h 显示帮助界面
	Q 退出less 命令
	u 向前滚动半页
	y 向前滚动一行
	空格键 滚动一页
	回车键 滚动一行
	[pagedown]: 向下翻动一页
	[pageup]: 向上翻动一页

七. 历史命令查询

1. 命令
	# history [选项] [历史命令保存文件]
	  选项:
		-c :清空历史命令
		-w :把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
			  历史命令保存文件保存的是本次开机之前的历史命令 ,也可以通过 history -w 手动保存

2.历史命令默认保存1000条,可以在环境变量配置文件 /etc/profile中进行修改
	保存历史命令条数 : HISTSIZE=1000
3.历史命令的调用
	a)使用上、下箭头调用以前的历史命令
	b)使用  !n 		重复执行第n条历史命令
	c)使用  !! 		重复执行上一条命令
	d)使用  !字串 	重复执行最后一天以该字串开头的命令
4.命令与文件补全
	在Bash中,命令与文件补全是非常方便与常用的功能,我们在输入命令或文件时,
	按 Tab键自动补全
	
	如果不能自动补全说明有多个形同开头的命令或文件,
	此时再次按下 Tab键 就会显示与当前输入相同开头的文件或命令

八. 输出重定向

1.标准输入输出

设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出

2.输出重定向

错误输出中 ‘>’ 、’>>'两边的内容必须紧密相连

类型符号作用
标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出 输出到指定的文件或设备中。
eg:# ifconfig > a.txt
命令 >> 文件以追加的方式,把命令的正确输出 输出到指定的文件或设备中。
eg:# ifconfig > a.txt
标准错误输出重定向错误命令 2>文件以覆盖的方式,把命令的错误输出 输出到指定的文件或设备中。
eg:# ifconfigsdfas > a.txt
错误命令 2>>文件以追加的方式,把命令的错误输出 输出到指定的文件或设备中。
eg:# ifconfigsdfas > a.txt
正确输出和错误输出命令 > 文件 2>&1以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
eg:# ifconfig > a.txt 2>&1
同时保存命令 >>文件 2>&1以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
eg:# ifconfig >> a.txt 2>&1
命令 &>文件以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
eg:# ifconfig &> a.txt
命令 &>>文件以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
eg:# ifconfig &>> a.txt
命令>>文件1 2>>文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中。
eg:# sdfasd>>a.txt 2>>b.txt

3. /dev/null ---- Linux中的’黑洞’

eg: 相当于windows 中的垃圾回收站,放进去的文件都会被销毁,
	 ls>>a.txt 2>>/dev/null    错误文件内容将会被抛弃

4. 输入重定向

# wc [选项][文件名]     wc 字符内容 :统计键盘输入的内容   按 ctrl+D 开始统计
	选项:
		-c 统计字节数
		-w 统计单词数
		-l 统计行数
	eg:
		# wc < 文件名 <===> # wc 文件名	 :把文件作为命令的输入
		# wc << 标识符     			 :统计标识符之间的内容
	eg:# wc << aaaa
			>	dfasdf
			>	asdf
			>	aaaa
		.......
		标识符把标识符之间的内容作为命令的输入

九. 管道符

  管道符是一个非常实用的linux 命令,它的意义是 将管道符前面的输出 传递到 管道符后面命令的输入 。相当于是一个层级过滤,就是把前的查询的结果 筛选后 得到二次或多次过滤的结果。

1. 多命令顺序执行

多命令执行符格式所用
:命令1:命令2多个命令顺序执行,命令之间没有任何逻辑关系
&&命令1&&命令2逻辑与
当命令1正确执行,则命令2才会执行
当命令1执行不正确,则命令2不会执行
||命令1 ||命令2逻辑或
当命令1执行不正确,则命令2才会执行
当命令1正确执行,则命令2不会执行

2. 命令格式

	# 命令1 | 命令2     ///命令1的正确输出作为命令2的操作对象
	eg:
		# ls -l | more
		# ps -ef | grep redis

3. 通配符

通配符作用
?匹配一个任意字符
*匹配0个多个任意字符 eg:# ls tty*
[]匹配括号中的任意一个字符, eg:[abc] 匹配其中一个
[-]匹配括号中的任意一个字符, -代表范围 eg:[a-z]
[^]逻辑非,表示匹配不是括号内的一个字符, eg:[^0-9] 匹配一个非数字字符
eg: # ls tty[^0-9]

4. Bash中的其他特殊符号

符号作用
‘’单引号。其中的内容都是文本,不可执行
“”双引号。在双引号中的特殊符号都没有特殊的含义,但是 “$”,"`“和”"是例外,拥有 “调用变量的值”、"引用命令"和"转移符"的特殊含义。
``反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和 ( ) 作 用 一 样 , 不 过 推 荐 使 用 ()作用一样, 不过推荐使用 ()使(),因为反引号非常容易看错。
$()和反引号作用一样,用来引用系统命令。
#再Shell脚本中,#开头的行代表注释
$用于调用变量的值,如需调用变量name的值时,需要用$name的方式得到变量的值。
\转移符。跟在\之后的特殊符号将失去特殊含义,变为普通字符。如$将输出"$"符号,而不是当做变量引用
	// 打印变量中的值
	eg1:
		[root@localhost dev]# aa='123456'
		[root@localhost dev]# echo $aa
		123456
	// 调用变量中对应的命令:
	eg2:
		[root@localhost test]# bb=`ls`
		[root@localhost test]# echo $bb
		a.sh

参考学习源

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值