1、第2章 Linux的常用命令,本章学习目标通过对本章的学习,读者应该掌握以下主要内容:命令的使用方式文件及目录操作命令文件压缩命令联机帮助命令进程管理的命令,Shell的种类:在Linux和Unix系统里有多种不同的shell可以使用。最常用的几种是Bourne shell(sh), C shell(csh)和Korn shell (ksh)。三种shell都有它们的优点和缺点。Bourne shell的作者是Steven Bourne,它是Unix最初使用的shell,在每种Unix上都可以使用。它在shell编程方面相当优秀,但在处理与用户的交互方面作得不如其他几种shell。C shel
2、l由Bill Joy所写,它更多考虑了用户界面的友好性。它支持命令补齐等一些sh所不支持的特性。普遍认为C shell的编程接口不如sh,但csh被很好C程序员使用,因为它的语法与C语言很相似。Korn shell由Dave Korn所写。它集合了csh和sh的优点并且和sh完全兼容。,除了这些shell外,许多其他的shell程序吸收了这些原有的shell程序的优点而成为新的shell。在Linux上常见的有tcsh(csh的扩展),Bourne Again shell(bash,sh的扩展),和public Domain Korn shell(pdksh, ksh的扩展)。Bash是大多数
3、Linux系统的缺省shell。bash与Borne shell完全向后兼容,并且在Borne shell的基础上增加和增强了很多特性。Bash也包含了很多C和Korn shell里的优点。Bash有很灵活和强大的编程接口,同时又有很友好的用户界面。Borne shell最大的缺点在于它处理用户的输入方面。在sh里键入命令会很麻烦,尤其当你键入很多相似命令时。而bash准备了几种特性使命令输入更容易。,Linux shell的作用就是执行通过键盘输入的命令。Shell也被称为Linux的命令解释器(command interpreter)。Shell命令可以被分为内部(内置)命令和外部命令。内
4、部命令是shell本身包含的一些命令,这些内部命令的代码是整个shell代码的一个组成部分;而外部命令的代码则存放在一些二进制的可执行文件或者shell脚本中。,2.1 使用命令,2.1.1 命令的使用方式在Linux系统中打开终端的方式有以下两种:一种是在桌面上依次单击“主程序系统工具终端”可打开如图2-1的终端窗口;另一种是在Linux桌面上单击鼠标右键,从弹出的快捷菜单中选择“终端”命令,也可打开终端窗口。,一般的Linux使用者均为普通用户,而系统管理员一般使用超级用户帐号完成一些系统管理的工作。要说明的是,不同的用户登录其终端的提示符略有不同,在图2-1中显示的是超级用户的提示符。L
5、inux系统是以全双工的方式工作,即从键盘把字符输入系统,系统再将字符回送到终端并显示出来。通常,回送到终端的字符与输入字符相同,因此操作员看到的正是自己输入的字符。但也有个别的时候,系统不回送符号。,终端显示提示符后,用户就可以输入命令请示系统执行。这里所谓命令就是请示调用某个程序。例如当用户输入date命令时,系统就去调用date程序显示当前的日期和时间,终端屏幕上会出现类似下面的信息:rootpowersky root#date日 2月 1 15:49:11 CST 2004 当命令输入完毕后,一定不要忘记按回车健,因为系统只有收到回车键才认为命令行结束。 又如询问当前有哪些用户挂在系统
6、里。命令及响应如下所示:rootpowersky root# whoroot :0 Feb 1 15:41root pts/0 Feb 1 15:46 (:0.0)jl pts/1 Feb 1 15:40 (:0.0),还有另外的方法可以查看目前登录用户的注册信息。命令及响应如下所示: rootpowersky root# who am iroot pts/0 Feb 1 15:46 (:0.0) 这时系统仅回送用户自己的注册信息。假如用户打错了命令,系统将回答这一命令没有找到。rootlbliubing root# whom whom: unable to open /root/Mail/d
7、raft: 没有那个文件或目录 上面几条命令在终端中的输入方法及响应如图2-3所示。,另外,在终端上还有一个命令补齐(Command-Line Completion)的操作技巧。所谓命令补齐是指当键入的字符足以确定目录中一个唯一的文件时,只须按 Tab 键就可以自动补齐该文件名的剩下部分,例如要把目录 /freesoft 下的文件 gcc-2.8.1.tar.gz 解包,当键入到 tar xvfz /freesoft/g 时,如果此文件是该目录下唯一以 g开头的文件,这时就可以按下 Tab 键,这时命令会被自动补齐为:tar xvfz /freesoft/gcc-2.8.1.tar.gz ,非
8、常方便。,在shell提示符后不输入任何内容并且在按下键盘上的键的同时按下键,就会直接退出当前会话。输入echo $SHELL并且按键。系统在屏幕上显示默认运行的shell的路径作为回答。在Bash中,为了查看环境变量的默认设置,输入set并按下键,Bash环境变量的设置会出现在屏幕上。,2.1.2 特殊字符,在Linux系统的终端中有几个最有用的bash变量,这些变量变量名及简单描述如下:HISTFILE: 用于贮存历史命令的文件。 HISTSIZE: 历史命令列表的大小。 HOME: 当前用户的用户目录。 OLDPWD: 前一个工作目录。 PATH: bash寻找可执行文件的搜索路径。 P
9、S1: 命令行的一级提示符。 PS2: 命令行的二级提示符。 PWD: 当前工作目录。 SECONDS: 当前shell开始后所流逝的秒数。,这意味着 bash 保留了一定数目的先前已经在shell 里输入过的命令。这个数目取决于一个叫做HISTSIZE的变量。使用历史记录列表最简单的方法是用上方向键。 另一个使用命令历史文件的方法是用 bash 的内部命令 history 和 fc(fix 命令)命令来显示和编辑历史命令。history 命令能以两种不同的方法来调用。第一种是: history n 当 history 命令没有参数时,整个历史命令列表的内容将被显示出来。使用 n 参数的作用是
10、仅有最后 n 个历史命令会被列出 。例如,history 5 显示最后 5 个命令。 调用 history命令的第二种方法用于修改命令历史列表文件的内容。命令的语法如下: history -r|w|a|n filename,-r 选项告诉 history 命令读命令历史列表文件的内容并且把它们当作当前的命令历史列表。-w 选项将把当前的命令历史记录写入文件中并覆盖文件原来的内容。-a 选项把当前的命令历史记录追加到文件中。-n 选项将读取文件中的内容并加入到当前历史命令列表中。如果 filename 选项没有被指定,history 命令将用变量HISTFILE 的值来代替。,另一个使工作变得轻
11、松的方法是使用命令别名 命令别名通常是其他命令的缩写,用来减少键盘输入。 命令格式为:alias alias-name=original-command 其中,alias-name是用户给命令取的别名,original-command是原来的命令和参数。需要注意的是,由于Bash是以空格或者回车来识别原来的命令的,所以如果不使用引号就可能导致Bash只截取第一个字,从而出现错误。,注意:在定义别名时,等号两边不能有空格,否则shell将不能决定要做什么。仅在命令中包含空格或特殊字符时才需要引号。如果键入不带任何参数的alias命令,将显示所有已定义的别名。一旦定义了别名,除非你退出bash,键
12、入alias将和原来的命令有同样的作用。如果想取消别名,可以使用以下命令:$unalias 别名例:$alias goconfig=cd /usr/sample-configs$unalias goconfig,Bash有两级提示符。第一级提示符是经常见到的Bash在等待命令输入时的情况。第一级提示符的默认值是$符号。如果用户不喜欢这个符号,或者愿意自己定义提示符,只需修改PS1变量的值。 例如将其改为: PS1=”输入一个命令:” 第二级提示符是当Bash为执行某条命令需要用户输入更多信息时显示的。第二级提示符默认为“”。如果需要自己定义该提示符,只需改变PS2变量的值。 例如将其改为: P
13、S2=”更多信息:”,用户也可以使用一些事先已经定义好的特殊字符。这些特殊字符将使提示符中包含当前时间之类的信息。 表2-1列出了最常用的一些特殊字符及其含义。 表2-1 bash提示符常用特殊字符,下面来看几个实际例子: PS1=”d” 将使提示符变成显示日期,如下所示: 一 2月 02 而 PS1=”d”,将使提示符变成如下所示:d 若PS1=“Wh w“将使提示符变成如下所示: niclbliubing /liunuxbook/nic 该例就是使用三个特殊字符的组合得到的。,以上的各例在Red Hat Linux9.0系统的终端中所显示的结果如图所示。,2.1.3 通配符基础,通配符 又
14、称多义符。在描述文件时,有时在文件名部分用到一些通配符,以加强命令的功能。在Linux系统中有以下基本的通配符: ?: 表示该位置可以是一个任意的单个字符。 : 表示该位置可以是若干个任意字符。 方括号charset: 可替代charset集中的任何单个字符,下面对方括号通配符进行一些说明。例如cChH:表示在文件的该位置中可出现任意单个的c或h字符的大小写形式。另外,通配符集还能描述介于字符对之间的所有字符。如“a-z”就可以代 替任意小写字母,而a-zA-Z则可替代任意字母。注意可替代的字符包括a到z和A到Z字符对之间的所有字符。,那么,是否能在一条指令中用多个通配符呢?答案是肯定的。如
15、rm a*out*tmp? 该命令可以删除一系列临时性的输出文件,如ab.out.temp1、ab.out.temp1 等。UNIX或Linux系统可将一定相关的文件看作一个集合的一部分,用户可以用该集合去匹配。 所以,如果需要显示nic-1.png,nic-2.png,nic-3.png,nic-4.png,nic-5.png,只须要在终端的命令提示符后输入: ls nic-1-5.png,这样利用通配符可以使指令的输入变得更加灵活。该技巧的可很容易实现显示一些文件名相关的文件。以上的各例在Red Hat Linux9.0系统的终端中所显示的结果如图2-5所示。,2.2 文件概念及操作命令,
16、在Linux中,一个文件就是一个字节序列。这样,所有东西包括网络接口卡、磁盘驱动器、键盘、打印机、简单/普通文件(文本文件、可执行程序等)或是目录都被看作是一个文件,因为它们都用字节序列表示。所以在Linux中,所有的输入和输出设备都被当作文件来对待。,2.2.1 文件显示命令显示指定工作目录中所包含的内容的指令是ls,要说明的是ls命令列出文件的名字,而不是文件的内容。该命令的使用方式如下: ls 选项 文件目录列表 ls命令中的常用选项如下:-a: 显示所有文件及目录 (ls规定将文件名或目录名中开头为“.“的视为隐藏档,不会列出) -C: 按列输出,纵向排序(column)-x: 按列输
17、出,横向排序(line),-l: 除文件名外,也将文件状态、权限、拥有者、文件大小 等信息详细列出-t : 根据文件建立时间的先后次序列出 -A : 同 -a ,但不列出 “.” (当前目录) 及 “ (父目录) -X: 按扩展名排序显示-R: 递归显示下层子目录- -help: 显示帮助信息- -version: 显示版本信息 例: $ls -help |more,可以用-F选项来识别目录、可执行文件和符号连接。命令ls F会在可执行文件后面加上星号(*)、目录后面加上斜线(/)、符号连接后面加上符号。,ls l命令输出: 第1个字段的第一个字母: 文件类型(- 普通文件 b 块特殊文件 c
18、 字符特殊文件 d 目录 l 连接 p 命名管理) 第1个字段的其他字母: 所有者、组和其他用户的访问权限 第2个字段: 连接数 第3个字段:所有者的登录名 第4个字段: 所有者的组名 第5个字段: 文件大小,以字节为单位 第68个字段: 最近一次修改的日期、时间 第9个字段:文件名,Linux支持多种文件类型,每一类用一个字符来表示,其说明如下:简单/普通文件目录符号(软)链接特殊文件(设备)命名管理(FIFO),简单/普通文件 (-)简单/普通文件是用来在辅助存储设备(如磁盘)上存储信息和数据。普通文件可以包含程序源代码、可执行程序、PostScript代码、图片、声音、图像等。Linux
19、不会区别对待以上这些文件,它把每个文件都当作是一个字节序列而不会对文件内容附加任何的结构或赋予任何含义。只有使用或处理文件的应用程序才会根据文件的内容赋予其相应的含义。,可以按照所喜欢的规则命名文件,Linux中不对任何文件的命名规则作强制的规定。文件名最长不能超过255个字符。虽然可以用任何字符给文件命名,但不要使用非打印字符、空白字符(空格和制表符)和shell命令保留字符,因为这些字符使得文件名难以处理。,目录 (d)目录包含其他的一些文件名和目录名。在一些系统中,也有文件夹表示目录。在Linux系统中,一个目录项的结构如下图所示:,Inode号用4个字节表示,是磁盘上数组的索引值。这个
20、数组中有个叫做索引节点(通常叫inode)的项,它记录了文件的属性,如文件大小(以字节为单位)。Linux内核为每个新创建的文件分配一个inode,这样Linux中每个文件都有一个惟一的inode号。,连接文件 (l)当创建一个已经存在的文件的符号连接时,系统就创建一个连接文件。这个连接文件指向已存在的文件,允许重命名已存在的文件,不用复制其内容而实现对它的共享。符号连接是BSD Unix最先使用,但目前所有类型Linux都在使用。可以用ln命令对一个已经存在的文件再建立一个新的连接,而不复制文件的内容。连接有软连接和硬连接之分,软连接又叫符号连接。它们各自的特点是:,硬连接:原文件名和连接文
21、件名都指向相同的物理地址。 目录不能有硬连接;硬连接不能跨越文件系统(不能跨越不同的分区)。采用连接方式,使得文件在磁盘中只有一个拷贝,可以节省硬盘空间;因为删除文件要在同一个索引节点属于唯一的连接时才能成功,因此可以防止不必要的误删除。当一个硬链接被删除时,它所指向的原文件并不受影响,只是该硬链接被删除了。如果源文件被删除,那么原文件的条目被删除了,但是其内容依然保留在磁盘上,直到指向该文件的链接也被删除。如果一个文件有多个指向它的硬链接,只是删除掉该文件并不能有效地释放磁盘空间,你将不得不删除掉所有指向它的硬链接,这样才可以做到这一点。,符号连接又称为软连接,是linux特殊文件的一种,作
22、为一个文件,它的数据是它所连接的文件的路径名。类似windows下的快捷方式。 可以删除原有的文件而保存连接文件,没有防止误删除功能。当符号链接被删除后,它所指向的文件并不受影响;但当符号链接所指向的文件被删除或移动到不同的地方后,该符号链接将不再起作用。,特殊文件(设备) (c字符、b块)特殊文件用来访问硬件设备,包括键盘,硬盘,光驱,DVD,磁带和打印机。每个硬件至少和一个特殊文件相关联命令或应用程序通过访问特殊文件来访问相应硬件设备。特殊文件分为两种:字符特殊文件和块特殊文件。字符特殊文件对应于面向字符的设备,例如键盘。而块特殊文件对应于面向块的设备,例如磁盘。特殊文件一般放在目录/de
23、v下。这个目录包含所有的设备文件,每个连接到计算机的设备至少有一个相应的设备文件。应用程序和命令读写外围设备文件的方式和读写普通文件相同。这就是为什么Linux的输入和输出被称为是设备无关的。,这些特殊文件是 fd0(对应于软驱0)、hda(对应于硬盘A)、 lp0(对应于打印机0)、 tty(对应于电传打字机终端)。各种特殊文件都模拟物理设备,因此也被称为虚拟设备。可以通过虚拟设备和Linux系统进行交互,不需要使用和系统连接着的物理设备。这些虚拟设备已经变得越来越重要,它们允许通过网络,调制解调器或窗口系统如X窗口系统中的虚拟终端来使用Linux系统。,命名管道(FIFO) (p)Linu
24、x有一些机制允许进行间进行通信。这些机制被称为进程间通信(IPC)机制(也就是通常说的IPC原语),是广泛使用的客户-服务器软件模型的关键。3种常用的原语是:管道、命名管理(也称为FIFOs)和sockets。管道是一块内核态内存(内核态缓存),允许两个进程进行相互通信,假定两个进程运行在同一台计算机上,并且相互关联;两个进程之间的典型关系是父子关系。FIFO是一个文件(命名管道类型),允许运行在同一台计算机上的两个进程进行通信,这两个进程不必相互关联。Sockets是内核态内存上的一个数据结构,运行在不同计算机的进程可以使用sockets进行相互通信;计算机可以是在企业内部网上或互联网上。,
25、文件类型的字符表示文件的权限,权限由三个字符串组成,这三个字符串分别表示:该文件所有者的权限、组中其他人的权限和系统中其他人的权限;每个字符串又由三个字符组成,依次表示对文件的读(用字符r表示)、写(用字符W表示)和执行权限(用字符x表示)。当用户没有相应的权限时,该权限的对应位置用短线“-”来表示。,例如: drwxr-x-表示的含义是:d表示这条信息是目录;目录拥有者的权限是rwx(表示有读、写和执行权限);组中其他人对该目录的权限是r-x(表示有读和执行权限,没有写权限),系统中其他人对该目录的权限是-(表示读、写和执行权限都没有)。,2.2.2 查找、排序及显示指定文件内容的命令 1.
26、 查找文件在Linux系统中查找文件的命令通常为find命令。find命令可以在使用、管理Linux系统中方便地查找所需要的指定文件。 find命令的语法格式如下: find 目录列表 匹配标准 在命令格式中有两个参数,说明如下:目录列表:希望查询文件或文件集的目录列表,目录间用空格分隔。匹配标准:希望查询的文件的匹配标准或说明。详细的匹配标准如表2-2所示。,1)通过文件名查找 知道了某个文件的文件名,却不知道它存于哪个目录下,此时可通过查找命令找到该文件,命令如下:# find -name httpd.conf print 2)根据部分文件名查找当要查找某个文件时,不知道该文件的全名,只知
27、道这个文件包含几个特定的字母,此时用查找命令也是可找到相应文件的。这时查找文件名时使用通配符“*”、“?”。例如,还是查找文件“httpd.conf”,但仅记得该文件名包含“http”字符串,可使用如下命令查找:#find / name *http* -print,2)根据文件的特征查询如果仅知道某个文件的大小、修改日期等特征也可使用find命令把该文件查找出来。例如,知道一个文件尺寸小于为2500bytes,可使用如下命令查找:#find /etc size -2500c print (c表示字节数),下面是以时间特征为查找条件的find命令函数的参数: amin n 查找n分钟以前被访问过
28、的所有文件. atime n 查找n天以前被访问过的所有文件. cmin n 查找n分钟以前文件状态被修改过的所有文件. ctime n 查找n天以前文件状态被修改过的所有文件. mmin n 查找n分钟以前文件内容被修改过的所有文件. mtime n 查找n天以前文件内容被修改过的所有文件.,2. 显示文本文件内容显示文本文件内容的命令是cat命令,用来将文件的内容显示到终端上,其命令语法如下:cat 选项 文件列表 命令中的参数说明如下: 常用选项如表2-3所示 文件列表:这是要连接文件的选项列表。如果没有指定文件或连字号(-),就从标准输入读取。,表2-3 cat命令常用选项,举例:$c
29、at /etc/passwd /etc/motd 这个例子将顺序显示出/etc/passwd和/etc/motd的内容 。但是如果这些文件的内容超过一满屏,屏幕滚动的速度太快,很难阅读,以至只能看到最后一屏。所以,需要的是一个类似cat的命令,但能在内容填满一屏以后暂时停下来。这个常用的命令称为more;$more /etc/passwd /etc/motd,当more命令在每页后面暂停时,可以敲入下列字符中的一个,告诉它下一步做什么: 空格 列出下一页 回车 列出下一页 b 列出前一页 q 退出 :n 列出下一个文件 另一个类似more,但增加了许多功能的命令是less,另一个有用的功能是对
30、文件的行、字和字符进行计数。这可以用wc(word count)命令来完成: $wc /etc/passwd 19 23 623上面的三个值19,23和623分别表示/etc/passwd文件的行数,字数和字符数。这里19行表示这台机器上19个登录的帐号。你可能会认为/etc/passwd文件中不可能只有23个字。这和字典中查字不一样,因为wc使用更简单的字定义。它只将用空格,制表符和换行等字符分隔的字串作为一个字。,3. 查找文件内容查找文件内容的命令是grep命令。其使用的语法如下:grep 选项 匹配字符串 文件列表命令中的参数说明如下: 选项如表2-4所示件列表:匹配字符串:希望在文件
31、中查到的串。,表2-4 grep命令的常用选项选 项 说明 -v 打印那些不匹配的行 -c 只打印匹配模式的行编号计数 。 -l 打印至少有一行匹配的文件列表 -n 在每行前显示其行编号 -i 在匹配时忽略大小写 ,缺省状态是区分大小写。,使用举例:找出所有以分号结束的行,并打印其行号,同时只显示匹配的前6行 grep -n “;$“ filename -6 从文件中选择只要有两个数字,且他们之间没有任何其他字符的行 grep -n 0-90-9 filename,4. 排序命令sort命令的功能是对文件中的各行进行排序. sort命令可以被认为是一个非常强大的数据管理工具,用来管理内容类似数
32、据库记录的文件。sort命令将逐行对文件中的内容进行排序,如果两行的首字符相同,该命令将继续比较这两行的下一字符,如果还相同,将继续进行比较。该命令的语法格式如下: sort 选项 文件说明:sort命令对指定文件中所有的行进行排序,并将结果显示在标准输出上。如不指定输入文件或使用 “- ”,则表示排序内容来自标准输入。,2.2.3 比较文件内容的命令 comm命令如果想对两个有序的文件进行比较,可以使用comm命令。该命令的使用语法如下:comm - 123 file1 file2说明:该命令是对两个已经排好序的文件进行比较。其中file1和file2是已排序的文件。comm读取这两个文件,
33、然后生成三列输出:仅在file1中出现的行;仅在file2中出现的行;在两个文件中都存在的行。如果文件名用“- ”,则表示从标准输入读取。,选项1、2或3抑制相应的列显示。例如comm - 12就只显示在两个文件中都存在的行;comm - 23只显示在第一个文件中出现而未在第二个文件中出现的行;comm - 123则什么也不显示。 例:$ comm - 12 myfile1 myfile2 就只显示文件myfile1和myfile2中共有的行。,2. diff命令diff命令用于比较两个文件内容的不同。其命令语法格式如下:diff 选项 原文件 目标文件其中“源文件”和“目标文件”是用户要比较
34、的两个文件。,表2-4 diff命令的常用参数选 项 说 明a 将所有文件当做文本文件来处理 b 忽略空格造成的不同 B 忽略空行造成的不同q 只报告是否不同,不报告具体的不同信息H 利用试探法加速对大文件的搜索i 忽略大小写的变化l 用pr对输出进行分页r 在比较目录时比较所有的子目录s 两个文件相同时才报告v 在标准输出上输出版本信息并退出,2.2.4 复制、删除和移动文件的命令 1. 文件复制命令 Linux下的cp命令用于复制文件或目录,该命令是最重要的文件操作命令,其命令格式如下:cp 选项 源文件 目标文件cp 选项 源文件组 目标目录参数说明如下:源文件:要拷贝的文件。目标文件:
35、目标名。也可以是目录名,这种情况下,源文件名作为目标文件名,而文件放在该目录下。源文件组:要拷贝文件是由空格分隔的文件列表。目标目录:目标目录。,表2-5 cp命令常用选项,常用选项 说 明 -a 在备份中保持尽可能多的源文件结构和属性。 -b 作将要覆盖或删除文件的备份。 -f 删除已存在的目标文件。 -i 提示是否覆盖已存在的目标文件。 -p 保持原先文件的所有者,组权限和时间标志 -r 递归拷贝目录,把所有非目录文件当普通文件拷贝。 -R 递归拷贝目录。,2. 文件的删除命令rm命令可从文件系统中删除文件及整个目录。rm命令所使用的命令格式如下:rm 选项 文件列表 参数说明如下:常用命
36、令的选项列表如表2-6所示。文件列表:希望删除的用空格分隔的文件列表,可以包括目录名。,表2-6 rm命令常用选项常用选项 说 明-r 删除文件列表中指定的目录,若不用此标志则不删除目录-i 指定交互模式。在执行删除前提示确认。任何以Y开始的响应都表示肯定;其他则表示否定。-f 指定强行删除模式。通常,在删除文件权限可满足时rm提示。本标志强迫删除,不用提示。-v 删除每个文件时输出文件信息。- 指明所有选项结束。用于删除一个文件名与某一选项相同的文件。例如:假定偶然建立了名为-f的文件,又打算删除它,命令rm -f不起任何作用,因为-f被解释成标志而不是文件名;而命令rm - -f能成功地删
37、除文件。,3. 移动文件 在Linux系统中,移动文件可使用mv命令。mv命令还可改文件名,即把源文件以一个新文件名移动到另一个新的目录中去。该命令所使用语法形式有:mv -f -i 文件1 文件2mv -f -i 目录1 目录2mv -f -i 文件列表 目录 命令中的参数说明如下:,-f:通常情况下,目标文件存在但用户没有写权限时,mv会给出提示。本选项会使mv命令执行移动而不给出提示。-i:交互模式,当移动的目录已存在同名的目标文件名时,用覆盖方式写文件,但在写入之前给出提示。文件1: 源文件名。文件2:目标文件名(新文件名)。目录1:源目录名。目录2:目标目录名(新目录名)。 文件列表
38、:用空格分隔的文件名列表。本选项用于文件保持它们的名字被移动到一个新目录。 目录:目标目录。,2.2. 5 文件内容统计命令wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。 wc命令使用的语法格式如下: wc 选项 文件列表 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。该命令各选项含义如下: -c:统计字节数。 -l:统计行数。 -w:统计字数。,2.2.6 命令的输入和输出,在Linux系统中,执行一个shell命令行时通常会自动打开三个标准文件,即标
39、准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件也都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。,在Linux中,每个打开的文件都有一个小的整数与之对应,称为文件描述符。0、1、2分别是stdin、stdout和stderr的文件描述符,也称为标准文件描述符。内核根据文件描述符执行文件操作(如读文件)。内核根据文件描述符查找进程的文件描述符表,获得指向文件表的指针。文件表中包含了指向inode表中这个文件的inode的指针。访问了文件的inode,接
40、下来通过直接指针和间接指针访问保存文件内容的磁盘块,完成对文件的操作。,每个Linux文件都有一个文件末尾(eof)标记。对于从文件中读取输入法的命令,在读到文件末尾时就会读到文件末尾标记。对于存储的文件,文件末尾标记不是一个字符,通常是一个小的负整数如-1。当输入文件是键盘时,Linux文件末尾标记是在行首的。所以对于cat命令,当它从键盘读输入时,可以在新的一行按下键以终止命令执行。文件末尾标记由创建文件的文件编辑器插入到文件中。,Linux系统为输入、输出的传送引入了另外两种机制,即输入/输出重定向和管道。输入重定向 输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。输
41、入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。另一种输入重定向称为here文档,它告诉shell当前命令的标准输入来自命令行。here文档的重定向操作符使用“”。它将一对分隔符(!)之间的正文重定向输入给命令。,由于大多数命令都以参数的形式在命令行上指定输入文件的文件名,所以输入重定向并不经常使用。尽管如此,当要使用一个不接受文件名作为输入参数的命令,而需要的输入内容又存在一个文件里时,就能用输入重定向解决问题。,输出重定向输出重定向是指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。输出
42、重定向比输入重定向更常用,很多情况下都可以使用这种功能。例如,如果某个命令的输出很多,在屏幕上不能完全显示,那么将输出重定向到一个文件中,然后再用文本编辑器打开这个文件,就可以查看输出信息;如果想保存一个命令的输出,也可以使用这种方法。还有,输出重定向可以用于把一个命令的输出当作另一个命令的输入(还有一种更简单的方法,就是使用管道)。,输出重定向的一般形式为:命令文件名为避免输出重定向中指定文件只能存放当前命令的输出重定向的内容,shell提供了输出重定向的一种追加手段。输出追加重定向与输出重定向的功能非常相似,区别仅在于输出追加重定向的功能是把命令(或可执行程序)的输出结果追加到指定文件的最
43、后,而该文件原有内容不被破坏。可以使用追加重定向操作符“”,其使用语法形式为:命令文件名,管 道 将一个程序或命令的输出作为另一个程序或命令的输入,有两种方法,一种是通过一个临时文件将两个命令或程序结合在一起;另一种是Linux所提供的管道功能。这种方法比前一种方法更好。 管道可以把一系列命令连接起来,这意味着第一个命令的输出会作为第二个命令的输入通过管道传给第二个命令,第二个命令的输出又会作为第三个命令的输入,以此类推。显示在屏幕上的是管道行中最后一个命令的输出(如果命令行中未使用输出重定向)。,可以通过使用管道符|来建立一个管道行,下面示例就是一个管道行: $cat sample.txt
44、|grep “High” |wc l 这个管道将把cat命令(列出一个文件的内容)的输出送给grep命令。Grep命令在输入里查找单词High,grep命令的则是所有包含单词High的行,这个输出又被送给wc命令。带-l选项的wc命令将统计输入里的行数。假设sample.txt的内容如下: Things to do today: Low: Go grocery shopping High: Return movie High: Clear level 3 in Alien vs. Predator Medium: Pick up clothes from dry cleaner,管道行将返回结
45、果2,指出你今天有两件很重要的事要做: $cat sample.txt|grep “High”|wc -l 2 $,命令替换 命令替换和重定向有些相似,但区别在于命令替换是将一个命令的输出作为另外一个命令的参数。常用命令格式为: command1 command2 其中,command2的输出将作为command1的参数。需要注意的是这里的符号,被它括起来的内容将作为命令执行,执行后的结果作为command1的参数。 例如: $ cd pwd 该命令将pwd命令列出的目录作为cd命令的参数,结果仍然是停留在当前目录下。,2.3 目录及其操作命令 1、树型目录结构Linux系统以层次结构的方式来
46、组织和管理系统中的所有文件。所谓层次结构就是将所有文件的说明信息采用树型结构组织起来,即常说的目录。也就是说,整个文件系统有一个“根”(root),然后在根上分“杈”(directory),任何一个分杈上都可以再分杈,杈上也可以长出“叶子”。“根”和“杈”在Linux中被称为是“目录”或“文件夹”。而“叶子”则是一个个的文件。实践证明,此种结构的文件系统效率比较高。,如前所述,目录也是一种类型的文件。Linux系统通过目录将系统中所有的文件分级、分层组织在一起,形成了Linux文件系统的树型层次结构。以根目录为起点,所有其他的目录都由根目录派生而来,用户可以浏览整个系统,可以进入任何一个已授权
47、进入的目录,访问那里的文件。Linux目录提供了管理文件的一个方便途径。每个目录里面都包含文件。用户可以为特定的文件创建特定的目录,也可以把一个目录下的文件移动或复制到另一目录下,而且能移动整个目录,并且和系统中的其他用户共享目录和文件。需要说明的是,根目录(系统目录)是Linux系统中的特殊目录。Linux是一个多用户系统,操作系统本身的驻留程序存放在以根目录开始的专用目录中。,2. 工作目录、用户主目录与路径 (1)工作目录与用户主目录 从逻辑上讲,用户在登录到Linux系统中之后,每时每刻都“处在”某个目录之中,此目录被称作工作目录或当前目录(Working Directory)。工作目
48、录是可以随时改变的。用户初始登录到系统中时,其主目录(Home Directory)就成为其工作目录。工作目录用“.”表示,其父目录用“”表示。 用户主目录是系统管理员增加用户时建立起来的(以后也可以改变),每个用户都有自己的主目录,不同用户的主目录一般互不相同。 用户刚登录到系统中时,其工作目录便是该用户主目录,通常与用户的登录名相同。,(2)路径 路径是指从树型目录中的某个目录层次到某个文件的一条道路。此路径的主要构成是目录名称,中间用“/”分开。某个文件在文件系统中的位置都是由相应的路径决定的。路径又分相对路径和绝对路径。 绝对路径是指从“根”开始的路径,也称为完全路径;相对路径是从用户
49、工作目录开始的路径。应该注意到,在树型目录结构中到某一确定文件的绝对路径和相对路径均只有一条。绝对路径是确定不变的,而相对路径则随着用户工作目录的变化而不断变化。这一点对于以后使用某些命令如cp和tar等大有好处。,3、Linux系统主要目录说明,/bin :显而易见,bin 就是二进制(binary)英文缩写。包含了那些供系统管理员和普通用户使用的重要的Linux命令的二进制(可执行)映像。这个目录下的文件要么是可执行文件,要么是其他目录下的可执行文件的符号连接。 /boot :在这个目录下存放的都是系统启动时要用到的程序,包括Linux内核的二进制映像。内核文件名是vmlinux(或vmlinuz)加上版本和发布信息。例如FC4的内核文件是/boot/vmlinuz-2.6.11-1.1369_FC4 /dev:dev 是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序。这些文件称为特殊文件。特殊文件又分为两种:字符特殊文件和块特殊文件。,