Shell01

来源:互联网 发布:thinking in java第5版 编辑:程序博客网 时间:2024/06/06 11:40
shell是一个命令解释器,是操作系统的最外层。
把用户的输入解释给操作系统,将操作系统的输入结果返回给用户。
硬件-->kernel-->shell-->外围应用程序

shell脚本:将命令或语句写入文件,进行操作系统管理。

shell脚本中有命令、变量和流程控制语句。



清除日志文件脚本,需root
#!/bin/bash
LOG_DIR=/var/log

ROOT_UID=0

if ["$UID" -ne "$ROOT_UID"]
then
echo "Must be root to run this script."
exit 1
fi
cd $LOG_DIR || {
echo "Cannot change to necessary directory.">&2
exit 1
}
cat /dev/null>messages
echo "Logs cleaned up."
exit 0


A && B //A成功执行B
A || B //A没成功执行B


清空文件的三种方法:

保留文件,清空内容

>filename
echo >filename //多一个空行
cat /dev/null >filename


Linux bash (Bourne Again shell)
echo $SHELL
输出 /bin/bash
grep root /etc/passwd


shell脚本的建立
在vim中编写,包括Linux命令、bash shell命令、程序控制结构、注释。
脚本第一行指定由哪个程序来执行脚本中的内容。
#!/bin/bash 或
#!/bin/sh  #!称为幻数 sh为bash的软链接


对于输入的命令:Ctrl+e 到结尾,Ctrl+u 清除
shell脚本的执行方式
bash script-name  sh script-name //当文件无执行权限或文件未指定解释器时 推荐
path/scritp-name  ./script-name  //必须有执行权限
source script-name . script-name //可以将其中的变量加入到当前shell环境


规范:
1、开头指定脚本解释器;
2、开头加版本和版权信息;
3、不用中文
4、扩展名.sh
5、成对符号一次书写;中括号的两端有空格;流程控制一次书写;代码缩进;


变量
环境变量/全局变量:可在创建它们的shell及其派生出的子shell中使用;
局部变量:只能在shell函数或脚本中使用


环境变量可写在~/bash_profile文件中,或全局配置文件/etc/bashrc/etc/profile文件中,或/etc/profile.d/
大写
export导出
如:
export JAVA_HOME=path
JAVA_HOME=path
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin

几个环境变量:
PS1:控制登录用户的显示方式
TMOUT:超时退出
HISTSIZE:历史命令记录条数
HISTFILESIZE:历史文件记录条数
UID
USER
0 0