学习笔记之《Linux与UNIX Shell编程指南》.doc 《Linux与UNIX Shell编程指南》学习笔记学习笔记之《Linux与UNIX Shell编程指南》第1章文件安全与权限用户组,权限,文件的关系图属主(u)(+/-) r w x文件或所 (+/-) r w x 同组(g) 文件夹有(a)(+/-) r w x其它组(o)查看文件权限#ls –lTotal xx-rwxr-xr-x 1 root root 3245 Aug 5 09:12 msgrwx:文件属主权限这是前面三位r-x:同组用户权限这是中间三位r-x:其他用户权限这是最后三位1 该文件硬链接的数目root 文件的属主。
root 文件的属主root所在的缺省组(也叫做r o o t )3578 用字节来表示的文件长度,记住,不是K字节 Aug 5 09:12 文件的更新时间msg 文件名第 1 页共 10 页学习笔记之《Linux与UNIX Shell编程指南》1.1 符号模式chmod [who] operator [permission] filenamewho的含义是:u 文件属主权限。
g 同组用户权限。
o 其他用户权限。
a 所有用户(文件属主、同组用户及其他用户)。
operator的含义:+ 增加权限。
- 取消权限。
= 设定权限。
permission的含义:r 读权限。
w 写权限。
x 执行权限。
s 文件属主和组set -ID。
t 粘性位*。
l 给文件加锁,使其他用户无法访问。
u,g,o 针对文件属主、同组用户及其他用户的操作示例:chmod o+w admin1.2 绝对模式chmod 命令绝对模式的一般形式为:chmod [mode] fileR(读) W(写) X(执行)4 2 10400 文件属主可读 0010 同组用户可执行 0200 文件属主可写 0004 其他用户可读 0100 文件属主可执行 0002 其他用户可写 0040 同组用户可读 0001 其他用户可执行 0020 同组用户可写示例:chmod 400 xxchmod 755 xx第 2 页共 10 页学习笔记之《Linux与UNIX Shell编程指南》 1.3 其他命令chown: 转交属主 chgrp: 转交用户组id: 查看用户组 umask: 设定文件创建时的缺省模式1.4 小结了解并熟悉了文件的基本权限、用户、组之间的一些区别与联系,文件与文件夹之间对执行与读权限的细微区别,对文件安全有了充分的认识。
第2章使用find 和 xargs1.1 find 命令参数名称解释备注 -name 按照文件名查找文件-perm 按照文件权限来查找文件-prune 不在指定的目录中查找不能与-depth同用 -user 按照文件属主来查找文件-group 按照文件所属的组来查找-mtime -n - n表示文件更改时间距现在n天以内,+ n表示文件更改时按照文件的更改时间来查找 +n 间距现在n天以前 -nogroup 查找无有效所属组的文件该文件所属的组在/e tc/groups中不存在 -nouser 查找无有效属主的文件该文件的属主在/etc/passwd中不存在 -newer 查找更改时间比文件file1新但比file1 ! 文件file2旧的文件 file2b - 块设备文件 d - 目录c - 字符设备文件 -type 查找某一类型的文件 p - 管道文件 l - 符号链接文件 f - 普通文件 -size n[c] 查找文件长度为n块的文件带有c时表示文件长度以字节计在查找文件时,首先查找当前目录-depth 中的文件,然后再在其子目录中找查找位于某一类型文件系统中的-fstype 文件查找文件时不跨越文件系统m o u n -mount t点如果f i n d命令遇到符号链接文-follow 件,就跟踪至链接所指向的文件对匹配的文件使用c p i o命令,-cpio 将这些文件备份到磁带设备中第 3 页共 10 页学习笔记之《Linux与UNIX Shell编程指南》1.2 find 与 exec当匹配到一些文件以后,可能希望对其进行某些操作,这时就可以使用–exec 选项。
exec选项后面跟随着所要执行的命令,然后是一对儿{ },一个空格和一个\,最后是一个分号。
如: find . –type f –exec ls –l {} \;1.3 find 与 xargsxargs 命令同find命令一起使用是为了避免 exec与find 一起使用时产生“参数列太长”或“参数列溢出”错误.如: find . –name “*.jsp” –print | xargs echo “” > result.txt;1.4 小结find命令是一个非常优秀的工具,它可以按照用户指定的准则来匹配文件。
使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令而避免去写shell命令。
第3章后台执行命令1.1 前言cron 系统调度进程。
可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。
At at 使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时间段或高峰负荷时间段运行。
& 使用它在后台运行一个占用时间不长的进程。
Nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响。
1.2 cron和crontab每一个用户都可以有一个crontab文件, crontab的命令允许用户提交、编辑或删除相应的作业。
crontab 的格式:分< >时< >日< >月< >星期< >要运行的命令,其中< >表示空格。
示例: 30 21 * * * /apps/bin/cleanup.shCrontab [-u user] -e -l -r-u 用户名-e 编辑crontab文件-l 列出crontab文件中的内容-r 删除crontab文件提交任务命令: crontab 任务文件第 4 页共 10 页学习笔记之《Linux与UNIX Shell编程指南》备份任务文件: crontab -l > $HOME/mycron(文件具体路径)建议:不要直接编辑crontab文件,而是编辑该文件的一个副本,然后重新提交新的文件1.3 at命令向cron提交作业,在稍后的时间运行.At格式:at [-f script] [-m -l -r] [time] [date] 其中,-f script 是所要提交的脚本或命令-l 列出当前所有等待运行的作业。
-r 清除作业。
需提供相应的作业标识(ID)-m 作业完成后给用户发邮件time at命令的时间格式可以是H、HH.HHMM、HH:MM或H:M,其中H和M分别是小时和分钟。
还可以使用a.m.或p.m.。
date日期格式可以是月份数或日期数,而且at命令支持today、tomorrow关键词。
如: at 9am tomorrow1.4 &命令在后台运行作业,它不会占据终端, 结果会输出到屏幕上,应该使用重定向输出如: find /usr -name "*.asp" -print > asp.txt 2>&1 &1.5 nohup命令此命令的好处是: 在退出帐户时该进程还不会结束,还可以继续执行作业nohup格式:nohup command &1.6 小结了解并熟悉了有关后台运行作业的一些命令,掌握了各种命令之间的联系与区别,特别是在不同的情况下,应该使用不同的命令。
对与批量的作业应该使用shell脚本来执行,对于大工作量的任务应该在系统负荷较低时进行执行。
第4章文件名置换此章的重点主要为掌握 ./*/?/[...]/[!..] ,鉴于之前的正则表达式基础,此章就此带过。
第 5 页共 10 页学习笔记之《Linux与UNIX Shell编程指南》第5章 shell输入与输出此章的重点为: echo, read,cat,tee,管道与文件重定向 1.1 echo命令echo命令可以显示文本行或变量,或者把字符串输入到文件常用功能:\c 不换行\f 进纸\t 跳格\n 换行示例:# echo -e "what is you name: \c"# read name注意unix与linux系统的区别,linux系统需要带-e参数把字符串输入到文件:# echo "what is you name" > a.txt 追加:# echo "my name is jack" >> a.txt 1.2 read命令使用read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量,类似C语言中的scanf函数.示例: 读入一个值到变量name中# read name# jack# echo $jack //进行输出# jack1.3 cat命令用它来显示文件内容,创建文件,显示控制字符cat命令的一般形式为:cat [options] filename1 ... filename2 ...示例:显示a.txt(b.txt)?里面的内容# cat a.txt b.txt第 6 页共 10 页学习笔记之《Linux与UNIX Shell编程指南》将 a.txt 内容加到b.txt中# cat a.txt >> b.txt1.4 管道可以通过管道把一个命令的输出传递给另一个命令作为输入一般形式为:命令1 |命令2示例:# ls |grep httpd将ls 查找到的结果输给grep当作输入,进行查找httpd关键字1.5 tee命令te命令作用:能在输出的同时,将其存入一个文件它的一般形式为:tee -a files其中,- a表示追加到文件末尾结合上面的几个命令给出一个示例:# find /usr/jsp -name "[a-z][0-9].jsp" -printl |tee -a jsp.data1.6小结对输入输出的命令还需进一步熟悉与练习,特别是它们之间的联系,对文件重定向方面的知识目前还不是很清楚,还得多看些资料。
第6章第6章命令执行顺序1.1 &&&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命令”此命令和C,C++,java中的命令是一制,要区别的地方是高级语言中真为1,假为01.2 ||||的作用有一些不同。