Linux Shell 《abs_guide》 学习笔记(1)
来源:互联网 发布:社会经济数据库 编辑:程序博客网 时间:2024/06/06 17:13
第一部分
1.为什么使用shell
目前流行的Linux shell 被称之为BASH。对于任何想适当精通一些管理知识的人来说,掌握shell脚本都是最基本的;shell脚本遵循典型的UNIX哲学,既把大的复杂的工程分成小规模的子任务,并且把这些部件和工具组合起来。
什么时候不使用shell:
资源密集型任务,尤其是需要考虑效率时。(比如排序,hash等);
需要处理大任务的数学操作,尤其是浮点运算等;
有跨平台需求时;
复杂的运用,在必须使用结构化编程时;
对影响系统全局性的关键任务应用;
对于安全有很高要求的任务;
项目由连串的依赖的各个部分组成;
需要大规模的文件操作;
需要多维数组支持;
需要数据结构支持,比如链表或树等数据结构;
需要产生或操作GUI;
需要直接操作系统硬件;
需要I/O或Socket接口;
需要使用库或老代码接口;
私人的,毕源的应用(shell就放在文本文件中,全世界都看得到)。
如果你符合上边的任何一条,那么请考虑更强大的语言吧。
2.带着一个Sha-Bang(#!)出发
在一个最简单的shell中,一个shell script其实就是一系列系统命令列到一个文件中,最基本的用处就是在你输入这些特定命令时能够少敲一些字。
Example 2-1:清除/var/log下的log文件
#######Start Strip#######
1 # Cleanup
2 # 当然要使用root来运行这个脚本
3
4 cd /var/log
5 cat /dev/null > message
6 cat /dev/null > wtmp
7 echo "Logs cleaned up"
#######End Script#######
这根本就没什么稀奇的,只不过是命令的堆积;把所有命令放到一个文件中,好处是不用每次都敲它们。下面我们来看一个真正意义上的脚本,而且我们可以走得更远...
Example 2-2:cleanup,一个增强的和广义的删除logfile的脚本
#######Start Strip#######
1 #!bin/bash
2 # 一个bash脚本的正确的开头
3
4 # Clean Version 2
5
6 LOG_DIR = /var/log
7 ROOT_UID = 0 #$UID为0的时候,用户才具有根用户的权限
8 LINES = 50 #默认的保存行数
9 E_XCD = 66 #不能修改目录?
10 E_NOTROOT = 67 #不是根用户,退出
11
12 if [$UID -ne $ROOT_UID]
13 then
14 echo "Must be root user to run this script"
15 exit E_NOTROOT
16 fi
17
18 if [ -n "$1"] #测试是否有命令行参数(非空)
19 then
20 lines = $1
21 else
22 lines = $LINES
23 fi
24
25 cd $LOG_DIR
26 if [`pwd` != $LOG_DIR]
27 then
28 echo "Can't change to $LOG_DIR"
29 exit $E_XCD
30 fi
31
32 tail -$lines message > mesg.temp #保存Log文件的最后部分
33 mv mesg.temp > messages #转换为新的log
34
35 cat /dev/null > 'wtmp'
36 echo "Logs cleaned up."
37
38 exit 0
38 #退出之前返回0表示成功
#######End Script#######
在每个脚本的开头都使用"#!",这意味着告诉你的系统这个文件的执行需要指定一个解释器.#!实际上是一个2 字节的魔法数字,这是指定一个文件类型的特殊标记,这种情况下,指的就是一个可执行的脚本.在#!之后接着是一个路径名.这个路径名指定了一个解释脚本中命令的程序, 这个程序可以是 shell,程序语言或者是任意一个通用程序. 指定的程序从头开始解释并且执行脚本中的命令。
(从#!行下边的一行开始),如:
1 #!/bin/sh
2 #!/bin/bash
3 #!/usr/bin/perl
4 #!/usr/bin/tcl
5 #!/bin/sed -f
6 #!/usr/awk -f
上边每一个脚本头的行都指定了一个不同的命令解释器,#!后边给出的路径名必须是正确的,否则将会出现一个错误消息,通常是"Command not found",这将是你运行这个脚本时所得到的唯一结果.
编写完脚本之后,你可以使用sh scriptname,[5]或者bash scriptname 来调用它.
(不推荐使用sh <scriptname,因为这禁用了脚本从stdin 中读数据的功能.)
更方便的方法是让脚本本身就具有可执行权限,通过chmod 命令可以修改.
比如:
chmod 555 scriptname (允许任何人都具有可读和执行权限) [6]
或:
chmod +rx scriptname (允许任何人都具有可读和执行权限)
chmod u+rx scriptname (只给脚本的所有者可读和执行权限)
既然脚本已经具有了可执行权限,现在你可以使用./scriptname 来测试它了.如果这个脚本
以一个"#!"行开头,那么脚本将会调用合适的命令解释器来运行.
下篇笔记将开始第三章的学习..~(To be continue)
- Linux Shell 《abs_guide》 学习笔记(1)
- Linux Shell 《abs_guide》 学习笔记(2)
- Linux Shell 《abs_guide》 学习笔记(3)
- ABS_Guide 学习笔记
- ABS_Guide shelll学习(1)
- linux shell学习笔记1
- linux shell学习笔记1
- linux shell 学习笔记1
- Linux Shell学习笔记1
- linux Shell学习笔记1
- Linux Shell学习笔记1:Linux入门
- Linux Shell学习笔记
- linux shell学习笔记
- linux shell学习笔记
- Linux Shell 学习笔记
- linux shell 学习笔记
- linux-shell学习笔记
- Linux Shell学习笔记
- 网上购物系统
- html标签及其中的属性
- ubuntu学习笔记
- 广告游戏,是否为新型产物?
- 【转】linux cp 复制文件 命令
- Linux Shell 《abs_guide》 学习笔记(1)
- select 中使用 case when 和 replace
- Lynx 简明使用指南
- 如何调试命令行程序?——怎样输入命令行程序参数
- QQ2014版—2014最新版QQ官方下载
- 才弄明白Number(p,s)的意义
- 无奈,在SpagoBI结合jpalo 老出 java.lang.OutOfMemoryError: Java heap space错误
- 创建DataTable,并填充数据,模拟数据库中的表
- 韩寒经典爱情语录