shell基本操作指南

本文详细介绍了Shell作为命令解释器和编程语言的基本概念,包括脚本格式、变量管理、流程控制、条件判断及常用工具如sed、awk的使用方法。

shell

shell是什么

shell是一个命令解释器,它接收应用程序/用户命令,然后调用操作系统内核。shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。

shell解析器

Linux提供的Shell解析器有以下六种:
cat /etc/shells

  1. /bin/sh :
  2. /bin/bash : Centos默认的解析器是/bin/bash
  3. /sbin/nologin:
  4. /bin/dash:
  5. /bin/tcsh:
  6. /bin/csh:

shell入门

1.脚本格式
(1) 脚本以 #!/bin/bash 开头 (指定解释器)
(2) 脚本执行方式:
① sh test.sh
② bash test.sh
③ ./test.sh :这种方式需要授予test.sh脚本执行权限
2.shell中的变量

(1)  常用的系统变量
	① $HOME:当前用户的家目录
	② $PWD:当前的目录
	③ $SHELL:默认的解析器
	④ $USER:当前用户
	
(2) 自定义变量
	① 基本语法:变量=值
	② 撤销变量:unset 变量
	③ 声明静态变量:readonly变量,注意:不能unset
	④ 变量定义规则:
		<1> 环境变量名建议大写
		<2> 等号两边不能有空格
		<3> 在bash中,变量默认都是字符串类型,无法直接进行数值运算
		<4> 变量的值如果有空格,需要用双引号或单引号括起来
  1. 特殊变量:$n
    $n (功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,10以上的参数需要用大括号包含,如 ${11} )
  2. 特殊变量:
    ①. $*  :代表命令行中所有的参数,$*把所有的参数都看成是一个整体
    ②  $@ :代表命令行中所有的参数,$@把每个参数区分对待
    ③. $# :代表命令行中的参数个数;eg: sh test.sh para1 para2 ,则$#的值为2
    ④. $? :上一个命令执行的返回状态,如果这个状态值是0,证明上一个命令执行正确,反之不是0,则证明上一个命令执行失败
    

5 运算符

   ① $((运算式))   :$(( 3 + 4 ))
   ② $[运算式] : $[(2+3)\*4]
   ③ expr  + , - , \* , / , % 加,减,乘,除,取余 :*expr `expr 2 + 3`  \\**  4*

6 条件判断

① 【condition】前后要有空格
② 条件非空即为true,反之为false
③常用的判断条件
	<1>两个整数之间的比较
		  = : 字符串比较
		-lt : 小于
		-le : 小于等于
		-eq : 等于
		-ge : 大于等于
		-gt : 大于
		-ne : 不等于
	<2>按照文件权限进行判断
		-r : 有读的权限
		-w :  有写的权限
		-x : 有执行的权限
	<3> 按照文件类型进行判断
		-f : 文件存在,并且是一个常规的文件(file)
		-e : 文件存在
		-d : 文件存在,并且是一个目录(directory)

7 流程控制
① if 判断

if [ 条件 ];then            if [ 条件 ]
	程序						then
else                                程序
	程序                     else
fi		                   			程序
							fi

② case

	case $变量名 in
		"值1")
			程序1
		 ;;
		 "值2")
			程序2
		 ;;
		 *)
			 默认程序
		 ;;

③ for循环

语法1:
for(( 初始值;循环控制条件;变量变化 ))	  s=0
	do						          for(( i=0;i<100;i++ ))
		程序							do
	done									s=$[$s+$i]
										done
										echo $s
语法2
	for 变量 in 值1,值2,值3...     for i in $*
		do                             do
			程序                            echo   "value is $i"
		done						done

④ while循环

while [ 条件表达式 ]
	do
		程序
	done

read读取控制台输入

read 选项 参数

选项:
	-p : 指定读取值时的提示符
	-t :  指定读取值时等待的时间
参数:
	变量:指定读取值时的b变量名
实例:提示7s内,读取控制台输入的名称
	touch read.sh
	vi read.sh
		#!/bin/bash
		read -t 7 -p "Enter your name in 7 seconds " NAME
		echo $NAME
	sh read.sh

函数

1系统函数

① basename: 
	eg: basename /opc/home/aa.txt 
	输出: aa.txt
	eg: basename /opc/home/aa.txt .txt
	输出: aa
② dirname:
	eg: dirname /opc/home/aa.txt 
	输出:/opc/home

2 自定义函数

基本语法
	[funciton] funname[()]
	{
		Action
		[return int;]
	}
funname

在这里插入图片描述

cut 工具

  1. cut [选项参数] filename

选项参数

-f:列号,提取第几列
-d:分隔符,按照指定分隔符分格列

2.实例
eg: cut -d " " -f 1 aa.txt
eg: ifconfig eth0 | grep “inet addr” | cut -d : -f 2 | cut -d " " -f 1

sed工具

1.sed是一种流编辑器。一次处理一行内容,把当前处理的行存储在临时缓冲区中,成为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕,接着处理下一行,这样不断重复,直到文件末尾,文件内容并没有改变,除非你使用重定向存储输出。
2.用法:

	sed [选项参数] 'command' filename
	
	选项参数:
		-e : 直接在指令列模式上进行sed的动作编辑
	命令功能描述:
		a: 新增
		d:删除
		s:查找并替换

3.实例
sed “2a mytest” aa.txt : 将mytest插入到aa.txt的第二行下
sed “/mytest/d” aa.txt :将aa.txt中的mytest删除
sed “s/mytest/youtest/g” aa.txt : 将aa.txt中的mytest替换成youtest
sed -e “2d” -e “s/mytest/youtest/g” :先删除第二行,在替换aa.txt中的mytest为youtest

awk工具

1.一个强大的文本分析工具,把文本逐行的读入,以空格为默认分割符将每行切片,
切开的部分在进行分析处理
2.基本语法
	awk [选项参数] 'pattern1 {action1}	pattern2 {action2} ... ' filename 
		pattern :表示awk在数据中查找的内容,也就是匹配模式
		action :在找到匹配内容时执行的一系列命令
  参数说明
  	-F : 指定输入文件的分隔符
  	-v : 赋值一个用户定义变量
3.实例
	awk -F : '/^root {print $7}' /etc/passwd
	// 只显示/etc/passwd 的第一列和第七列,以逗号分隔,
	//且在所有行前面添加列名user,在最后一行添加“test,ch”
	awk -F : 'BEGIN {print "user"} {print $1,"," $7} END{print "test,ch"}' /etc/passwd

sort

1.sort 命令在linux中非常有用,它能将文件进行排序,并将排序结果标准输出。
2.语法

	sort [选项] [参数]

3.选项

-n   依照数值大小排序
-r   以相反的顺序排序
-t   设置排序时所用的分隔符
-k  指定需要排序的列

4.实例
在这里插入图片描述
sort -t : -nrk 3 aa.txt

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值