linux程序设计复习_第1页
linux程序设计复习_第2页
linux程序设计复习_第3页
linux程序设计复习_第4页
linux程序设计复习_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Linux & UNIX;UNIX标准化;UNIX哲学GPL通用性公开许可证(General Public License,简称GPL), 是一个广泛被使用的自由软件许可证条. GPL授予 HYPERLINK /wiki/%E7%A8%8B%E5%BA%8F o 程序 程序接受人以下权利,或称“自由”:以任何目的运行此程序的自由;再发行复制件的自由;改进此程序,并公开发布改进的自由(前提是能得到源代码)。BSDBSD (Berkeley Software Distribution,伯克利软件套件)是Unix的衍生系统,在1977至1995年间由加州大学伯克利分校开发和发布的。POSIXPOSI

2、X是Portable Operating System Interface of Unix的缩写。由IEEE(Institute of Electrical and Electronic Engineering)开发,由ANSI和ISO标准化。VFsVFS就是Virtual File System虚拟文件系统, VFS的作用就是采用标准的Unix系统调用读写位于不同物理介质上的不同文件系统。VFS是一个可以让open()、read()、write()等系统调用不用关心底层的存储介质和文件系统类型就可以工作的粘合层。在Linux下,通过VFS,一个抽象的通用访问接口屏蔽了底层文件系统和物理介质的

3、差异性。RPMRPM软件包管理器英文原义:Redhat Package Manager中文释义:RPM软件包管理器注解:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。CVSCVS(Concurrent Versions System)版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。CVS工作思路在一台服务器上建立一个源代码库

4、,库里可以存放许多不同项目的源程序。由源代码库管理员统一管理这些源程序。每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后用户可以在本地任意修改,最后用CVS命令进行提交,由CVS源代码库统一管理修改。这样,就好像只有一个人在修改文件一样,既避免了冲突,又可以做到跟踪文件变化等。RPCRPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。LinuxP2GNUGNU 是一个由 自由软件 构成的类 Unix 操作系统. GNU 工程 创始于一九八四年,旨在开发一个完整

5、 GNU 系统。GNU这个名字是 “GNUs Not Unix!” 的递归首字母缩写词UNIX的系统结构;Two interfaces文件管理子系统和进程管理子系统。Linux的目录树FHS重要目录 : /home: /bin: /sbin: /usr: /dev: /etc: /proc:P79/home :存放系统用户自身的数据/bin:存放系统程序(二进制可执行文件) 包含root和普通用户都有用的几个命令,通常包含shell/sbin: 超级用户指令 系统管理命令,这里存放的是系统管理员使用的管理程序/usr:存放用户安装的软件/dev:代表物理设备并为这些设备提供接口的文件/etc:

6、存放配置文件/proc: /proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。环境变量:PATH, HOME etc. (export命令)P120Shell 命令Touch 要更新文件的访问和修改时间,请输入: touchprogram.c这会将 program.c 文件的上次访问和修改时间设置为当前日期和时间。如果 progr

7、am.c 文件不存在,touch 命令就创建一个同名的空文件。 要避免创建新文件,请输入: touch HYPERLINK /IT/AIX/aixcmds5/touch.htm l a133z914cd t _blank -cprogram.c 要仅更新修改时间,请输入: touch HYPERLINK /IT/AIX/aixcmds5/touch.htm l a133z914ce t _blank -m *.o这会更新当前目录下的以 .o 扩展名结尾的文件的上次修改时间(不更新访问时间)。touch 命令经常以此方式使用,来改变 make 命令的结果。 要明确设置访问和修改时间,请输入: t

8、ouch HYPERLINK /IT/AIX/aixcmds5/touch.htm l a133z914cd t _blank -c HYPERLINK /IT/AIX/aixcmds5/touch.htm l wqp11c0bob t _blank -t02171425program.c这会将访问和修改时间设置为当前年份的 2 月 17 日的 14:25(2:25 p.m.)。 要使用另一文件的时间戳记而不用当前时间,请输入: touch HYPERLINK /IT/AIX/aixcmds5/touch.htm l vop12e0bob t _blank -rfile1program.c这会

9、将 program.c 文件的时间戳记设置成与 file1 文件一样。 要使用指定时间而不是当前时间处理文件,请输入: touch HYPERLINK /IT/AIX/aixcmds5/touch.htm l wqp11c0bob t _blank -t198503030303.55program.c这会将 program.c 文件的时间戳记设置为 1985 年 3 月 3 日上午 3:03:55。Mkdir实例2:递归创建多个目录 命令:mkdir -p test2/test22输出:rootlocalhosttest#mkdir-ptest2/test22rootlocalhosttest

10、#ll总计8drwxr-xr-x2rootroot409610-2517:42test1drwxr-xr-x3rootroot409610-2517:44test2rootlocalhosttest#cdtest2/rootlocalhosttest2#ll总计4drwxr-xr-x2rootroot409610-2517:44test22rootlocalhosttest2#实例3:创建权限为777的目录 命令:mkdir -m 777 test3输出:rootlocalhosttest#mkdir-m777test3rootlocalhosttest#ll总计12drwxr-xr-x2ro

11、otroot409610-2517:42test1drwxr-xr-x3rootroot409610-2517:44test2drwxrwxrwx2rootroot409610-2517:46test3rootlocalhosttest#说明:test3 的权限为rwxrwxrwxlsls不带参数的ls列举当前目录下有哪些文件和目录,ls Folder列举Folder目录中的文件和子目录,ls File显示File文件的信息(默认为文件名)。123456789dutordutor-desktop:$ cd Wdir/home/dutor/Wdirdutordutor-desktop:/Wdir

12、$ lsAPUE ASM Cpp LaTeX PHP Python QT Shelldutordutor-desktop:/Wdir$ ls Cpp/ACM main main.cpp Makefile Pthread symtab tags test.sCurses main.c main.s Playaround STL SystemProgram test.c TutManualdutordutor-desktop:/Wdir$ ls Cpp/MakefileCpp/Makefilels -a-a选项同ls,但会列举当前目录或者指定目录下的所有文件,包括dot文件(.开头的文件)和.目录

13、和.目录。12dutordutor-desktop:/Wdir$ ls -a. . APUE ASM Cpp .I2C.c.swp LaTeX PHP Python QT Shellls -A-A选项同ls,但会列举当前目录或者指定目录下的所有文件,包括dot文件(.开头的文件),但不包括.目录和.目录。12dutordutor-desktop:/Wdir$ ls -AAPUE ASM Cpp .I2C.c.swp LaTeX PHP Python QT Shellls -l-l选项的ls命令将列举当前目录或指定目录中文件或者子目录的详析信息。12345678910dutordutor-des

14、ktop:/Wdir/Cpp/STL$ ls -ltotal 32drwxr-xr-x 2 dutor dutor 4096 2010-04-19 19:25 bind2nd-rw-r-r- 1 dutor dutor 1296 2010-03-27 18:39 Heap.cpp-rw-r-r- 1 dutor dutor 980 2010-03-27 18:03 Kth-Max.cpp-rw-r-r- 1 dutor dutor 1168 2010-04-29 20:24 main.cpp-rw-r-r- 1 dutor dutor 709 2010-04-20 17:58 operator

15、.cpp-rw-r-r- 1 dutor dutor 654 2010-03-27 17:40 priority_queue.cpp-rw-r-r- 1 dutor dutor 461 2010-04-10 22:41 sort_list.cpp-rw-r-r- 1 dutor dutor 655 2010-04-29 21:18 test.cppls -l列举的信息包含7个以Tab的域:第一个域:第一个字符指明了文件类型 -: 普通文件;d: 目录文件;l: 符号链接;s: socket文件;b: 块设备;c: 字符设备;p: 管道文件。后面的9个字符指明了文件的访问权限:每三位指明一类用户

16、的权限,分别是文件属主、同组用户、其它用户,权限分为读(r)、写(w)、执行(x)。第二个域:链接数。普通文件至少为1,目录至少为2(.和.);第三域:文件属主;第四域:用户组;第五域:文件大小,其中目录大小通常为块大小的整数倍;第六域:文件的最近修改日期和时间,修改文件意味着对其内文件或子目录的增添和修改;第七域:文件名ls -t按文件的修改时间列举文件,最近修改的在前。1234dutordutor-desktop:/Wdir$ lsAPUE ASM Cpp LaTeX PHP Python QT Shelldutordutor-desktop:/Wdir$ ls -tCpp QT Shel

17、l PHP ASM LaTeX APUE Pythonls -r以相反顺序列举文件。123456dutordutor-desktop:/Wdir$ lsAPUE ASM Cpp LaTeX PHP Python QT Shelldutordutor-desktop:/Wdir$ ls -tCpp QT Shell PHP ASM LaTeX APUE Pythondutordutor-desktop:/Wdir$ ls -trPython APUE LaTeX ASM PHP Shell QT Cppls -1单独行列举文件。ls -F可视化显示文件类型。12$ ls -FDesktop/ D

18、ocuments/ Ubuntu-App firstfile Music/ Public/ Templates/ : 目录nothing : 普通文件. :符号链接文件* :可执行文件ls -latr即是说,各个选项可以结合使用,除了互相排斥的选项,例如-a和-A。就是说如果不加任何排序的参数,文件名第一个字母是数字的,将优先显示;其次才是AZ,然后才是a-z;下面是几个排序的参数,大家练习一下就知道了;在文件的大小排序上,我们要用到-S参数;如果是逆序排序时,我们要用到-r参数;按最后访问的时候排序,要用到-t参数;根据扩展名进行排序,要用到参数 -X ;More使用权限:所有使用者使用方式

19、:more -dlfpcsu -num +/pattern +linenum fileNames.说明:类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。参数:-num 一次显示的行数-d 提示使用者,在画面下方显示 Press space to continue, q to quit. ,如果使用者按错键,则会显示 Press h for instructions. 而不是 哔 声-l 取消遇见特殊字元 L(送纸字元)

20、时会暂停的功能-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料-s 当遇到有连续两行以上的空白行,就代换为一行的空白行-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)+/ 在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示+num 从第 num 行开始显示fileNames 欲显示内容的档案,可为复数个数范例:more -s testfile 逐页显示 testfile 之

21、档案内容,如有连续两行以上空白行则以一行空白行显示。more +20 testfile 从第 20 行开始显示 testfile 之档案内容。Lessless 在查看之前不会加载整个文件。可以尝试使用 less 和 vi 打开一个很大的文件,你就会看到它们之间在速度上的区别。在 less 中导航命令类似于 vi。本文中将介绍一些导航命令以及使用 less 的其它一些技巧。1 搜索当使用命令 less file-name 打开一个文件后,可以使用下面的方式在文件中搜索。搜索时整个文本中匹配的部分会被高亮显示。向前搜索/ - 使用一个模式进行搜索,并定位到下一个匹配的文本n - 向前查找下一个匹配

22、的文本N - 向后查找前一个匹配的文本向后搜索? - 使用模式进行搜索,并定位到前一个匹配的文本n - 向后查找下一个匹配的文本N - 向前查找前一个匹配的文本2 全屏导航ctrl + F - 向前移动一屏ctrl + B - 向后移动一屏ctrl + D - 向前移动半屏ctrl + U - 向后移动半屏3 单行导航j - 向前移动一行k - 向后移动一行4 其它导航G - 移动到最后一行g - 移动到第一行q / ZZ - 退出 less 命令5 其它有用的命令v - 使用配置的编辑器编辑当前文件h - 显示 less 的帮助文档&pattern - 仅显示匹配模式的行,而不是整个文件6

23、标记导航当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置。ma - 使用 a 标记文本的当前位置a - 导航到标记 a 处7 浏览多个文件方式一,传递多个参数给 less,就能浏览多个文件。less file1 file2方式二,正在浏览一个文件时,使用 :e 打开另一个文件。less file1:e file2当打开多个文件时,使用如下命令在多个文件之间切换:n - 浏览下一个文件:p - 浏览前一个文件所不同的是less命令除了可以按空格键向下显示文件外,还可以利用上下键来卷动文件。当要结束浏览时,只要在less命令的提示符“:”下按Q键即

24、可。Mv1.作用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令等同于DOS系统下的ren和move命令的组合。它的使用权限是所有用户。2.格式mv options 源文件或目录 目标文件或目录3.options主要参数i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答”y”或”n”,这样可以避免误覆盖文件。f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。4.第二个参数当第二个参数类型是文件时,mv命令完成文件重命名,它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是

25、已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。5.应用实例(1)将/usr/udt中的所有文件移到当前目录(用”.”表示)中:$ mv /usr/udt/* .(2)将文件test.txt重命名为wbk.txt:$ mv test.txt wbk.txt(3)把当前目录的一个子目录里的文件移动到另一个子目录里 mv 文件名/* 另一个目录(4)移动当前文件夹下的所有文件到上一级目录 mv * ./chmodchmod 命令用的很多,但是对这个命令却不是很了解。 在网

26、上搜了一下。 整理如下。 命令格式:chmod-cfvR-help-versionmodefile. rootqs-wg-db2 # chmod -helpUsage: chmod OPTION. MODE,MODE. FILE. or: chmod OPTION. OCTAL-MODE FILE. or: chmod OPTION. -reference=RFILE FILE.Change the mode of each FILE to MODE. -c, -changes like verbose but report only when a change is made -no-pre

27、serve-root do not treat / specially (the default) -preserve-root fail to operate recursively on / -f, -silent, -quiet suppress most error messages -v, -verbose output a diagnostic for every file processed -reference=RFILE use RFILEs mode instead of MODE values -R, -recursive change files and directo

28、ries recursively -help display this help and exit -version output version information and exitEach MODE is of the form ugoa*(-+=(rwxXst*|ugo)+.Report bugs to .rootqs-wg-db2 #参数说明:1. -cfvR 部分-c:若该档案权限确实已经更改,才显示其更改动作 -f:若该档案权限无法被更改也不要显示错误讯息 -v:显示权限变更的详细资料 -R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更), 这个-R

29、 用的还是很多的。2. Mode 部分这部分可以分成如下3块: who operator permission ugoa*(-+=(rwxXst*|ugo)+.who的含义是: u 文件属主权限 g 同组用户权限 o 其它用户权限 a 所有用户(包括以上三种) operator的含义: + 增加权限 - 取消权限 = 唯一设定权限permission的含义: r 读权限 w 写权限 x 执行权限 X表示只有当该档案是个子目录或者该档案已经被设定过为可执行。s 文件属主和组id l 给文件加锁,使其它用户无法访问 如: chmod a+x 3. 示例:(1)将档案file1.txt设为所有人皆可

30、读取: chmodugo+rfile1.txt (2)将档案file1.txt设为所有人皆可读取: chmoda+rfile1.txt (3)将档案file1.txt与file2.txt设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入: chmodug+w,o-wfile1.txtfile2.txt (4)将ex1.py设定为只有该档案拥有者可以执行: chmodu+xex1.py (5)将目前目录下的所有档案与子目录皆设为任何人可读取: chmod-Ra+r* (6)收回所有用户的对file1的执行权限chmod a-x file14. 使用数字来赋权4.1 先看一下文

31、件的权限格式rootqs-wg-db2 scripts# lltotal 20-rw-r-r- 1 oracle oinstall 0 Feb 24 00:00 alertlogbyday.log-rwxr-xr-x 1 oracle oinstall 430 Feb 20 01:10 alertlogbyday.sh-rwxr-xr-x 1 oracle oinstall 7 Feb 24 05:00 del_st_arch.log-rwxr-xr-x 1 oracle oinstall 648 Feb 19 00:51 del_st_archive.sh-rwxr-xr-x 1 oracl

32、e oinstall 9 Feb 24 05:00 max_sn.logdrwxr-xr-x 3 root root 4096 Feb 23 23:40 pymonitorll的结果返回七列,分别表示如下含义:第一栏文件属性第二栏文件数第三栏拥有者第四栏所有者群组第五栏大小第六栏建档日期第七栏档名我们设置文件的权限就是这是第一栏里的文件属性。文件属性这块共有十个字段,如:drwxr-xr-x我们把这10个列分成4块:d rwx r-x r-x第一块:也就是第一列,用来表示这个文件的类型,有如下值:(1) d 则是目录,我这里的是d,表示的是一个目录(2) - 则是文件;(3) l 则表示为连结

33、档(link file);(4) b 则表示为装置文件里面的可供储存的接口设备;(5) c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标。第二块:第 2到4 列,表示文件拥有者的权限。第三块:第5到7 列,表示拥有者同组人的权限。第四块:第8到10列,表示是非拥有者组人的权限。这些权限均有rwx 三个参数表示,而且分别对应不同的位置。每块由3个列组成,每列对应一个值。 r 代表可读、 w 代表可写、 x 代表可执行。 举例: 如果拥有者只有只读的权限,那么第2到4列就是r-,有读写的权限就是rw-,有读写和执行的权利就是rwx.4.2 使用数字赋权在4.1 中了解准备知识之后,就可以使用

34、数字赋权了。 每块用户有3个权限rwx. 他们对应数字:r -4w-2x-1使用数字赋权的命令格式如下:chmod abc filename其中的abc 分别代表3个数字,并且分别对应问个不同的属组。 即:数字a 对应 第2到4位,表示拥有者的权限。数字b 对应 第5到7位,表示同组用户的权限。数字c 对应第8到10位,表示其他组的权限。rwx 对应4,2,1. 那么只读的权限用4表示r-,读写用6(4+2)表示rw-,写加执行用7(4+2+1)表示rwx。 只读加执行用5(4+1)表示r-x。示例:chmod 755 file1chmod 777 file1 chmoda=rwxfilech

35、mod771file chmodug=rwx,o=xfile chown指令名称 : chown 使用权限 : root 使用方式 : chown -cfhvR -help -version user:group file. 说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。 user : 新的档案拥有者的使用者 IDgroup : 新的档案拥

36、有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)-help : 显示辅助说明-version : 显示版本 范例 : 将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie : chown jessie:users file1.txt 将目前目录下的所有档案与子目录的拥有者皆设为 users

37、 群体的使用者 lamport : chown -R lamport:users * tarx # tar -cxtzjvfpPN 文件与目录 参数:-c :建立一个压缩文件的参数指令(create 的意思);-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!-

38、f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!例如使用 tar -zcvfP tfile sfile就是错误的写法,要写成 tar -zcvPf tfile sfile才对喔!-p :使用原文件的原来属性(属性不会依据使用者而变)-P :可以使用绝对路径来压缩!-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!-exclude FILE:在压缩的过程中,不要将 FILE 打包!范例:范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tarrootlinux # tar -cvf /tmp/etc.tar /etc =仅打包,

39、不压缩!rootlinux # tar -zcvf /tmp/etc.tar.gz /etc =打包后,以 gzip 压缩rootlinux # tar -jcvf /tmp/etc.tar.bz2 /etc =打包后,以 bzip2 压缩# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊# 上述指令在执行的时候,会显示一个警告讯息:# tar: Removing leading / from

40、 member names那是关於绝对路径的特殊设定。 范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?rootlinux # tar -ztvf /tmp/etc.tar.gz# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,# 就得要加上 z 这个参数了!这很重要的!范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下rootlinux # cd /usr/local/srcrootlinux src# tar -zxvf /tmp/etc.tar.gz# 在预设的情况下,我们可以将压缩档在任何地方解开

41、的!这个范例来说,# 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,# 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已rootlinux # cd /tmprootlinux tmp# tar -zxvf /tmp/etc.tar.gz etc/passwd# 我可以透过 tar -ztvf 来查阅

42、tarfile 内的文件名称,如果单只要一个文件,# 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!rootlinux # tar -zxvpf /tmp/etc.tar.gz /etc# 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!范例六:在 /home 当中,比 2005/06/01 新的文件才备份rootlinux # tar -N 2005/06/01 -zcvf home.tar.gz /home范例七:我要备份 /home, /etc ,但不要 /home/dm

43、tsairootlinux # tar -exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!rootlinux # cd /tmprootlinux tmp# tar -cvf - /etc | tar -xvf -# 这个动作有点像是 cp -r /etc /tmp 啦依旧是有其有用途的!# 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在# 这分别代表 standard output, standard input 与管线命令啦!# 这部分

44、我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰!Find搞linux好久了,这几个命令总是用的不那么顺,每次都翻着看,为加强记忆,特此写到blogfind命令用法:find使用说明:将档案系统内符合 expression 的档案列出来。你可以指要档案的名称,类别,时间,大小,权限等不同资讯的组合,只有完全相符的才会被列出来。find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print

45、 为预设 expressionexpression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。-mount, -xdev:只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案-amin n:在过去 n 分钟内被读取过-anewer file:比档案 file 更晚被读取过的档案-atime n:在过去 n 天过读取过的档案-cmin n:在过去 n 分钟内被修改过-cnewer file :比档案 file 更新的档案-ctime n:在过去 n 天过修改过的档案-empty:空的档案-gid n or -group name:gid 是 n 或是 group 名

46、称是 name-ipath p, -path p:路径名称符合 p 的档案,ipath 会忽略大小写-name name, -iname name:档案名称符合 name 的档案。iname 会忽略大小写-size n:档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c:档案类型是 c 的档案。d: 目录c: 字型装置档案b: 区块装置档案p: 具名贮列f: 一般档案l: 符号连结s: socket-pid n:process id 是 n 的档案你可以使用 ( ) 将运算式分隔,并使用下列运算。exp1 -

47、and exp2! expr-not exprexp1 -or exp2exp1, exp2范例:将目前目录及其子目录下所有延伸档名是 c 的档案列出来。# find . -name *.c将目前目录其其下子目录中所有一般档案列出# find . -ftype f将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出# find . -ctime -20 find /var -size +10000将目录下大于1M的显示出来再例如find -size +100k -size -1024K此命令返回文件尺寸大于100K,小于1M的文件的文件名。find命令的使用Usage find pat

48、h_name. expressionpath_name 用于指定要搜索的目录,可以是空格分割的多个目录路径的列表,如果省略此参数,默认使用当前目录expression用于指定搜索的方式,注意:find在执行时,一般会将第一个“-”字符之后的命令行参数都看作expression,把之前的参数都看作为要搜索的路径rootcentos5 # find /var -name maillog/var/log/maillog例如查mailllog常用的action1 -print 以完成的路径名的形式将find的搜索结果显示到标准输出,以NEWLINE分隔各个文件名2 -ls 以ls -l 命令的格式将f

49、ind的搜索结果显示到标准输出 foxexample find /var/ -name maillog -ls3 -exec CMD : 把find的搜索结果作为shell程序CMD的文件名参数,并执行CMD程序 find /logs -mtime +5 -exec rm -rf; /删除/logs目录中更改时间在五日以前的文件4 -ok CMD; 同上,是一种更安全的模式 ,在执行每个命令千,会提示用户来确认是否执行例如:find /root -name test -exec rm -fr ;要注意-exec后面有空格fr后面有空格 前有空格最后是分号另外,要注意的是,在使用时,经常遇到 f

50、ind: missing argument to -exec这个意思并不是说没有exec参数,而是exec后面的参数不对。这时,应该检查;之前有没有空格之类。Grep1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。2.格式grep options3.主要参数options主要参数:c:只输出匹配行的计数。I:不区分大 小写(只适用于单字符)。h:查询多文件时不显示文件名。l:查询多文件时只输出包含匹配字符

51、的文件名。n:显示匹配行及 行号。s:不显示不存在或无匹配文本的错误信息。v:显示不包含匹配文本的所有行。pattern正则表达式主要参数: 忽略正则表达式中特殊字符的原有含义。:匹配正则表达式的开始行。$: 匹配正则表达式的结束行。:到匹配正则表达式的行结束。 :单个字符,如A即A符合要求 。 - :范围,如A-Z,即A、B、C一直到Z都符合要求 。:所有的单个字符。* :有字符,长度可以为0。4.grep命令使用简单实例$ grep test d*显示所有以d开头的文件中包含 test的行。$ grep test aa bb cc显示在aa,bb,cc文件中匹配test的行。$ grep

52、a-z5 aa显示所有包含每个字符串至少有5个连续小写字符的字符串的行。$ grep w(es)t.*1 aa如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(1),找到就显示该行。如果用egrep或grep -E,就不用”号进行转义,直接写成w(es)t.*1就可以了。5.grep命令使用复杂实例假设您正在/usr/src/Linux/Doc目录下搜索带字符 串magic的文件:$ grep magic /usr/src/Linux/Doc/*sysrq.txt:* How do I enable the magic Sys

53、RQ key?sysrq.txt:* How do I use the magic SysRQ key?其中文件sysrp.txt包含该字符串,讨论的是 SysRQ 的功能。默认情况下,grep只搜索当前目录。如果 此目录下有许多子目录,grep会以如下形式列出:grep: sound: Is a directory这可能会使grep 的输出难于阅读。这里有两种解决的办法:明确要求搜索子目录:grep -r或忽略子目录:grep -d skip如果有很多 输出时,您可以通过管道将其转到less上阅读:$ grep magic /usr/src/Linux/Documentation/* | l

54、ess这样,您就可以更方便地阅读。有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,grep会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 ,然后再试。下面还有一些有意思的命令行参数:grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,grep -l pattern files :只列出匹配的文件名,grep -L pattern files :列出不匹配的文件名,grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配magic,而不是magical),grep -C number p

55、attern files :匹配的上下文分别显示number行,grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。grep -n pattern files 即可显示行号信息grep -c pattern files 即可查找总行数这里还有些用于搜索的特殊符号: 分别标注单词的开始与结尾。例如:grep man * 会匹配 Batman、manic、man等,grep man * 匹配man

56、ic和man,但不是Batman,grep 只匹配man,而不是Batman或manic等其他的字符串。:指匹配的字符串在行首,$:指匹配的字符串在行 尾,1、 参数: -I :忽略大小写 -c :打印匹配的行数 -l :从多个文件中查找包含匹配项 -v :查找不包含匹配项的行 -n:打印包含匹配项的行和行标 2、RE(正则表达式) 忽略正则表达式中特殊字符的原有含义 匹配正则表达式的开始行 $ 匹配正则表达式的结束行 到匹配正则表达式的行结束 单个字符;如A 即A符合要求 - 范围 ;如A-Z即A,B,C一直到Z都符合要求 . 所有的单个字符 * 所有字符,长度可以为0 3、举例 # ps

57、-ef | grep in.telnetd root 19955 181 0 13:43:53 ? 0:00 in.telnetd # more size.txt size文件的内容 b124230 b034325 a081016 m7187998 m7282064 a022021 a061048 m9324822 b103303 a013386 b044525 m8987131 B081016 M45678 B103303 BADc2345 # more size.txt | grep a-b 范围 ;如A-Z即A,B,C一直到Z都符合要求 b124230 b034325 a081016 a

58、022021 a061048 b103303 a013386 b044525 # more size.txt | grep a-b* b124230 b034325 a081016 m7187998 m7282064 a022021 a061048 m9324822 b103303 a013386 b044525 m8987131 B081016 M45678 B103303 BADc2345 # more size.txt | grep b 单个字符;如A 即A符合要求 b124230 b034325 b103303 b044525 # more size.txt | grep bB b12

59、4230 b034325 b103303 b044525 B081016 B103303 BADc2345 # grep root /etc/group root:0:root bin:2:root,bin,daemon sys:3:root,bin,sys,adm adm:4:root,adm,daemon uucp:5:root,uucp mail:6:root tty:7:root,tty,adm lp:8:root,lp,adm nuucp:9:root,nuucp daemon:12:root,daemon # grep root /etc/group 匹配正则表达式的开始行 roo

60、t:0:root # grep uucp /etc/group uucp:5:root,uucp nuucp:9:root,nuucp # grep /tmp/sharetab.$ x$fstype != xnfs & echo $patht$rest$fstypet$optst$desc /tmp/sharetab.$ /usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$ /usr/bin/mv -f /tmp/sharetab.$ /etc/dfs/sharetab if -f /etc/dfs/dfstab & /usr/bin/egre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论