0
点赞
收藏
分享

微信扫一扫

第一章:shell特殊字符

圣杰 2023-02-24 阅读 91


学习shell其实是很简单的,只要你找到一份好的资料。下面就是我学习shell整理的笔记和实验,分享出来。


 一是 自己有时候忘了命令可以查,


 二是 想学习shell的同学可以参考参考。后面还有系列的几篇笔记,练习操作一遍就差不多了。







打印命令 echo 



[oracle@zw-test-db ~]$ echo hello world


hello world


[oracle@zw-test-db ~]$ echo "hello world"


hello world


[oracle@zw-test-db ~]$ echo 'hello world'


hello world


[oracle@zw-test-db ~]$ echo 'hello ! world'


hello ! world



printf


[oracle@zw-test-db ~]$ printf "hello world"


hello world[oracle@zw-test-db ~]$ printf "hello world"



echo 中转义字符



[root@zw-test-db /]# echo -e "1\t2\t3"


1    2    3



打印彩色输出



[root@zw-test-db /]# echo -e "\e[1;31m this is red text \e[0m"


 this is red text


 


[root@zw-test-db /]# echo -e "\e[1;42m green background \e[0m"


 green background




环境变量:


pgrep查看oracle的进程id



[root@zw-test-db /]# pgrep ora


9187


9189


9191


9195


9197


9199


9201


9203


9205


9207


9209



打印进程9207


[root@zw-test-db /]# cat /proc/9207/environ


HOSTNAME=zw-test-dbSHELL=/bin/bashTERM=xtermHISTSIZE=1000QTDIR=/usr/lib64/qt-3.3QTINC=/usr/lib64/qt-3.3/includeUSER=oracleLS_COLORS=rs=0:di=01;



实战演练:



[root@zw-test-db /]# var=value  --给变量赋值


[root@zw-test-db /]# echo $var


value


或者


[root@zw-test-db /]# echo ${var}


value



[root@zw-test-db oradata]# vim a.sh


#!/bin/bash


# file name : a.sh


fruit=apple


count=5


echo "we have $count ${fruit}(s)"



[root@zw-test-db oradata]# sh a.sh


we have 5 apple(s)




export命令设置环境变量:



[oracle@zw-test-db ~]$ echo $PATH


/u01/app/oracle/product/11.2.0.4/db_1/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/oracle/bin



补充内容



1.获得字符串长度



[oracle@zw-test-db ~]$ echo ${#var}


6



2.查看当前shell版本



[oracle@zw-test-db ~]$ echo $SHELL


/bin/bash


[oracle@zw-test-db ~]$ echo $0


-bash



3.检查是否是超级用户



root用户的uid是0


if[$UID -ne 0];then 


echo Non root user.Please run as root.


else


echo "you are root"


fi




shell 进行数学计算



let命令可以进行计算


#!/bin/bash


no1=1


no2=2


let result1=no1+no2


let result2=no2-no1


echo $result1,$result2



[oracle@zw-test-db ~]$ sh a.sh


3,1




自加操作 let no1++


自减操作 let no1--


简写形式 let no+=6  等于 let no=no+6


              let no-=6  等于 let no=no -6



其他方法: 


result=$[no1+no2]



expr也可用于基本操作


[oracle@zw-test-db ~]$ result=`expr 3+4`


[oracle@zw-test-db ~]$ echo $result


3+4


[oracle@zw-test-db ~]$ result=`expr 3 + 4`


[oracle@zw-test-db ~]$ echo $result


7



注意:要有空格




bc: 支持浮点计算



[oracle@zw-test-db ~]$ echo " 4 * 0.56 " |bc


2.24



[oracle@zw-test-db ~]$ no=54


[oracle@zw-test-db ~]$ result=`echo "$no * 1.5 "|bc`


[oracle@zw-test-db ~]$ echo $result


81.0




文件描述符和重定向



0   stdin:输入


1   stdout:输出


2   stderr: 错误



将输出文本重定向保存到另外一个文件



[oracle@zw-test-db ~]$ echo " this is a sample text 1" > aaa.txt


[oracle@zw-test-db ~]$ cat aaa.txt


 this is a sample text 1




[oracle@zw-test-db ~]$ echo " this is a sample text 2" >> aaa.txt


[oracle@zw-test-db ~]$ cat aaa.txt


 this is a sample text 1


 this is a sample text 2



>> 是在原来的文件里面追加


>   先清空源文件,再写




[oracle@zw-test-db ~]$ chmod 000 a.txt



[oracle@zw-test-db ~]$ cat *.txt


cat: a.txt: Permission denied   --没有权限


bbbbbbbbbbbbbbbbbbb


cccccccccccccccccccccccc




[oracle@zw-test-db ~]$ cat *.txt2>


bbbbbbbbbbbbbbbbbbb


cccccccccccccccccccccccc



0   stdin:输入


1   stdout:输出


2   stderr: 错误




[oracle@zw-test-db ~]$ cat err.log


cat: a.txt: Permission denied


提示输入到log里面了




终端打印同时重定向输入到新文件



[oracle@zw-test-db ~]$ cat *.txt |tee err2.log|cat -n


cat: a.txt: Permission denied


     1    bbbbbbbbbbbbbbbbbbb


     2    cccccccccccccccccccccccc



cat  -n 加上行号了



[oracle@zw-test-db ~]$ cat err2.log


bbbbbbbbbbbbbbbbbbb


cccccccccccccccccccccccc



[oracle@zw-test-db ~]$ cat *.txt |tee-a 


cat: a.txt: Permission denied


     1    bbbbbbbbbbbbbbbbbbb


     2    cccccccccccccccccccccccc



[oracle@zw-test-db ~]$ cat err2.log


bbbbbbbbbbbbbbbbbbb


cccccccccccccccccccccccc


bbbbbbbbbbbbbbbbbbb


cccccccccccccccccccccccc



-a追加



[]方括号也能计算


[root@zw-test-db ~]# var=$[5-2]


[root@zw-test-db ~]# echo $var


3


[root@zw-test-db ~]# var=$[5*2]


[root@zw-test-db ~]# echo $var


10




find /u01/ -name "*.log" -mtime +5 -exec rm {} \;  --删除/u01目录下五天内没有修改的*.log文件



退出脚本



linux提供了$? 保存上个命令的状态码。


 


[root@zw-test-db ~]# date


Fri Jul  1 11:13:39 CST 2016


[root@zw-test-db ~]# echo $?


0


一个成功结束的命令退出状态码是0,如果命令结束有错误,退出状态码中就会有一个正数值


[root@zw-test-db ~]# zhengwei


-bash: zhengwei: command not found


[root@zw-test-db ~]# echo $?


127



状态码:


0   成功


1   通用未知错误


2   误用shell命令


126 命令不可执行


127 没找到命令


128 无效退出参数


128+x linux信号x的严重错误


130  通过ctrl+c终止


255  退出状态码越界




exit命令



举报

相关推荐

第一章 绪论

第一章综述

第一章作业

第一章 起步

第一章.概论

第一章介绍

第一章 引论

docker 第一章

0 条评论