admin 管理员组

文章数量: 887032


2024年1月22日发(作者:android应用开发项目)

Linux常用命令详解

(常用、详细)

BISTU

自动化学院

刷碗小工() 2010年11月

开源社区,造福大家,版权所有,翻录不究

(初次接触Linux命令可能对以下说明有不少疑问,可待看完一遍后再回头细看)

(配合Ctrl + F可快速查找你想了解的命令)

- 1 -

索引:(待完善)

文件说明:Linux命令很多,但最常用的80个左右

文档内容充实,用示例说明命令如何使用 笔者力求语言简洁,清晰易懂

由于忙于其他事情,改进排版的工作只能搁置了

最后,望此文档能为大家Linux学习之路献微薄之力

一、路径:

执行命令前必须要考虑的一步是命令的路径,若是路径错误或是没有正确的指定,可能导致错误的执行或是找不到该命令。要知道设置的路径,可执行以下命令:

一般而言,本书的命令位于/bin、usr/bin、/sbin、/usr/sbin之中。若读者执行了命令却出现“command

not find”或是“命令不存在”的字样,就必须要确定该命令的位置是否在命令的路径中,或是系统上根本没有安装该套件。

二、命令顺序:

若在shell内置的命令/bin以及/usr/bin之下都出现了命令pwd,那当我们执行该命令时,会执行哪一个?答案是第一优先执行shell内置的命令,再执行路径中的设置;因此若有相同名称的命令时,必须要注意顺序设置,或是直接输入完整路径。

三、参数(或称选项)顺序:

一般除了特殊情况,参数是没有顺序的。举例而言,输入“–a –v”与输入“–v –a”以及“–av”的执行效果是相同的。但若该参数后指定了要接的文件或特殊对象,如“–a cmd1 –v cmd2”,则不能任意改变选项顺序。

四、常用参数:

下面所列的是常见的参数(选项)意义:

--help,-h 显示帮助信息

--version,-V 显示版本信息

-v 繁琐模式(显示命令完整的执行过程)

-i 交谈模式(指定界面)

-l 长列表输出格式

-q,-s 安静模式(不显示任何输出或错误信息)

-R 递归模式(连同目录下所有文件和子目录一起处理)

-z 压缩

五、命令的结合与定向:

命令中除了一般命令外,还有管道(或称途径)(|)与定向(>或>>)。

管道(途径)的用法:

“命令一 [选项]” | “命令二 [选项]”,也就是将“命令一 [选项]”的输出结果传到“命令二 [选项]”,通过命令二的处理之后才输出到标准输出(屏幕)上。比如“ls /etc”会列出etc下的所有文件,若加上“| less”,也就是“ls /etc | less”,则会将“ls /etc”的结果通过less分页输出。

定向的用法:

将结果定向到命令的输出设备,一般不加文件名意为将结果输出到屏幕,若是在定向后加上文件名,则会将命令的执行结果输出到定向的文件,例如“ls > ”,就会将ls 的结果输出到文件中。“>”与“>>”的差异在于前者是覆盖,而后者是附加。

六、命令中的命令:

许多命令在执行后,会进入该命令的操作模式,如fdisk、pine、top等,进入后我们必须要使用该命令中的命令,才能正确执行;而一般要退出该命令,可以输入exit、q、quit或是按【Ctrl+C】组合键。

- 2 -

1、adduser (字意:add user)增加一个系统用户。在RedHat中,adduser命令实际上是useradd命令的一个符号连接,指向/usr/sbin/useradd。

语法:adduser [选项] 用户名

选项:

-d<登陆目录> 指定新用户登陆的起始目录,默认为/home

-e<有效期限> 指定用户的有效期限,格式为YYYY-MM-DD

-g<用户组> 指定用户所属的组

-p<密码> 为新用户设置密码

-r 建立系统用户

示例:

One. 创建一个新用户frisen,设定登录起始目录为/home/guest,密码123456:

Two. 创建一个指定目录、有效期和归属组的账户frisen2:

Three. 创建一个系统账户frisen3,并指定登录起始目录,同时账户密码设为123456:

2、alias (字意:alias)为Linux系统中的命令定义别名,以简化操作。

语法:alias [别名=‘命令’]

选项:无

示例:

One. 列出目前所有的别名设置:

- 3 -

Two. 将ps -ef的别名设置为ps:

Three. 为一个复杂命令设置别名:

注意:alias的优先权高于PATH(系统查找的路径),因此若是我们设置了与系统命令相同的别名,会以我们设置的别名为准。

Shell环境中设置的别名仅在该次登陆过程中有效,若要所定义的命令别名每次登陆时都有效,需要将自定义的别名输入到文件.profile(bash)或.cshrc(tcsh)中,以保证每次启动时自动加载所定义的命令别名。

3、at (字意:at sometime)在指定的时间执行特定的命令。时间以24小时制指定,格式为HH:MM。默认情况下,任何用户都可以使用at服务,但这样是不安全的。如果系统中存在,则只有列在文件中的用户才可以使用at服务。如果系统中存在,则列在文件中的用户不可以使用at服务,其他用户则可以。

语法:at [选项] [时间]

选项:

-d<作业编号> 将待执行的作业删除

-f<文件> 从文件中读取要执行的命令

-m 将at执行的结果以E-mail的方式返回

示例:

One. 如果想在晚上21:00的时候让屏幕显示出“Hello,world”字样,可以现在Shell提示符下输入:

接着at命令显示一个“at>”的提示符,继续输入:

最后用组合键Ctrl+D结束输入。注意不要连续按Ctrl+D键两次,否则就自动退出系统了。

Two. 如果想在晚上22:00的时候播放CD—ROM里面的音乐,可以按照上面的步骤重新操作一遍,不同的是在第一次出现“at>”提示符后应该输入命令“cdplay”。

- 4 -

4、bzip2 (字意:Burrows—Wheeler zip file)对文件进行压缩或解压。压缩后和解压前的文件类型为“.bz2”类型,默认操作为压缩。bzip2是一个无损压缩软件,具有高质量的数据压缩能力。bzip2可对任何普通文件进行压缩,也可以对其他压缩工具产生的文件()进行二次压缩,但是不能对2的压缩文件进行二次压缩,也不能对目录文件进行压缩。bizp2对压缩较大的文件效果相当好,但若是将压缩文件再压缩,或是小的文本文件,则未必会有好的效果,甚至会出现比原来文件还有大的情况。

语法:bzip2 [选项] 文件名

选项:

-d 解压文件,需指定文件名

-k 压缩或解压缩时保留原文件,默认为删除

-f 强制覆盖。在压缩或解压过程中,如果产生的目标文件名在当前目录中已经存在则强制覆盖。默认不覆盖直接退出。

-<数字> 用指定的数字调整压缩的速度,-1或--fast表示最快压缩(低压缩比),-9或--best表示最慢压缩(高压缩比),系统默认值为6。

-v 显示命令执行的详细过程

示例:

One. 压缩时指定压缩速率并保留原文件:(压缩后文件名为2,.bz2为类型名)

Two. 将当前目录下所有以ge开头的文件进行压缩,并显示压缩比(也即显示命令执行过程):

(对比上例,压缩的源文件getarg.c、getarg.h已被删除)

Three. 以高压缩比压缩当前目录下的所有内容:

Four. 将压缩文件解压:

- 5 -

5、cal (字意:calendar)简单的显示月历。命令cal、cdp如同Windows下计算器、画图等实用性小程序。用一个单一的选项指定要显示的年份(1~9999)时,年份必须被完全指出,例如:“cal 10”不会显示2010年的年历。默认一年从1月1日开始。

语法:cal [选项]

cal [月份] [年份]

选项:

-3 显示本月与前后两个月的月历

-m 显示月历时把星期一作为一周的第一天,默认星期日

-y 显示本年度所有月份

示例:

One. 显示本月月历:

Two. 显示本月与前后两个月的月历,并把星期一作为一周的第一天(对比):

- 6 -

Three. 显示2008年8月份的月历:(查看过去或将来特定时间的月历)

6、cat (字意:concatenate)串接文件到指定文件或在标准输出上显示文件内容。

语法:cat [选项] [文件名]

选项:

-n 对输出的行数编号

-b 和-n类似,但对空白行不编号

-s 将连续两行以上的空白行替换成一行空白

-E 在每行的结尾显示“$”符号

-T 将文件中的Tab键显示为“^I”

-t 等同于“-vT”

-A 显示全部,等同于“-vET”

示例:

One. 从键盘接收数据并在屏幕上打印:

说明:cat命令不指明参数可以从标准输入接收数据,同时又没有指定重定向文件,所以从标准输入接收的数据又输出到标准输出上。

Two. 查看文件内容,并对输出的内容进行编号且在每行结尾显示“$”符号:

Three. 同时显示多个文件的内容,在每一行的末尾以“$”结束且将Tab键显示为“^I”:

- 7 -

Four. 把文件example1.c输入到文件example2.c,带行号,不显示空白行:

说明:如果重定向文件example2.c不存在,则创建之。

Five. 将hello.c的内容附加到hello2.c上:

注意:串接的文件必须存在,且不能对目录文件进行串接。

- 8 -

7、cd (字意:change directory)切换工作目录。在Linux中每个文件都被保存在一个目录中,目录中还可以包含子目录,这些子目录进一步可以包含文件和下一层子目录;文件系统呈树形结构,目录就是树的枝干,不论目录分支有多远都链接在根目录上,根目录是整个文件系统的起点,所有的目录和文件都连在根目录上。“~”表示当前用户的主目录(如/home/user1),“.”表示当前目录,“..”表示当前目录的上一层目录。

语法:cd [目的目录]

选项:无

示例:

One. 切换到指定目录/home/frisen:

Two. 切换到自己的主目录:

8、chmod (字意:change mode)更改文件或目录的访问权限。Linux系统提供了以字符和八进制两种方法,chmod命令仅限文件所有者和超级用户使用。

语法:chmod [选项] 文件名

选项:

-c 只有在文件或目录权限更改的前提下,才显示更改信息

-R 递归处理。若目标文件为目录文件,则以递归形式更改目录下所有文件的权限,并显示更改信息。

--reference=文件名或目录名 设置成与指定的文件或目录相同的权限

示例:

One. 将文件getarg.h的权限设置为所有用户(a = u + g + o)具有读、写、执行权限:<两种方法>

- 9 -

Two. 使目录/test下的所有文件具有可读可写可执行权限:

9、chown (字意:change owner)改变文件的所有者或用户组,或两者同时改变。文件的属性包括文件属主(所有者)和属组,文件创建者默认为文件的属主,文件属组默认为文件创建者所在的工作组,属主用户对自己创建的文件具有最大的权限,其操作权限可以和超级用户相媲美;一个用户可以位于多个组内,因此一个文件也可以位于多个组内,同一组内的用户对文件具有共享的权限。

文件与目录的用户与组,是Linux 系统中极其重要的权限控制。在部分Linux版本中,不支持使用“.”来作用户与组的分隔,而必须使用“:”来分隔。

语法:chown [选项] [用户]:[组] 文件名

选项:

-c 只显示更改部分的信息

-R 递归处理,将指定目录下的所有文件及子目录一并处理

--reference = 文件名或目录名 用指定文件或目录的组来改变目标文件或目录的组用户

示例:

One. 将文件getarg.h的属主改为frisen,属组改为group:<属主frisen和属组group必须存在>

Two. 将目录/test下所有以writeinfo.开头的文件属组改为group,不改变属主:<两种不同命令表示法>

- 10 -

Three. 只改变文件的所有者为frisen,属组不变:

10、clear (字意:clear)清屏

11、cp (字意:copy)

12、date (字意:date)显示或设置系统的时间、日期。

语法:date [选项] [日期或时间格式]

选项:

-d<字符串> 显示字符串所表示的时间。加ago表示之前的时间,不加表示之后的时间

-s<字符串> 设置字符串所代表的时间

-u 显示格林威治标准时间

格式:

%j 显示该年的第几天

%U 显示该年的第几周

%Z 显示时区

示例:

显示当前系统的日期时间:

将当前系统日期时间修改为2010年12月31日23点59分:

显示一年前与一年后今天的日期:

- 11 -

设置日期的现实格式:

显示格林威治标准时间:

13、df (字意:display file system)显示每个文件系统所使用的磁盘空间情况。

文件或磁盘设备:若为磁盘设备则指定/dev下的路径;若为文件则为该文件所在的设备。

语法:df [选项] [文件或磁盘设备]

选项:

-a 显示所有文件系统的情况

-h 以可读性较高的方式显示信息

-i 显示inode节点信息

-m 以1M为单位显示

-t<文件系统类型>(或“-t= 类型”) 只显示指定文件系统的磁盘信息

示例:

显示当前文件系统使用情况:

说明:第一列显示文件系统所在的设备名称和分区;

第二列显示各分区数据大小,以1024作为基本的数据块;

第三列显示已用数据块大小;

第四列显示可用数据块大小,但第三列与第四列数据块之和不一定等于第二列;

第五列显示使用的百分比;

最后一列给出了文件系统的挂载目录。

以较易读取的方式显示:

- 12 -

显示当前所有的文件系统信息:

显示所有文件系统的inode信息:

以MB为单位显示/home所在文件系统的使用情况:

14、diff (字意:difference)比较两个不同文件或不同目录下两个同名文件的功能,并生成补丁文件。

语法:diff [选项] [文件1] [文件2]

说明:若文件名是“-”或没有给出,则表示从标准输入读入内容。

选项:

-a 将比较文件都看做文本文件比较

-c 旧版上下文格式。显示全部内容,并列出不同之处

-u 新版上下文格式。仅列出不同之处

-q 只显示文件有无差异,不显示详细信息

-n 将比较结果以RCS的格式显示

-N 检查文件的不同,一般用于确保补丁文件正确的处理

-y 以并列的方式显示比较结果

示例:<先显示、的内容>

- 13 -

比较两文件的不同之处:

说明:‘!’为文件有差异的部分。

新版格式:

- 14 -

说明:补丁头:以----/++++的两行用来表示要打补丁的文件;----开头表示旧文件,++++开头表示新文件。一个补丁文件中可能包含多个----/++++开头的节,每一个用来打一个补丁。所以在一个补丁文件中可能包含好多个补丁。

块:补丁中要修改的地方。通常以@@开始,结束于另一个块的开始或一个新的补丁头。块的第一列+号表示这一行是要加上的,-号表示这一行是要删除的,否则表示该行只是引用的而不需要修改。

确认两文件是否有差异:

将比较结果以RCS格式显示:

检查文件的不同,一般用于确保补丁文件正确的处理:

说明:“<…”有但没有的部分,“>…”有但没有的部分

15、du (display units)显示文件或目录所占用的磁盘空间,可一次指定多个文件或目录。如果指令中未指定文件或目录,将显示当前目录的磁盘占用情况;使用du命令得到的结果是指一个文件或目录所占用磁盘空间的大小,与文件或目录得实际大小不一定相等。例如一文件的实际大小为10KB,却分配1024KB的磁盘空间,则du命令输出的结果是基于占用空间大小的,为1024KB。

- 15 -

语法:du [选项] [文件或目录]

说明:

选项:

-h 以K、M、G为单位,提高信息的可读性

-s 仅显示总计大小

-S 显示目录时,不含其子目录大小;即只显示当前目录大小

-L<符号链接> 显示指定符号链接的源文件大小

--max-depth=N 仅搜索指定的目录层数N

示例:

显示当前目录所占用的磁盘空间:

说明:上图只截取了部分信息。

显示/home目录:

同时显示多个文件的磁盘占用情况:

- 16 -

16、echo (字意:echo)显示文字。echo是字符串输出常用命令,可将字符串输出至屏幕、文件或是其他终端机。

语法:echo [选项] 字符串

选项:

-e 若字符串中出现以下字符则以特殊方式处理:

a 发出beep声(警告声)

f 换行且光标移动到上一行的相同位置

n 换行(此时光标移至行首)

t 插入Tab制表符

显示‘’字符

-n 不在一行最后自动换行

示例:

将字符串在在文件/test/file1中显示:

输出一般字符串:

- 17 -

17、eject (字意:eject)弹出设备,如光驱

语法:eject [选项] [设备]

说明:eject还可应用于其他抽取式设备;若设备已加载,则eject命令首先会卸载该

设备,然后再弹出。设备可以是驱动程序名称,也可是挂载点。另外有的设备

可能不支持这个命令。

选项:

-c<光驱编号> 选择光驱,编号依次为0、1、2……

-d 仅显示预设的设备,不实际执行动作

-r 退出光盘

-t 关闭光盘托盘,即收回光盘

-v 显示详细信息

示例:

显示默认的设备:

弹出光盘:

- 18 -

18、exit (字意:exit)退出当前的Shell环境

语法:exit

说明:若我们在终端机运行exit,则会注销系统。

选项:无

示例:

若我们执行/bin/bath进入另一个Shell,输入exit则会返回原来的Shell:

19、export (字意:export)设置或显示环境变量。在Shell中执行程序时,Shell会提供一组环境变量。export可新增、修改、删除或输出这些环境变量,供其他程序使用。export命令的作用仅限于该次登陆操作。export可声明变量,特别在Shell程序编写时需要经常使用。

语法:export [选项] [环境变量= [变量值] ]

选项:

-f 设置变量名称为某一函数的名称

-n 删除指定的环境变量

示例:

One. 输出当前的环境变量:

Two. 声明Fault变量的内容为abc:

20、fdisk (字意:formatted disk)修改磁盘分区

说明:fdisk是用来为磁盘分区的工具。磁盘需要被分区、格式化、挂接后方可使用,因此,fdisk是使用磁盘的第一步。

一个硬盘可以分成几个区,每个分区如同一个独立的硬盘。一个磁盘可以划分为一个或多个逻辑磁盘,每个逻辑磁盘成为一个分区;分区的划分信息用分区表记录,而分区表存放在磁盘编号为0的扇区内。fdisk命令就是用来操作磁盘分区表的。

fdisk命令处理的设备通常是如下形式的:/dev/hda、/dev/hdb、/dev/sda、/dev/sdb等。其中,/dev/hd[a-h]表示IDE硬盘,/dev/sd[a-h]表示SCSI硬盘,/dev/ed[a-h]表示ESDI硬盘,/dev/xd[a-h]表示XT硬盘。

一个设备的名称(或称作代号)表示整个硬盘,而分区则用设备名加一个分区号表示,如/dev/sda1表示系统中第一代SCSI硬盘的第一个分区。

- 19 -

语法:fdisk [选项] [设备名称]

选项:

-b<扇区大小> 以指定扇区大小显示分区情况

-l 列出分区表情况

-u 搭配“-l”选项,则用扇区数目取代柱面数目来表示每个分区的起始地址

进入fdisk的操作:

输入‘m’可查看各个命令选项的说明(详情略)

示例:

查看系统中所有磁盘及分区情况:

说明:heads磁头;sectors/track扇区;cylinders柱面。这里以柱面为单位显示,每个柱面大小为8 225 280字节。

硬盘包括两个分区/dev/sda1,/dev/sda2;“*”表示可启动分区,分区的起始柱面为1,结束柱面为1305,共有10 482 381个区块(一种分区大小单位),分区的文件系统编号为83(表示ext2/ext3文件系统),文件系统类型为Linux。最后一行为分区/dev/sda2的相关信息。

查看系统中的所有分区情况,以扇区为单位:

带有“-u”选项的fdisk命令,会以扇区为单位,每个扇区大小为512字节。

查看硬盘/dev/sda的分区情况,指定扇区大小为1024KB:

- 20 -

对系统中第二块SCSI硬盘进行分区:

示例略(危险指令,慎重操作)

(字意:find)查找文件或目录

语法:find [路径] [选项]

说明:必须以绝对路径或相对路径指定查找位置,若在当前目录查询,应用“./”表示,否则会出错。

在利用通配符查找文件时,例如,查找日志文件(*.log)时,在有些系统上需要加上引号,否则会提示错误。

选项:

-empty 查找空文件或空目录

-name<字符串或模式> 查找指定名称的文件或目录

-mtime<小时> 查找在指定时间内更改过的文件或目录,单位小时

-mmin<分钟> 查找在指定时间内更改过的文件或目录,单位分钟

-ls 将查找到的文件或目录以ls的输出格式显示

-perm<权限数值> 查找指定权限数值的文件或目录

-size 查找指定大小的文件或目录;系统支持的单位有b、

c、w、k、M、G;其中b代表文件块,默认一块

大小512字节;c代表字节;w代表双字节;k代

表1024KB。若不指定单位则表示以字节为单位。

-type<文件类型> 查找指定文件类型的文件。文件类型的值可为b

(块文件)、c(字符文件)、d(目录)、l(符号链接)、

p(命名管道)、f(普通文件)。

示例:

我们知道Linux中关于服务器的配置文件都在/etc目录下,因此可借助find命令查看ftp服务器配置信息的具体位置:

- 21 -

根据文件大小查找文件,若用户不清楚文件名,可利用-size指定文件大小查找:

find ./ -size 1000c (c表示要查找的文件的大小以字节为单位)

find ./ -size +1000c (查找大于1000字节的文件)

find ./ -size -1000c (查询小于1000字节的文件)

find ./ -size +1000c -and -2000c (查找介于1000到2000字节间的文件)

利用综合属性查找文件:

说明:逻辑与(-a或-and)查找同时符合多个条件的文件;逻辑或(-o或-or)查找符合任一条件的文件;逻辑非(-!)表示不符合条件的文件。当使用多个逻辑选项时,可使用括号括起。为避免Shell本身对括号引起误解,在括号前需加转义字符‘’去除括号的意义。

查找同时符合3个条件的文件:

查找符合任一条件的文件:

查找非 大于1000字节和最近48小时修改的文件:

查找/usr下权限为rwsr-xr-x的文件,由于rwsr-xr-x的权限用数字表示即为4755,

因此:

- 22 -

22、free (字意:free)显示内存使用情况。显示内容包括

物理内存(插在主板上的内存)、虚拟内存(SWAP,硬盘上的一块区域)、共享内存区,以

及系统核心使用的缓冲区等.

语法:free [] []

选项:

-t 显示内存总和(物理内存和虚拟内存)

-s<时间> 以指定时间(单位秒)为周期持续观察内存使用情况

示例:

显示当前内存的使用情况:

说明:第一行:Mem物理内存;shared表示废弃的内存数;buffers内存数为52852;cached

内存数为84092。其中total=used+free。

buffers Buffer Cache内存数。

cached Page Cache内存数。

第二行:-buffers/cache的内存数:133480,其值=used-buffers-cached,反映被程序

占用的内存数。

+buffers/cache的内存数:380368=free+butters+cached,反映空闲的可用内存数。

第三行:Swap系统交换分区。

实时监控内存的使用情况:

- 23 -

显示内存总和:

23、ftp (字意:file transferring protocol)文件传输

说明:FTP文件传输协议(简称FTP ),是一个用于从一台主机到另一台主机传送文件的

协议。在Linux系统下,ftp命令就是FTP协议在客户端的实现,用户通过ftp命令就可以和远程ftp服务器交互,实现文件的查看、上传和下载功能。

语法:ftp [选项] [主机名或IP地址]

选项:

-d 使用调试方式

-i 关闭交谈选项

-n 限制FTP的自动登录功能,既不使用.netrc文件

-g 取消全局文件名

进入ftp后的命令:

! 执行本地命令,如ls是显示远程服务器上目录的内容,而! ls显示客户端当前目录(即本地工作目录)的内容。

bye 退出FTP

cd<目录名> 切换目录

put<文件名> 上传文件

pwd 显示当前目录名称

- 24 -

mput<文件名> 上传多个文件

mkdir<目录名> 在当前目录下新建目录

rmdir<目录名> 删除目录

ls 列出当前目录所有内容

get<文件名> 下载文件

mget<文件1、文件2…> 下载多个文件

delete<文件1、文件2…> 删除一个或多个文件

示例:

24、gcc (字意:GNU cc complier)C和C++编译器

说明:gcc通过4个阶段来实现程序编译的过程,预处理、编译、汇编以及链接。

【gcc支持的语言举例】

.c :C源程序

.C或.cc :C++源程序

.m :Objective-C源程序

.i :预处理后的C程序

.ii :预处理后的C++程序

.s或.S :汇编语言程序

.h :头文件

.o :目标文件

.a :静态链接库

.so :动态链接库

语法:gcc [选项] [文件]

选项:

-c 只进行预处理、编译、汇编而不链接

-S 编译后停止,即把文件编译成汇编代码

-E 只进行预处理

-o<文件名> 指定输出的文件名,默认为

示例:

- 25 -

25、gpasswd (字意:group password)管理系统中用户组的信息,即

对/etc/group文件进行管理。

语法:gpssswd [选项] [用户] [组]

选项:

-a user group 将用户user添加到组group中

-A user group 指定组group的管理者为user

-d user group 将用户user从组group中删除

-M user group 指定组group的成员user

-r group 解除组group的秘密

-R group 禁止使用newgrp命令访问组group文件

- 26 -

示例:

26、grep (字意:Global search Regular Expression)查找文件

中特定字符串并显示。还可以利用管道将命令的输

出结果过滤,只显示对用户有意义的行,可以多次过滤结果。grep是一种强大的文本搜索工具。

语法:grep [选项] [字符串或正则表达式] [文件名……]

说明:正则表达式实际上就是使用特殊语法进行字符串匹配的字符串格式;也就是使用几个已经规定的通配符来进行字符串格式匹配。

查找的文件必须存在且是文本类型,若指定的文件为目录,则不现实任何结果。

【正则表达式常用符合】

<略>

选项:

-c 只显示符合查找模式的总行数

-f<文件> 指定范本文件,文件中每一行是一个查找模式

-l 不显示具体的符合条件的行,只列出文件名称

-v 反转显示所有不满足查找模式的行

-V 显示版本信息

【示例】

只显示当前目录下的目录文件:

显示当前目录下除目录文件以外的文件:

只显示当前目录下六月份创建的文件:

- 27 -

只显示sshd进程的情况:

对ps的结果进行二次过滤,显示不包括grep的行:

查询文件中特定的字符串“Hello world”:

grep最常用的例子就是查询结构化的文件,比如一个通信录(address),假设存在于当前目录,包含名称字段、联系方式、地址。搜索联通用户的详细信息:

查询address文件中以s开头的行:

【Shell的特殊字符】

通配符:

* 代表任意字符串

? 代表单个字符

[] 代表指定的字符范围,连续字符用连字符‘-’:如[ac-gk]表示acdefgk

输入/输出重定向:

>

>>

< 将指定文件的内容作为输入

其他:

单引号 不处理任何变量和命令

- 28 -

双引号 之处理变量,不处理命令

反引号 命令处理

26、groupadd (字意:group add)创建一个新的用户组

语法:groupadd [选项] 用户组名

选项:

-f 强制创建已存在的组

-g<用户组ID号> 指定新的用户组的ID号(或称识别码);数值不可为负,如果不指定系统自动从编号500开始,依次分配新建组号,0~499传统上保留给系统服务

-o 重复使用组ID

-r 新建ID号小于1000的系统用户组

示例:

新建一个名为test的用户组:

将用户jalsen加入改组,通过查看/etc/group中的信息验证改组已经成功创建:

新建一个组ID为666的用户组test666:

创建一个名为bmw的系统组:

27、groupdel (字意:group del)删除组;如果指定的组中包含用户,则必

需先删除用户后才能删除组

语法:groupdel 组名

选项:无

示例:

- 29 -

删除组名为test666的组:

28、gzip (字意:GUN zip)压缩指定文件或目录;Linux上常用的压缩命

令,也可对文件进行解压缩

语法:gzip [选项] [文件或目录……]

选项:

-c 将压缩(或解压)的内容输出到标准输出,并保留源文件

-d 将压缩文件解压

-l 显示压缩文件的相关信息

-r 若指定文件为目录,则递归处理,压缩目录下的所有文件和子目录

-v 显示详细的处理信息,如文件名和压缩比等

示例:

将当前目录下的每个文件压缩成“.gz”文件:(压缩后源文件被删除)

将上例中的每个压缩文件解压,并显示压缩比:

对压缩文件进行解压“gunzip”工具和“gzip –d”两者在功能上相同:

- 30 -

详细显示第一例中每个压缩文件的信息,但并不解压:

29、halt (字意:halt)关闭系统;默认功能是关闭系统而不关闭电源,等同于指令

“shutdown -h”或“init 0”将系统挂起。执行halt指令后系统被挂

起,如果用户想重启系统,可按reset键重启。

语法:halt [选项]

选项:

-i 关闭系统前先关闭所有的网络界面

-n 关闭系统前不执行sync指令,即不将缓冲区的数据写回磁盘

-p 执行halt之后执行poweroff,即关闭系统后关闭电源

示例:

<略>

30、head (字意:head of file)查看文件头部的内容;显示指定文件的前若干行。

语法:head [选项] 文件名

选项:

-<行数N> 指定要显示的行数

-n<行数N> 显示目标文件的前N行,若N前加‘-’,则表示显示除文件最后

N行的其他所有行

-c<行数N> 显示目标文件的前N个字节,若N前加‘-’,则表示显示除文件

最后N个字节的其他所有字节

注意:选项-n和-c不能同时使用,两者是互斥的。

示例:

默认显示文件内容的前十行:主机配置文件(/etc/hosts)、网络服务文件(/etc/services)

- 31 -

显示文件的前5行的内容:

显示文件前50个字节:

31、help (字意:help)显示Shell内部指令的帮助信息(或称命令说明)

语法:help [选项] [指令]

说明:若未指定具体命令,将列出所有Shell命令。

选项:

-s 仅显示指定命令的语法

示例:

显示cd命令的帮助信息:

- 32 -

仅显示cd命令的语法:

32、history (字意:history)输出使用过的命令,按时间顺序排列;历史目录信息

默认存放在用户主目录的bash_history文件中,最多可保存1000条。

语法:history [选项]

选项:

数字N 显示最近N次使用的命令

-a 将当前目录添加到历史记录中

-c 清除所有的历史记录

-d<编号> 删除history记录中指定编号的项

-r 仅读取历史记录,不追加记录

-w 覆盖原有的history文件

说明:在命令行输入“!指令的顺序编号”即可执行该指令。

示例:

显示最近6次使用过的命令:

重新执行某条命令:

- 33 -

33、host (字意:host)查询主机使用的域名;DNS查询常用的三大工具(nslookup、

dig、host)。

语法:host [选项] 网址名称 [服务器]

选项:

-a 显示该host的DNS信息

-C 对指定的host查询完整的SOA记录

-T 打开TCP/IP模式

-W 时间 指定最长等待时间

示例:

在指定IP的机器上查询的地址:

34、hostname (字意:host name)查看或设置主机名;该命令不会使主机名发生永

久的变化,重启系统后任然使用/etc/host文件中记录的主机名。

语法:hostname [选项]

选项:

-a 显示主机的别名

-d 显示DNS域名

-i 显示主机的IP地址

-v 显示命令执行过程

-y 显示NIS域名

示例:

显示主机名:

- 34 -

35、id (字意:identity)显示用户ID和所属组ID

语法:if [选项] [用户名]

说明:通常Linux对用户ID有如下限制:

0为系统管理员;

1~499为保留给系统使用的ID,其实除了0之外,1~65534之间的账号并没有不同,预设500

以下给系统作为保留账号只是一个习惯。这样做的好处是,以named为例,这个程序预设所有

人named的账号UID是25,当有其他的账号也是25时,很可能会造成系统的一些小问题。为

杜绝这样的问题,建议保留500以前的UID给系统;

500~65534给一般用户使用。

选项:

-g 显示用户所属组的ID

-G 显示用户所属附加组的ID

-n 显示用户、所属组或附加组的名称,需与-u、-g或-G同时使用

-r 显示实际ID;即显示实际用户名称,需与-g、-G或-u同时使用

-u 显示用户ID,即有效ID

示例:

显示当前用户的ID:

显示指定用户的ID:

- 35 -

只显示指定用户ID值:

显示指定用户所属附加组名称:

- 36 -

36、ifconfig (字意:interface configuration)查看或配置网络接口的地址和参数

语法:ifconfig [接口名称]

ifconfig [接口名称] [选项] 地址信息

说明:接口名称为网络接口的名称,通常第一张网卡为eth0,第二张为eth1……以此类推。

选项:

down 关闭指定网卡

up 激活指定网卡

mtu<字节> 设置网络接口的MTU<最大传输单元>,以字节为单位

netmask<子网掩码> 设置网络接口的子网掩码

[-]arp 关闭/激活指定设备中的ARP协议

[-]pointopoint<地址> 与指定地址的网络接口建立直接连接,此模式具有保密功能

[-]promisc 关闭/激活指定网络接口的promiscuous模式(不管数据包的目的地址为何,接收所有的包,通常用于网络监控的程序)

[IP地址] 指定网络接口的IP地址

[网络接口] 指定网络接口的名称,如eth0表示第一块以太网网卡

示例:

查看当前所有网络接口的设置:

说明:

eth0:硬件地址(HWaddr)为网卡的MAC地址,由生产厂家设定,每个网卡拥有一个独一无二的MAC地址。

第二行显示IP地址相关信息,分别是IP地址(inet addr)、广播地址(Bcast)、子网掩码(Mask);必须确认这些信息都是正确无误的,否则Linux主机无法与其他网络设备建立连接。

第三行是eth0的IPv6地址(inet6 addr)<可能没有这一行>。

接下来显示的是设备的网络状态,MTU(最大传输单元)、Metric(度量值),按照惯例度量值供某些操作系统使用,用于计算一条路由的成本。

再下来显示接口通信的网络统计值。RX和TX分别表示接收和传送的数据包。若网卡已完成配置但仍无法与其他设备通信,此时如果接收和传送的包的计数(packets)增加,可能是系统的IP地址出现混乱;如果出现大量的错误(errors)和冲突(collisions),则很可能是网络的传输介质出现问题,如网线

- 37 -

不通或hub损坏。

最后一行显示的是网卡的中断调用号和端口号,这是两个非常重要的硬件配置信息。

lo:表示loopback,即没有连接真实网络时的网络接口,可用来测试网络的应用软件配置是否正确,并提供区域性TCP/IP服务。lo的IP地址固定是127.0.0.1。

设置第一块以太网卡的IP地址为192.168.1.1,子网掩码为255.255.255.0:

注意:由于子网掩码发生了变化,广播地址(Bcase)也改变了。

禁用第一块以太网卡:

启用第一块以太网卡:

- 38 -

37、init (字意:initial)改变系统的运行等级

语法:init [选项] 运行等级

说明:init进程是Linux系统中所有进程的父进程,启动系统时init将是系统第一个运行的进程,它将根据文件/etc/inittab中的信息来创建进程。如果用户在进入系统后,想要进行系统的运行模式切换,运行init指令加上指定的运行等级,就能执行相应的功能。Linux系统共有0~6、S(或s)8个运行等级。

选项:

0 安全关机

1~4因不同版本而异

5 就是X11,进入X-Windous系统

6 重启计算机

-b 直接进入单用户模式而不执行任何script(启动脚本)

-S<或-s> 进入单用户模式,执行此命令的终端变成系统控制台

示例:

略<危险指令>

38、insmode (字意:insert module)加载模块;检查系统内部的外部符号表,

将模块加载到正在运行的系统内核中。

语法:insmode [选项] [模块文件]

说明:模块文件为模块所在的完整路径与文件名,模块通常被编译为“.o”文件。

在实际应用中,insmod比较重要的用途是用来测试模块的正确性,加载一般都依靠指令modprobe

Linux/Unix系统的许多功能可以在需要时才加载到系统内核。可加载的模块通常指设备驱动程序,如光驱、声卡、网卡或文件系统等。insmod指令不能处理模块之间的依赖关系,而modprobe指令将模块载入系统内核时,可自动处理模块之间的依赖关系,并进行加载。对于这个命令,这里只是介绍一下,并不推荐使用,因为模块之间有依赖关系,对于新手来说,可能不知道这个模块对哪个模块依赖。

选项:

-k 将模拟设置为自动卸载

-m 输出模块的加载信息

-o<模块名称> 指定加载的模块名称

-p 测试模式,测试模块能否正确的载入kernel

示例:

略<危险指令>

- 39 -

39、kill (字意:kill)中止正在执行的程序或作业;

说明:我们通常用kill来终止特定的程序,使用-9可以强迫终止改程序。事实上,kill本身只是对程序下达信号,不同的程序对相同的信号会有不同的反应,这取决于该应用程序的设计。在Red Hat Linux中不存在stop命令,可通过执行命令“kill –stop pid”将进程挂起。SIGTERM是不带参数是kill发送的信号,意思是要进程终止执行,但执行与否还得看进程是否支持。如果进程未终止,可用命令“kill

–SIGKILL pid”,这是由内核来终止进程,进程不能监听这个信号。

信号在Linux系统中是一个极其重要的概念,因为信号提供了一种通知进程 系统事件发送的机制,在用户进程之间通信和同步中发挥着不可替代的作用。

【常用信号简介】

<略>

语法:kill [选项] [pid]

选项:

-l 输出所有信号的名称

-V 显示版本信息

示例:

查看所有信号名与代码:

终止指定进程:<首先使用ps命令列出当前系统中正在运行的程序>

- 40 -

40、last (字意:last login)显示当前和过去登陆用户的相关信息;不带参数

的last命令显示/var/log/wtmp文件中记录的登录用户清单

语法:last [选项] [用户或终端]

说明:在指定了用户名和终端名的情况下,last只显示符合这些参数的记录。终端的名称可以简写,如last 0等同于last tty0。

选项:

-a 在最后一行显示登录的主机名或IP

-d 将IP转换为主机名,last默认会用IP地址来显示远端的主机

-n<显示行数> 设置显示信息的行数

-R 不显示登录系统的主机名或IP

-t<年月日时分秒> 显示到指定日期和时间为止的所有登陆信息,日期格式为YYYYMMDDHHMMSS

示例:

显示所有登录系统的用户相关信息:<包含用户名、登录终端名、登录主机的位置和时间等信息>

查询最近登录系统的5名用户:

- 41 -

查询最近登录系统的2名用户,并显示用户的IP地址:

显示最近5条用户登录、系统开机、重启和运行等级改变等信息:

41、lastb (字意:last bad login)显示所有失败的登录信息

语法:lastb [选项] [用户/终端]

选项:

<与last的选项完全相同>

-a

-d

-n<行数>

-R

-t<年月日时分秒>

- 42 -

示例:

执行指令lastb后终端提示“No such file or directory”,表明在系统中不存在文件/var/log/btmp,此时用户可手动创建日志文件。

42、less (字意:less)一次显示一页文本;与more相似都是按页显示文件

不同之处在于less可以按键实现文件的翻页,即允许用户对文

件进行前后翻阅。

语法:less [选项] 文件名

选项:

-M 显示读取文件的百分比、行号即总行数

-N 在每行前输出行数

-p 搜索pattern,并以反底色表示

进入less后参数功能:

h或H 显示命令帮助信息

回车键 向下移动一行

空格键 向下移动一屏

d 向下滚动半屏

b 向上滚动一屏

u 向上滚动半屏

g 跳到第一行

G 跳到最后一行

v 调用vi编辑器

q 退出less

!command 调用Shell,即可以允许命令,按任意键返回显示屏;

如!ls显示当前目录下的所有文件。

示例:

查看账户文件的内容,并显示读取文件的行号、百分比以及总行号:

- 43 -

一般我们常使用空格键和上下键翻阅,并可随时按【Q】键退出。

在/etc/passwd文件中搜索字符串sbin:

43、ln (字意:link)建立链接文件

语法:ln [选项] [源文件/目录] 目标文件/目录

说明:符号链接文件包括硬链接和软连接。硬链接就是建立一个inode,该节点指向该文件放置内容的block块,新建的i节点或文件原来的i节点志向相同的内容;而软链接则是新建立一个独立的文件,该文件指向链接的文件,类似于MS-WINDOWS下的快捷方式。不管哪种链接,ln命令都会保持每一处链接文件的同步性,即无论改动了哪一处,其他的文件都会发生相同的变化。另外,硬链接不能建立到目录,也不允许跨越文件系统。ln指令默认为创建硬链接。硬链接的文件和源文件的大小一样,而软链接非常小。

选项:

-d 试图允许超级用户建立到目录的硬链接,可能有不同系统的限制导致操作

失败

-s 建立软链接

-t 指定链接文件创建的目录,默认链接文件将创建到用户所在目录

示例:

在当前目录下分别创建到/bin/ls的软链接(slnls)和硬链接(hlnls),并查看其大小:

ln –s /bin/ls slnls

ln /bin/ls hlnls

ll /bin/ls slnls hlnls

创建到目录/bin的硬链接和软链接:

- 44 -

创建多个链接文件到指定目录:

44、ls (字意:list)列出目录内容,包括文件或子目录

语法:ls [选项] [文件/目录]

选项:

-a 显示所有

-l 使用详细格式列出

-t 以文件和目录的更改时间排序

-i 显示文件或目录的inode编号

-L 列出符号链接所指向的原始文件或目录,常配合选项-l使用

-r 反向排序<基于字母>

-R 递归处理

示例:

列出当前目录下的文件和目录:<结果以字母顺序排列>

列出当前目录下所有文件和目录的详细资料:<包括以‘.’开头的隐藏文件和目录、当前目录‘.’和上层目录‘..’>

横排依次为文件或目录的权限设置、硬链接的数目、拥有者与组名称、占用磁盘空间大小、更改时间以及名称,按行依次显示。

- 45 -

将根目录下新的文件和目录排在后排显示:

列出/etc目录下名称中以host开头的文件和目录:

- 46 -

45、lsattr (字意:list attribute)查看由chattr设置的文件属性;当文件有

异常的行为且权限设置无误时,就该检查文件的属性了。一

般应用程序并不会设置文件属性,因此若是文件属性遭到更

改,就应该注意系统安全。

语法:lasttr [选项] [文件/目录……]

选项:

-a 显示所有文件和目录,包括以‘.’为名称开头的隐藏文件

-d 显示目录的属性信息,非其内容的属性信息

-R 递归处理

示例:

显示当前目录的文件属性:

显示所有:

46、lsmod (字意:list module)显示Linux内核已载入的系统模块;Linux中所有的

功能都是以模块的形式就行加载的,相关的加载模块的信息都存放在文

件/proc/modules中。执行lsmod指令就是通过读取该文件来获取当前内

核装载模块的信息。

语法:lsmod

选项:无

示例:

- 47 -

显示当前系统的模块信息:

47、make (字意:make gcc program)维护或编译内核或模块;make可根据程

序中各模块的更新情况以及相互间的依赖关系自动维护目标代码

而文件或模块间的依赖关系实在makefile文件中定义的。

语法:make [选项] [makefile文件]

选项::

-C<目录> 执行命令前,先切换到指定的目录

-d 显示调试信息

-f<文件> 指定makefile文件

示例:

- 48 -

48、man (字意:manual)显示命令说明、帮助信息;man指令查找帮助信息的路径

是由配置文件/etc/指定的

语法:man [选项] 指令名

选项:

-a 显示所有符合条件的帮助文件

-h 显示man的帮助信息

-W 显示命令的帮助文档路径

示例:

49、more (字意:more)查看文件内容;与cat指令类似但功能更强,可以按页显

示,适合查看大文件;键入空格显示下一屏、Enter键显示下一行、输

入Q退出

语法:more [选项] [文件名]

选项:

+ 从num指定行开始显示

- 设置每一屏显示的行数

+/<关键字> 定位要查找的关键字,且从该关键字第一次出现的前两行显示文件内

容,若该关键字位于前两行,则从第一行显示

示例:

- 49 -


本文标签: 文件 显示 命令 目录 指定