shell 1基础
1. shell简介
shell是一个用C语言编写的程序,是用户使用Linux的桥梁。shell既是一种命令语言,又是一种程序设计语言。 shell脚本(shell script),是一种为shell编写的脚本程序。2. shell环境
* Bourne Shell(/usr/bin/sh 或/bin/sh)是unix最初使用的shell,而且在每种unix上都可以使用 * Bourne Again Shell(/bin/bash)LinuxOS默认的,他是Bourne Shell的扩展。于Bourne Shell完全兼容,并且在Bourne Shell的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell 中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。 * C Shell(/usr/bin/csh) * K Shell(/usr/bin/ksh) * Shell for Root(/sbin/sh)3. 第一个shell脚本
3.1 编写脚本
#!/usr/bin/bash #告诉系统使用那种shell来执行脚本。
echo "Hello World!" #出echo用于向窗口输出文本 结果:Hello World!
3.2 执行shell脚本
3.2.1直接执行,不需给予权限
sh test.sh
source test.sh
3.2.2 ./需要给予可执行权限
chmod +x ./test.sh #需要赋予可执行权限
./test.sh #使用./ 执行脚本
4 其他
4.1 bash是一个进程
bash下还可以再重新启动一个shell,这个shell是sub shell,原shell会复制自身给它。 在sub shell中定义的变量,会随着sub shell的消亡而消失 * () 子shell中运行 (a=hello;echo $a) |echo $a #shell echo $a * {} 当前shell中执行{ a=world;echo $a; } # world * $$ 当前脚本执行的pid * & 后台执行 * $! 运行在后台的最后一个作业的PID(进程ID)#!/bin/bash
(a="testhome";echo $a) #testhome
echo $a #子shell中定义的变量消失
{ a=world;echo $a; } #world
echo $a #world 当前shell的变量依然有效
4.2 通配符
bash可以自动扩展特定的关键词
echo * #打印当前目录下的文件
echo ???? #匹配特定字符个数的文件
echo "*????" #输出字符串,避免被匹配