shell命令大全

目录

shell种类

shell基本语法

1.输出

2.变量

其它基本语法

正则表达式

一个正则表达式包含下面一个或多个项:

扩展的正则表达式. 

POSIX字符类. [:class:]


shell种类

Bourne shell(sh)
C shell(csh)
Korn shell(ksh)
Bourne Again shell(bash)

本文将使用linux中的bash

首先为了熟悉shell的编写规范,shell的一个小例子如下:

#!/bin/bash
#hello bash
date

该例子功能为打印日期(中文)。

第一行为了说明是哪种脚本语言

第二行一般为该程序功能的注释

之后就是脚本的编写了

注:脚本一般以.sh结尾;编写完脚本后要执行sudo chmod 0775(这里的权限可以自己规定一定要给脚本文件执行权限) 脚本文件名

shell基本语法

1.输出

#1.输出
echo "家目录"
echo "$HOME"
echo "当前目录"
pwd
echo "时间"
date

 

2.变量

临时变量:是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户自定义变量、位置变量。

永久变量:是环境变量,其值不随shell脚本的执行结束而消失。

#2.定义变量
VAR1=20 #20是字符串
echo ${VAR1}haha #在变量进行取值时加{}
 
VAR2="w h g ${VAR1}" #""中可以识别特殊字符
echo ${VAR2}

VAR3='w h g ${VAR1}' #''中被认为是纯字符串
echo ${VAR3}
#字符串求长度
STRING='eweweefgew'
echo ${#STRING}
echo `expr length ${STRING}`
echo ${STRING:0} #从0位置开始输出
echo ${STRING:1}
 
declare -i A
declare -a B
declare -f C
declare -r D=4
A=1
B=2
C()
{
    echo "我是函数"
}   
#D=4 只读
echo ${A}
echo ${B}
C
echo ${D}

其它基本语法

代码如下:

#3.命令调用
TIME=`date` #``将内部识别为命令,并将返回结果给符号名
echo ${TIME}

#4.位置变量--用于传参数:$0-$9,一般$0保留不用 shift可以使位置变量左移
echo $0$1$2

#5.特殊变量(属于临时变量):$*所有参数,$#不算命令的参数个数,$!显示上一个调用后台命令的进程ID(不用),$?获取上一个命令的返回值,$$该进程ID
echo $*
echo $#
echo $!
echo $?
echo $$

#6.四则运算expr
echo `expr 3 + 5`
echo `expr 3 + 5 \* 2`
echo `expr \`expr 3 + 5\` \* 2` #注意转义

#7.test 和[  ]等价  test就是判断它后边的语句是真是假
test a = a #字符
test 1 -eq 1 #数字
test -a aaa #文件是否存在
#在单独使用时 -a代表逻辑或 -o代表逻辑与


#8.流程结构
#8.1 if单项选择
if test a = a
	then
	echo "真"
else
	echo "假"
fi

#8.2 case
read VAR
case ${VAR} in
	"1")
		echo "一"
		;; #相当于break
	"2")
		echo "二"
		;;
esac


#8.3 for
for VAR in $1 $2
	do
		echo ${VAR}
	done
for((VAR=0;VAR<10;VAR++))
	do
		echo ${VAR}
	done

#8.4 while
while test 1
	do
		echo 1
	done

until test -a "aaa" #条件假执行
do
	echo 2
done


#9.select
select VAR in 1 2 3 4 5
do
	echo ${VAR}
done



#10.函数
FUN()
{
	select VAR in $1 $2 $3 $4 $5
	do
		echo ${VAR}
	done
}
#调用
FUN $1 $2 $3 $4 $5

正则表达式

一个正则表达式包含下面一个或多个项:

  • 一个字符集. 这里的字符集里的字符表示的就是它们字面上的意思.正则表达式最简单的情况就是仅仅由字符集组成,而没有其他的元字符.

  • . 一个锚指明了正则表达式在一行文本中要匹配的位置,例如^和$就是锚.

  • 修饰符. 它们用于展开或缩小(即是修改了)正则表达式匹配文本行的范围.修饰符包括了星号,括号和反斜杠符号.

正则表达是的主要作用是用来文本搜索和字串操作。一个正则表达式匹配一个字符或是一串字符--完整的一串字符或是另外一个字符串的子串.

  • 星号 -- * -- 匹配前一个字符的任意多次(包括零次)。

    "1133*"匹配11 + 一个或更多的3 + 可能的其他字符1131133111312, 等等.

  • 点 -- . -- 匹配除了新行符之外的任意一个字符. 

    "13." 匹配13 + 至少一个任意字符(包括空格)113311333, 但不匹配 13 (因为少了附加的至少一个任意字符).

  • 脱字符 -- ^ -- 匹配一行的开头,但依赖于上下文环境,可能在正则表达式中表示否定一个字符集的意思.

  • 美元符 -- $ -- 在正则表达式中匹配行尾.

    "^$" 匹配空行.

  • 方括号 -- [...] -- 在正则表达式中表示匹配括号中的一个字符.

    "[xyz]" 匹配字符xy, 或z.

    "[c-n]" 匹配从字符cn之间的任意一个字符.

    "[B-Pk-y]" 匹配从BP 或从ky的任意一个字符.

    "[a-z0-9]" 匹配任意小写字母或数字.

    "[^b-d]" 匹配除了从bd范围内所有的字符. 这是正则表达式中反转意思或取否的一个例子。(就好像在别的情形中!字符所扮演的角色).

    多个方括号字符集组合使用可以匹配一般的单词和数字模式。"[Yy][Ee][Ss]" 匹配yesYesYESyEs, 等等. "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" 匹配社会安全码(Social Security number).

  • 反斜杠字符 -- \ -- 转义 一个特殊的字符,使这个字符表示原来字面上的意思.

    "\$"表示了原来的字面意思"$",而不是在正则表达式中表达的匹配行尾的意思.同样,"\\"也被解释成了字面上的意思"\".

  • 转义"尖角号" -- \<...\> -- 用于表示单词的边界.

    尖角号必须被转义,因为不这样做的话它们就表示单纯的字面意思而已.

    "\<the\>" 匹配单词"the",但不匹配"them", "there", "other", 等等.

  • 扩展的正则表达式. 

  • 增加了一些元字符到上面提到的基本的元字符集合里. 它们在egrep,awk和Perl中使用.

  • 问号 -- ? -- 匹配零或一个前面的字符. 它一般用于匹配单个字符.

  • 加号 -- + -- 匹配一个或多个前面的字符.它的作用和*很相似,但唯一的区别是它不匹配零个字符的情况.

  • 转义"大括号" -- \{ \} -- 指示前面正则表达式匹配的次数.(awk中没有)

    要转义是因为不转义的话大括号只是表示他们字面上的意思。这个用法只是技巧上的而不是基本正则表达式的内容。

    "[0-9]\{5\}" 精确匹配5个数字 (从 0 到 9的数字).

  • 圆括号 -- ( ) -- 括起一组正则表达式. 

  • 竖线 -- | -- "或"正则操作符用于匹配一组可选的字符.

  • POSIX字符类. [:class:]

    这是另外一个可选的用于指定匹配字符范围的方法。

  • [:alnum:] 匹配字母和数字.等同于A-Za-z0-9.

  • [:alpha:] 匹配字母. 等同于A-Za-z.

  • [:blank:] 匹配一个空格或是一个制表符(tab).

  • [:cntrl:] 匹配控制字符.

  • [:digit:] 匹配(十进制)数字. 等同于0-9.

  • [:graph:] (可打印的图形字符). 匹配 ASCII 码值的33 - 126之间的字符. 这和下面提到的 [:print:]一样,但是不包括空格字符.

  • [:lower:] 匹配小写字母. 等同于a-z.

  • [:print:] (可打印字符). 匹配 ASCII码值 32 - 126之间的字符. 这和上面提到的一样[:graph:],但是增多一个空格字符。

  • [:space:] 匹配空白字符 (空格符和水平制表符).

  • [:upper:] 匹配大写字母. 等同于A-Z.

  • [:xdigit:] 匹配十六进制数字. 等同于0-9A-Fa-f.

    grep [[:digit:]] test.file

     

  • 关于grep、awk、sed用法的具体介绍见https://blog.csdn.net/hhwhg123/article/details/99697265

  • 关于Linux下的Cmd命令介绍见https://blog.csdn.net/hhwhg123/article/details/99705381

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值