什么是shell
内核:程序调动器,因为linux系统是多任务,多用户的操作系统,而内核决定了操作系统在运行过程中所有程序的优先级。内核不具备和硬件直接交互的能力
shell:shell是包裹在内核外的一层壳,由于当系统中多个任务同时进行,如果外界直接与内核交互,很可能会篡改内核,导致优先级混乱。所以为了防止被篡改,不让外界直接和内核进行交互,使用shell对内核进行保护。
脚本:是可运行的文本,脚本记录用户操作的步骤,脚本的第一行不仅仅是注释,,它是最先开启的程序,#!/bin/bash #!/bin/cat ##使用哪种方式就会用哪种方式进行解释,能够用文件名称来运行文件内容的文件叫做脚本文件;用脚本判定命令的执行条件,用脚本来实现动作的批量执行
创建新shell脚本
vim script.sh
#!/bin/bash ##脚本使用的解释器,通常用幻数“#!”指定
#AUTHOR ##脚本作者
#DATE ##脚本创作时间
#MAIL ##脚本作者联系方式
#VERSION ##脚本的版本
快捷执行内容的设置
vim /etc/vimrc
map <F9> ms:call WESTOS()<cr>'s ' ##映射到F9这个快捷键上(当按F9的时候就执行WESTOS里面的内容)
function WESTOS() ##WESTOS就是执行的任务的名称
call append(0,"###########") ##第1行显示###########
call append(1,"Create_Date: ".strftime("%Y-%m-%d %H:%M")." #") ##使用 ".(加入的命令).",第2行显示,以此类推
endfunction
测试
vim hello.westos
按F9,自动出现以上内容则成功
自动在新文件里面执行内容
vim /etc/vimrc
在文件中添加
autocmd BufNewFile *.sh exec ":call WESTOS()" ##当该文件为新的文件并且以.sh结尾时自动执行WESTOS里面的内容
function WESTOS()
(##所要自动显示内容)
endfunction
测试
(1)直接打开vim file.sh ##新的文件并且以.sh结尾,会自动执行WESTOS里面的内容
(2)如果touch file1.sh,vim file1.sh #不执行,因为文件已经通过touch已经存在了
(3)直接打开vim file2 ##新的文件,但不是以.sh结尾的文件
shell脚本的执行
sh scripts.sh ##开启一个子shell运行
source sripts.sh (在umask时也有使用到)##在当前的shell中运行
. scripts.sh #在当前shell中进行
前面三种都不需要添加执行权限
./script.sh ##在当前的shell中运行
chmod +x scripts.sh ##添加执行权限-》
可以使用ps f 进行查看
没有加执行权限之前
脚本的调试
sh -x test.sh ##可以清晰地看到脚本中的哪一行出现问题
脚本示例
(1)执行ip_show.sh (显示当前主机的IP)
执行结果
(2)执行user_show.sh (显示当前主机中能登录系统的用户)
执行结果
查看/etc/passwd中的内容,与检索出来的结果一致
(3)执行host_messages.sh (显示当前主机的名称,ip,以及能够登录系统的用户)
执行结果
(4)执行clear_log.sh ##执行命令后可以清空日志