Shell 脚本(shell script)简单说也就是一些命令的集合,Linux 的 Shell 分类比较多,我们这里讲的是常用的 Bash( Bourne Again Shell的简称),它也是shell的解释器。
在文件头部声明#!/bin/bash
语句,下面是一个简单查看/usr/local
目录文件的脚本
[root@localhost shell]# cat test01.sh
#!/bin/bash
ls /usr/local
1、bash + 脚本文件
[root@localhost shell]# bash test01.sh
bin etc games include jdk lib lib64 libexec mysql sbin share src tomcat
2、source + 脚本文件
(使用当前的 bash 执行脚本,1和3是新启动一个子bash执行脚本)
[root@localhost shell]# source test01.sh
bin etc games include jdk lib lib64 libexec mysql sbin share src tomcat
3、./脚本文件.sh
(需要使用chmod +x 脚本文件.sh
授执行权限)
[root@localhost shell]# ./test01.sh
-bash: ./test01.sh: 权限不够
[root@localhost shell]# chmod +x test01.sh
[root@localhost shell]# ll
总用量 4
-rwxr-xr-x. 1 root root 27 6月 1 13:03 test01.sh
[root@localhost shell]# ./test01.sh
bin etc games include jdk lib lib64 libexec mysql sbin share src tomcat
IO有3种类型,分别为标准输入(值为0)、标准输出(值为1)和错误输出(值为2)
需要用到read
关键字,<<<
符号意思是将标准输入重定向到字符串中,可以理解为将test input str
值赋值给变量name
,然后再使用$name
方式取值
[root@localhost shell]# read name 0<<<"test input str"
[root@localhost shell]# echo $name
test input str
使用命令ls 1>/tmp/my.log
将当前目录的3个文件,以文本形式输入到了my.log日志文件中(一个>
符号是覆盖效果)
[root@localhost shell]# ll
总用量 4
-rw-r--r--. 1 root root 0 6月 1 13:58 1.txt
-rwxr-xr-x. 1 root root 27 6月 1 13:03 test01.sh
drwxr-xr-x. 2 root root 6 6月 1 14:00 tmp
[root@localhost shell]# ls 1>/tmp/my.log
[root@localhost shell]# cat /tmp/my.log
1.txt
test01.sh
tmp
使用命令ls 1>>/tmp/my.log
将当前目录的3个文件,以文本形式输入到了my.log日志文件中(两个>>
符号是追加效果)
[root@localhost shell]# ls 1>>/tmp/my.log
[root@localhost shell]# cat /tmp/my.log
1.txt
test01.sh
tmp
1.txt
test01.sh
tmp
使用命令ls /abc 2>>/tmp/error.log
,因为/abc
目录不存在,所有会将命令执行抛出的错误提示信息输入到error.log日志文件中
[root@localhost shell]# ls /abc 2>>/tmp/error.log
[root@localhost shell]# cat /tmp/error.log
ls: 无法访问'/abc': 没有那个文件或目录
常用写法为ls 1>>/tmp/my.log 2>&1
,表示先让标准输出重定向到my.log文件,然后将错误输出绑定到标准输出,这样正确与错误日志都会输出到my.log中
一文搞定Linux常见用法(汇总)