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
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
语法: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
进入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 [选项] [文件名]
选项:
+
-
+/<关键字> 定位要查找的关键字,且从该关键字第一次出现的前两行显示文件内
容,若该关键字位于前两行,则从第一行显示
示例:
- 49 -
版权声明:本文标题:Linux常用命令详解(配合示例说明,清晰易懂) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1705934501h494515.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论