本笔记是根据linuxShell编程入门到精通一书学习实验和相关整理做的笔记
pdf文件下载:http://download.csdn.net/detail/ruishenh/6586391
1.使用文件具有可执行权限,直接运行文件。
2.直接调用命令解释器执行程序
3.使用source执行文件
1.内建命令就是shell程序本身的命令。这些命令集成在shell解释器中。比如(cd)
2.Shell函数是一系列的程序代码,以shell语言写成,它可以像其他命令一样被引用。
3.外部命令是独立于shell的一个执行程序。例如find, grep, echo.sh。命令行shell在执行外部命令时,会创建一个当前shell的复制进程来执行。在执行过程,存在进程的创建和消亡。外部命令的执行过程如下。
①用POSIX系统fork函数接口,创建一个命令行shell进程的复制(子进程)。
②在子进程的运行环境中,查找外部命令在linux文件系统中的位置。如果外部命令给出了完全路径,则略过查找这一步。
③在子进程里,以新程序取代shell拷贝并执行(exec),此时父进程进入休眠,等待子进程执行完毕。
④子进程执行完毕后,父进程接着从终端读取下一条命令。
Note
(1)子进程在创建初期和父进程一模一样,但是子进程不能改变父进程的参数变童。
(2)只有内建命令才能改变命令行shell的属性设显〔环境变量)。
使用source执行shell脚本时,不会创建子进程,而是在父进程中直接执行!
变量(variable)在许多程序设计语言中都有定义,与变量相伴的有使用范围的定义。变量的本质就是一个键值对(key=value)
shell变量的名称以一个字母或下划线符号开始,后面可以接任意长度的字毋、数字或下划线。和许多其他程序设计语言不同的是,shell变量名称字符并没有长度限制。Linux Shell并不对变量区分类型,一切值都是字符串,并且和变量名一样,值并没有字符长度限制。神奇的是,bash也允许比较操作和整数操作。其中的关键因索是:变量中的字符串值是否为数字。
变量类型:局部变量和全局变量。
局部变量在声明的时候必须用local显示指定。全局变量不用加任何修饰。(环境变量)
Echo 输出
$ echo 'abc' $ echo $JAVA_HOME
Export 导入变量
exportPATH=/usr/local/pig/pig-0.12.0/bin:$PATH
env函数和set函数是不同的env函数显示的是环境变量,set函数则显示所有的本地变量,包括用户的环境变量。例如,当用户在命令行中设笠Var = 123时,set函数将显示var变量,而Env函数则不显
示(var此时是本地变童,不是环境变量)。如果使用export var = 123命令,则set和Env函数都可以显示var变量。
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须把高级语言翻译成机器语言计算机才能执行高级语言编写的程序。
语言一般分为编译型和解释型
编译型语言有比如使用的exe文件。二进制文件。或者java程序的 .class文件(jar文件)
解释型有js,python,shell等。
Linuxshell 优势
1.简洁
Linux Shell所处的内核外层环境使得任何高级操作成为可能。
2.开发容易
由于它遵循了unix的哲学,优化到今天,在前人的积累下变的开发容易
3.便于移植
可以在任何unix/linux上运行
在写shell脚本中都会加入 #! 引入解释器来解释
比如
#!/bin/bash #!/bin/sh #!/bin/rm #!/bin/more