第一章:shell特殊字符

来源:互联网 发布:mac怎么用vpn 编辑:程序博客网 时间:2024/06/02 06:58
学习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> err.log
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  err2.log |cat -n
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命令

0 0
原创粉丝点击