1、shell简介:
shell:命令解释器;支持编程(变量、分支、循环…) ;编程语言
shell脚本语言:减轻一些工作量
高级编程语言:Java语言;
2、shell变量
变量名 = 变量值
#取消变量
unset 变量名
3、单引号和双引号的区别?
字符串可以使用单引号或者双引号,双引号中的表达式会解析,单引号中的表达式不会解析,只会原样显示。
[root@os100 /]# a1='张三'
[root@os100 /]# echo a1
a1
[root@os100 /]# echo $a1
张三
[root@os100 /]# i1=100
[root@os100 /]# i2=200
[root@os100 /]# echo $i1
100
[root@os100 /]# echo ${i1}
100
[root@os100 /]# echo $(( i1 + i2 ))
300
[root@os100 /]# echo $(( i1+i2 ))
300
[root@os100 /]# echo $((i1+i2))
300
[root@os100 /]# echo $((i1*i2))
20000
[root@os100 /]# echo $((i1/i2))
0
[root@os100 /]# echo $i1+$i2
100+200
[root@os100 /]# echo $(i1+i2)
bash: i1+i2: command not found...
[root@os100 /]# echo $((i1 + i2))
300
[root@os100 /]# s1="小明"
[root@os100 /]# s2='小强\t小红'
[root@os100 /]# echo $s1
小明
[root@os100 /]# echo $s2
小强\t小红
[root@os100 /]# s3="小红\t 小王"
[root@os100 /]# echo $s3
小红\t 小王
[root@os100 /]# s3="小红${s1}"
[root@os100 /]# echo $s3
小红小明
[root@os100 /]# s4='小刘${s1}'
[root@os100 /]# echo $s4
小刘${s1}
[root@os100 /]# unset s4
[root@os100 /]# echo $s4
4、数据流重导向
4.1、数据的输出
输出:将原本在终端上显示的数据,导入到指定的文件中;
1> ,> :将正确数据信息 覆盖到指定的文件中
1>>, >> : 将正确数据信息 追加到指定的文件中
2> :将错误的数据信息 覆盖到指定的文件中
2>> :将错误的数据信息 追加到指定的文件中
以普通身份进行登录执行查找命令查找特定的文件 示例:
find /home -name .bashrc
切换身份成lang用户,默认情况下,该账号只能在对应的用户主目录下找
到内容,其它目录没有权限:
输出错误信息:
[lang@os100 home]$ find /home -name .bashrc 2>
/home/lang/test.log
/home/lang/.bashrc
/home/user1/.bashrc
同时将正确和错误信息输出到指定的文件中
[lang@os100 home]$ find /home -name .bashrc >
/home/lang/test.log 2>&1
[lang@os100 home]$ cat /home/lang/test.log
/home/lang/.bashrc
find: ‘/home/erlang’: Permission denied
find: ‘/home/shuihu’: Permission denied
find: ‘/home/dalang’: Permission denied
find: ‘/home/zhaoyun’: Permission denied
find: ‘/home/xiahoudun’: Permission denied
find: ‘/home/xiaoqiao’: Permission denied
/home/user1/.bashrc
find: ‘/home/user2’: Permission denied
输出数据到垃圾桶
2>/dev/null #用来控制错误的输出
命令 &>/dev/null
4.2、数据的输入
将原本由键盘输入的内容换成,改由文件内容来代替
<
<<
示例1:
[lang@os100 ~]$ cat >> txt1 <<END
hello world 大家好 天气不错 END [lang@os100 ~]$ cat txt1 hello
world 大家好 天气不错
示例2:增加域名映射
[root@os100 lang]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4
::1 localhost localhost.localdomain localhost6
localhost6.localdomain6
127.0.0.1 os100
[root@os100 lang]# cat >> /etc/hosts <<END
> 192.168.40.110 redis001
> 192.168.40.112 redis002
> END
[root@os100 lang]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4
::1 localhost localhost.localdomain localhost6
localhost6.localdomain6
127.0.0.1 os100
192.168.40.110 redis001
192.168.40.112 redis002
5、命令执行的判断依据
; 命令之间无任何关联。
&& 必须前面的命令正确执行,后面的命令才会执行
|| 前面的命令错误,后面的命令执行;前面的命令正确,后面的命令不执
行。
不考虑指令相关性的连续指令下达
cmd; cmd;