编辑linux shell命令

1. 整数运算
方法一:expr
        expr 1 + 2
expr $num1 + $num2     +  -  \*  /  %

方法二:$(()) 整数运算
echo $(($num1+$num2))       +  -  *  /   %
echo $((num1+num2))
echo $((5-3*2))  
echo $(((5-3)*2))
sum=$((1+2)); echo $sum


方法三:$[]
echo $[5+2] +  -  *  /  %
echo $[5**2]    5的二次方


方法四:let
let sum=2+3; 
echo $sum


2. 小数运算
echo "2*4" |bc
echo "2^4" |bc
echo "scale=2;6/4" |bc
[root@tianyun ~]# url=www.sina.com.cn
[root@tianyun ~]# echo ${#url} 获取变量值的长度
15
[root@tianyun ~]# echo ${url} 标准查看
www.sina.com.cn
[root@tianyun ~]# echo ${url#*.} 从前往后,最短匹配
sina.com.cn
[root@tianyun ~]# echo ${url##*.} 从前往后,最长匹配 贪婪匹配
cn
引用的变量的时候做了一个匹配动作
[root@tianyun ~]# url=www.sina.com.cn
[root@tianyun ~]# echo ${url}
www.sina.com.cn
[root@tianyun ~]# echo ${url%.*} 从后往前,最短匹配
www.sina.com
[root@tianyun ~]# echo ${url%%.*} 从后往前,最长匹配 贪婪匹配
www


[root@tianyun ~]# url=www.sina.com.cn
[root@tianyun ~]# echo ${url#a.}
www.sina.com.cn
[root@tianyun ~]# echo ${url#*sina.}
com.cn


[root@tianyun ~]# echo $HOSTNAME
tianyun.uplooking.com
[root@tianyun ~]# 
[root@tianyun ~]# echo ${HOSTNAME%%.*}
tianyun


"内容"的替换
[root@tianyun ~]# url=www.sina.com.cn
[root@tianyun ~]# 
[root@tianyun ~]# echo ${url/sina/baidu}
www.baidu.com.cn


[root@tianyun ~]# url=www.sina.com.cn
[root@tianyun ~]# 
[root@tianyun ~]# echo ${url/n/N}
www.siNa.com.cn
[root@tianyun ~]# echo ${url//n/N} 贪婪匹配
www.siNa.com.cN




变量的替代
${变量名-新的变量值}
变量没有被赋值:会使用“新的变量值“ 替代
变量有被赋值(包括空值): 不会被替代
[root@tianyun ~]# unset var1
[root@tianyun ~]# 
[root@tianyun ~]# echo ${var1}
[root@tianyun ~]# echo ${var1-aaaaa}
aaaaa


[root@tianyun ~]# var2=111
[root@tianyun ~]# echo ${var2-bbbbb}
111
[root@tianyun ~]# 
[root@tianyun ~]# var3=
[root@tianyun ~]# echo ${var3-ccccc}

1) if-then语句
if command
then
commands
[elif command
then
commands]
[else
commands]
fi

数值比较:
-eq 等于
-ge 大于等于
-gt 大于
-le 小于等于
-lt 小于
-ne 不等于

字符串比较:
=
!=
<
>
-n str1 #是否非0
-z str1 #是否为0

文件比较:
-d file #是否存在并是一个目录
-e file #是否存在
-f file #是否存在并是一个文件
-r file #是否存在并可读
-s file #是否存在并非空
-w file #是否存在并可写
-x file #是否存在并可执行
-O file #是否存在并属当前用户所有
-G file #是否存在并默认组与当前用户相同
-L filename 如果 filename为符号链接,则为真
-h filename 如果文件是软链接,则为真
file1 -nt file2 #file1是否比file2新
file1 -ot file2 #file1是否比file2旧

双圆括号(数学表达式放入比较)
val++ 后增
val-- 后减
++val 先增
--val 先减
! 逻辑求反
~ 位求反
** 幂运算
<< 左位移
>> 右位移 
& 位布尔和
| 位布尔或
&& 逻辑和
|| 逻辑或

双方括号(字符串比较)
()   子shell中执行
(())   数值比较,运算  C语言
$()   命令替换
$(()) 整数运算


[] 条件测试
[[]] 条件测试,支持正则  =~
$[] 整数运算

[root@yangs ~]# [[ "$USER" =~ ^r ]];echo $? //使用正则
0

===扩展正则表达式元字符
+ 匹配一个或多个前导字符 [a-z]+ove
? 匹配零个或一个前导字符 lo?ve
a|b 匹配a或b love|hate
() 组字符 love(able|rs) (ov)+
(..)(..)\1\2 标签匹配字符 (love)able\1er
x{m} 字符x重复m次 o{5}
x{m,} 字符x重复至少m次 o{5,}
x{m,n} 字符x重复m到n次 o{5,10}


* + ? 不能单独使用,必须配合前导字符或字符组。


支持不支持 虚拟化 64位 :
  
      
  
2. POSIX字符类:
表达式       功能                               示例
[:alnum:]     字母与数字字符                       [[:alnum:]]+  
[:alpha:]   字母字符(包括大小写字母) [[:alpha:]]{4}
[:blank:]     空格与制表符                         [[:blank:]]*
[:digit:]       数字字母                             [[:digit:]]?
[:lower:]       小写字母                             [[:lower:]]{5,}
[:upper:]       大写字母                             [[:upper:]]+
[:punct:]       标点符号                             [[:punct:]]
[:space:]       包括换行符,回车等在内的所有空白[[:space:]]+






三、正则匹配示例:vim
/love/ 正则匹配 模式
/^love/
/love$/
/l.ve/
/lo*ve/
/[Ll]ove/
/love[a-z]/
/love[^a-zA-Z0-9]/


/.*/    整行
/^$/  空行
/^[A-Z]..$/
/^[A-Z][a-z ]*3[0-5]/
/[a-z]*\./
/^ *[A-Z][a-z][a-z]$/
/^[A-Za-z]*[^,][A-Za-z]*$/
/\<fourth\>/
/\<f.*th\>/
:1,$ s/\([Oo]ccur\)ence/\1rence/
:1,$ s/\(square\) and \(fair\)/\2 and \1
/5\{2\}2\{3\}\./

2)case命令
case variable in
patern1| patern2) commands1;;
patern3) command2;;
*) default commands;;
esac

3)for命令
for var in list
do
commands
done
#使用转义字符(反斜线)来将单引号转义;使用双引号来定义用到单引号的值或有空格的值
#IFS更改字段分隔符

for ((variable assignment; condition; iteration process))

4)while命令
while test command
do
other commands
done

5)until命令
until test commands
do
other commands
done

break [n(1当前循环 2下一级外部循环)]
continue [n(指定要继续哪级循环)]

5)select 命令
select var in ... ; do
break
done
.... now $var can be used ....

6)变量说明: 
$$ Shell本身的PID(ProcessID) 
$! Shell最后运行的后台Process的PID 
$? 最后运行的命令的结束代码(返回值) 
$- 使用Set命令设定的Flag一览 
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 
$# 添加到Shell的参数个数 (echo ${!#} 参数为零时返回脚本名)
$0 Shell本身的文件名 
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 

find . -name "*.py" -exec mv {} {}x \;

7)getopt optstring options parameters #接受一系列任意形式的命令行选项和参数,并自动将他们转换成适当的格式。
getopts option_string variable 
如果optstring不以”:“开头,invalid option错误和miss option argument错误都会使varname被设成?,$OPTARG是出问题的option。
optstring option字符串,会逐个匹配
varname 每次匹配成功的选项
arg 参数列表,没写时它会取命令行参数列表
$OPTIND 特殊变量,option index,会逐个递增, 初始值为1
$OPTARG 特殊变量,option argument,不同情况下有不同的值

8)获得用户输入
echo -n 'Enter name:'
read name
-p #指定多个变量
read -p 'Enter name:' #可放入特殊变量REPLY中。
-t #指定一个计时器(秒数),过期后返回一个非零退出状态码
-nl #接受单个字符后退出
-s #隐藏方式读取
while read line # while循环会继续通过read命令处理文件中的行。

9)function
function name {
commands
}

name() {
commands
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值