Shell 是实现 Linux 系统自动化管理的工具。
必备知识:vi/vim编辑器的熟练使用,SSH 终端 及“.vimrc”的设置需要熟练使用。
Linux150个常用命令使用
常见Linux网络服务部署及排错:例如:crond,nfs,rsync,inotify,lanmp,sersync,ssh等
Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统。操作系统处理完再通过shell返回给用户。相当于中间人
Shell脚本:当Linux命令或语句不在命令行下执行(严格来说,命令行也是一个Shell),而是通过一个程序文件执行时,该程序就被称为Shell脚本或Shell程序。用户可以在Shell脚本中敲入一系列命令或语句组合。(类似于windows 下的 。bat 批处理文件)
清除 var/log/ message 的所有日志文件
LOG_DIR=/var/log #定义一个变量LOG_DIR为 /var/log
ROOT_UID=0 #$UID为0的时候,用户才具有root用户的权限,要使用root用户才可以运行起来
if[ "$UID" -ne "$ROOT_UID"] # $UID -ne(不等于)0
then
echo "Must be root to run this script."
exit 1 #退出
fi
cd $LOG_DIR || { #cd成功 ,要不然就执行后面的
echo "can not to necessary directory." > $2
exit 1
}
cat /dev/null > message && "Logs clean Up." #第一个执行成功才会执行第二个
exit 0
# 退出之前返回0表示成功,返回1表示失败
在 UNIX / LINUX 主要有两大类shell
Bourne shell
C Shell
Shell 的优势在于处理操作系统底层的业务,因为有大量的系统命令为它做支撑,2000 多个命令都是shell编程的有力支撑,特别是 grep , awk , sed等
主要是 shell 是 bash
查看shell的方法 : echo &SHELL
输出 : /bin/bash
脚本第一行:
一个规范的shell脚本第一行会指出哪个程序(编辑器)来执行脚本中的内容
#!/bin/bash
或
#!/bin/sh <== 255 个字符以内
其中开头的“#!”又称为幻数,在执行bash脚本的时候,内核会根据 "#!" 后的解释器来确定该由哪个程序解析脚本中的内容。注意,这一行必须在每个脚本顶端的第一行
#!/bin/bash #写在第二行就成了注释了
系统的环境变量:
#!/bin/bash
echo $USER # USER就是系统的环境变量
所以我们定义变量的时候不要定义和系统变量一样,一样有可能被覆盖
当 Shell 以文件的方式运行时,它会先查找环境变量 ENV , 该变量指定了一个环境文件
在 /etc/profile 中有环境变量
我们可以定义 : export AAA=1 (这样就类似于上段代码的 USER 一样了)
sh 脚本 可以不用执行权限
path/ 脚本 (全路径执行) ./脚本 (需要有执行权限)
面试题:
1.已知如下命令的返回结果,请问 echo $user 的结果为()
[ xxx]cat test.sh
user= ''zhangsan"
[xxx] sh test.sh
[xxx] echo $user
结果是null (因用 sh 命令执行脚本,执行完之后变量就消失了)
用 . test.sh 来执行脚本,echo $user root
脚本最好不使用中文注释:防止本机或换系统环境后中文乱码
最好一次写完
if 条件
then
内容
fi
for
for
do
for
do
done
done