第一章:shell特殊字符
2016-12-16 11:53
337 查看
学习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命令
一是 自己有时候忘了命令可以查,
二是 想学习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命令
相关文章推荐
- adb shell input text 输入特殊字符 &
- Linux下高效编写Shell——shell特殊字符汇总
- Linux Shell编程(4)——shell特殊字符(上)
- Linux CentOS 7 shell中的特殊字符及与管道相关的命令(cut,sort,wc,uniq,tee,tr,split)
- Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍
- shell学习之-特殊字符
- 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等
- shell脚本编程-特殊字符
- shell参数中的特殊字符
- Linux下高效编写Shell——shell特殊字符汇总
- shell特殊变量 字符截取
- Linux下高效编写Shell——shell特殊字符汇总
- Shell命令特殊字符
- shell里面的特殊字符
- Shell 特殊字符
- shell 知识点补充(1)-提示字符的设定/read/declare / typeset/变量设定功能/别名/万用字符与特殊符号
- shell 中 $0 $? $! 等字符的特殊用法
- java 过滤掉特殊字符以及sql、shell命令
- Linux Bash Shell学习(三):基本I/O操作、特殊字符、控制键和帮助
- shell特殊字符