本文重点讲述Linux命令的使用,命令是学习Linux必须熟练掌握的一个部分。Linux下的命令大概有600个,而常用的命令其实只有80个左右,这些常用的命令是需要灵活掌握的。虽然Linux的各个发行版大同小异,但是常用命令基本相同,因此只要掌握了常用的Linux命令,就能融会贯通、触类旁通各个Linux版本了。本章通过分类的方式详细介绍常用命令的使用语法与技巧。
Linux下的各种shell的主要区别在于命令行的语法。对于一些普通的命令,各个shell版本的语法基本相同,只有在编写一个shell脚本或者使用一些shell高级特性的时候,各个版本shell的差异才会显示出来。
shell语法分析是指shell对命令的扫描处理过程,也就是,把命令或者用户输入的内容分解成要处理的各个部分的操作。在Linux系统下,shell语法分析包含很多内容,如重定向、文件名扩展和管道等。
本节以bash为例,介绍shell命令的语法分析。
用户登录系统后,shell命令行启动。shell遵循一定的语法格式将用户输入的命令进行分析解释并传递给系统内核。shell命令的一般格式为:
command [options] [arguments]
其中,
根据习惯,我们一般把具有以上格式的字符串称为命令行。命令行是用户与shell之间对话的基本单位。
在命令行中,选项是包含一个或多个字母的代码,主要用于改变命令的执行方式。一般在选项前面有一个“-”符号,用于区别参数。例如:
[root@WEBServer ~]#ls -a
ls命令加上-a选项后,列出当前目录下的所有文件(包含隐藏文件)。如果ls不加“-a”选项,则仅仅显示当前目录下的文件名和目录(不显示隐藏文件)。
一般命令都有很多选项,可以单独列出它们,也可以在“-”后面把需要的选项都列出来,例如:
ls–a –l
也可以写成:
ls–al
很多命令都可以接受参数。参数就是在选项后面紧跟的一个或多个字符串,这些字符串指定命令的操作对象,如文件或者目录。例如,要显示/etc目录下的所有文件及信息,可用以下命令。
[root@WEBServer ~]#ls –al /etc
特殊情况下,有些命令可以不带参数,例如ls命令,而有些必须带参数。当参数不够时,shell就会给出错误提示。例如,mv命令至少需要两个参数。
[root@WEBServer ~]#mv mylinux1.txt mylinux.txt
在shell的一个命令行中,还可以输入多个命令,用分号将各个命令分开,例如:
[root@WEBServer ~]#ls –al;cp mylinux1.txt mylinux2.txt
相反,也可以在多行中输入一个命令,用“/”将一个命令持续到下一行。
[root@WEBServer ~]#cp –i / >mylinux1.txt / >mylinux2.txt
通配符主要是为了方便用户对文件或者目录的描述,例如,当用户仅仅需要以“.sh”结尾的文件时,使用通配符就能很方便地实现。各个版本的shell都有通配符,这些通配符是一些特殊字符,用户可以在命令行的参数中使用这些字符,进行文件名或者路径名的匹配。shell将把与命令行中指定的匹配规则符合的所有文件名或者路径名作为命令的参数,然后执行这个命令。
bash中常用的通配符有“*”、“?”、“[]”。
(1)“*”——匹配任意一个或多个字符
例如:
[root@WEBServer ~]#ls *.txt
这条命令列出当前目录中所有以“.txt”结尾的文件(除去以“.”开头的文件)。
[root@WEBServer ~]#cp doc/* /opt
这条命令表示将doc目录下的所有文件(除去以“.”开头的文件)复制到/opt目录下。
[root@WEBServer ~]#ls –al /etc/*/*.conf
这条命令列出/etc目录的子目录下所有以“.conf”结尾的文件。在/etc目录下以“.conf”结尾的文件将不会列出。
(2)“?”——匹配任意单一字符
例如:
[root@WEBServer ~]#ls ab?.txt
这条命令列出当前目录下以ab开头,随后一个字母是任意字符,接着以“.txt”结尾的文件。
[root@WEBServer ~]#ls ab??.txt
这条命令列出当前目录下以ab开头,随后的两个字母是任意字符,接着以“.txt”结尾的文件。
(3)“[]”——匹配任何包含在方括号内的单字符
例如:
[root@WEBServer ~]#ls /dev/sda[12345] /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5
上面的命令列出了在/dev目录下以sda开头,第4个字符是1、2、3、4或5的所有文件。
[root@WEBServer ~]#ls /dev/sda[1-5]
在方括号中“1-5”给出了匹配的范围,与上面一条命令完全等效。
(4)通配符的组合使用
在Linux下,通配符也可以组合使用,例如:
[root@WEBServer ~]#ls [0-9]?.conf
这条命令列出当前目录下以数字开头,随后一个是任意字符,接着以“.conf”结尾的所有文件。
[root@WEBServer ~]#ls [xyz]*.txt
这条命令列出当前目录下以x、y或z开头,最后以“.txt”结尾的文件。
Linux下系统打开3个文件,即标准输入、标准输出和标准错误输出。用户的shell将键盘设为默认的标准输入,默认的标准输出和标准错误输出为屏幕。也就是,用户从键盘输入命令,然后将结果和错误消息输出到屏幕。
所谓的重定向,就是不使用系统默认的标准输入/输出,而是重新指定,因此重定向分为输入重定向、输出重定向和错误输出重定向。要实现重定向就需要了解重定向操作符,shell就是根据重定向操作符来决定重定向操作的。
(1)输入重定向
输入重定向用于改变命令的输入源,利用输入重定向,就可以将一个文件的内容作为命令的输入,而不从键盘输入。
用于输入重定向的操作符有“<”和“<<”。例如:
[root@WEBServer ~]#wc</etc/shadow 40 40 1169
这里用wc命令统计输入给它的文件/etc/inittab的行数、单词数和字符数。
还有一种输入重定向操作符“<<”。这种重定向告诉shell,当前命令的标准输入为来自命令行中一对分隔号之间的内容。例如:
[root@WEBServer ~]#wc<< aa > # Default runlevel. The runlevels used by RHS are: > # 0 - halt (Do NOT set initdefault to this) > # 1 - Single user mode > # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) > # 3 - Full multiuser mode > # 4 - unused > # 5 - X11 > # 6 - reboot (Do NOT set initdefault to this) >aa 8 65 303
上面的命令将一对分隔号aa之间的内容作为wc命令的输入。分隔号可以是任意字符。shell将在第一个分隔号后开始读取内容,直到出现另一个分隔号读取结束,然后将内容送给wc命令处理。
(2)输出重定向
输出重定向不是将命令的输出结果在屏幕输出,而是输出到一个指定文件中。
在Linux下输出重定向用得很多。例如,某个命令的输出很长,一个屏幕无法显示完毕,这时可以将命令的输出指定到一个文件,然后用more命令查看这个文件,从而得到命令输出的完整信息。
用于输出重定向的操作符有“>”和“>>”。例如:
[root@WEBServer ~]#ps –ef >ps.txt
这条命令将ps –ef输出的系统运行进程信息全部输入到了ps.txt文件,而不输出到屏幕,可以用more命令查看ps.txt文件中系统运行的进程信息。
[root@WEBServer ~]#more file1 file2 file3 >file
其中,more命令用于查看文件的内容,上面的命令是将file1、file2和file3的内容全部输出到file文件中,类似于文件内容的合并。
如果在“>”后面指定的文件不存在,shell就会自动重建一个;如果文件存在,那么这个文件原有的内容将被覆盖;如果不想覆盖存在的文件,可以使用“>>”操作符。例如:
[root@WEBServer ~]#ls –al /etc/* >>/root/install.log
这条命令将/etc目录及其子目录下的所有文件信息追加到/root/install.log文件的后面。/root/install.log文件原来的内容仍然存在。
(3)错误重定向
错误重定向和标准输出重定向一样,可以使用操作符“2>”和“2>>”实现对错误输出的重定向。例如:
[root@WEBServer ~]#tar zxvf text.tar.gz 2> error.txt
其中,tar是打包命令,可以在屏幕上看到tar的解压过程。如果“text.tar.gz”是个损坏的压缩包,就会把错误消息输出到error.txt文件。
管道可以把很多命令连接起来,可以把第1个命令的输入当作第2个命令的输出,第2个命令的输出当作第3个命令的输入,依此类推。因此,管道的作用就是把一个命令的输出当作下一个命令的输入,而不经过任何中间文件。
通过管道符“|”可以建立管道连接,例如:
[root@WEBServer ~]#ls -al /etc/* |more
这条命令表示将/etc目录以及子目录下的所有文件分屏显示。
[root@WEBServer ~]#ps -ef|grep httpd|wc –l
这个命令用于查看系统中正在运行的httpd进程,并统计httpd的进程数。
在bash中有很多特殊字符,这些字符本身就具有特殊含义。如果在shell的参数中使用它们,就会出现问题。Linux中使用了“引用”技术来忽略这些字符的特殊含义,引用技术就是通知shell将这些特殊字符当作普通字符处理。shell中用于引用的字符有转义字符“/”、单引号“'”、双引号“""”。
(1)转义字符“/”
如果将“/”放到特殊字符前面,shell就忽略这些特殊字符的原有含义,把它们当作普通字符对待,例如:
[root@WEBServer ~]#ls abc?* C:/backup [root@WEBServer ~]#mv abc/?/* abc [root@WEBServer ~]#mv C/://backup backup
上面是将abc?*重命名为abc,将C:/backup重命名为backup。因为文件名中包含特殊字符,所以都使用了转义字符“/”。
(2)单引号“'”
如果将字符串放到一对单引号之间,那么字符串中所有字符的特殊含义将被忽略,例如:
[root@WEBServer ~]#mv C/://backup backup [root@WEBServer ~]#mv 'C:/backup' backup
上面两条命令完全等效。
(3)双引号“""”
双引号的引用与单引号基本相同,包含在双引号内的大部分特殊字符可以当作普通字符处理,但是仍有一些特殊字符即使用双引号括起来,也仍然保留自己的特殊含义,比如“$”、“/”和“`”。
[root@WEBServer ~]#str="The /$SHELL Current shell is $SHELL" [root@WEBServer ~]#str1="/$$SHELL" [root@WEBServer ~]#echo $str The $SHELL Current shell is /bin/bash [root@WEBServer ~]#echo $str1 $/bin/bash
从上面的输出可以看出,“$”和“/”在双引号内仍然保留了特殊含义。
[root@WEBServer ~]# str="This hostname is `hostname`" [root@WEBServer ~]# echo $str This hostname is WEBServer
上面的输出中,字符“`”在双引号中也保留了自己的特殊含义。
自动补全命令行是bash一个简单而且实用的功能,自动补全命令行也就是在输入命令时不必把命令输全,shell就能智能判断用户所要输入的命令。
当用户输入某个命令的一部分后,按Tab键,shell就会根据系统环境变量信息提示出与用户输入命令相似的所有命令和文件,例如:
[root@WEBServer ~]# if<按Tab键> if ifcfg ifconfig ifdown ifenslave ifnames ifrename ifup [root@WEBServer ~]# if
可以从上面看到,用户输入“if”后按Tab键,即可显示以“if”为前缀的所有命令和文件。如果需要的是ifconfig命令,那么只须再次输入“co”,然后按Tab键,shell就能补全命令。
如果我们要进入一个很深的目录中,并且每个目录的名字又很长,此时利用bash的自动补全功能,就再好不过了。
ls命令显示指定工作目录下的内容,列出工作目录所含的文件及子目录。此命令与Windows下的dir类似。另外,Linux也提供了dir命令,用户也可以用dir命令代替ls命令。ls的语法如下。
ls [选项] [路径或文件]
ls的选项及其说明如表4.1所示。
表4.1 ls的选项及其说明
选 项 | 说 明 |
---|---|
-a | 显示指定目录下的所有文件以及子目录,包含隐藏文件(Linux下将“.”开头的文件或者目录视为隐藏文档) |
-d | 只显示目录列表,不显示文件 |
-l | 除文件名称外,同时将文件或者子目录的权限、使用者和大小等信息详细列出 |
-s | 在每个文件名后输出该文件的大小 |
-k | 以k字节的形式表示文件的大小 |
-u | 以文件上次被访问的时间排序 |
-t | 以时间排序 |
-o | 显示除组信息外的详细信息 |
-x | 按列输出,横向排序 |
-r | 对目录反向排序 |
-q | 用“?”代替不可输出的字符 |
-m | 横向输出文件名,并以“,”作为分格符 |
-S | 以文件大小排序 |
-R | 列出所有子目录下的文件 |
-pF | 在每个文件名后附上一个字符以说明该文件的类型。“*”表示可执行的普通文件,“/”表示目录,“@”表示符号链接,“ | ”表示FIFO,“=”表示套接字(socket) |
-C | 按列输出,纵向排序 |
-R | 列出所有子目录下的文件 |
-Q | 把输出的文件名用双引号括起来 |
显示当前的工作目录,执行pwd指令可立刻得知目前所在的工作目录的绝对路径名称,pwd命令的语法如下。
pwd
改变当前工作目录,其用法与Windows下的cd类似。具体的语法格式如下。
cd [目录名]
cd命令的选项及其说明如表4.2所示。
表4.2 cd命令的选项及其说明
选 项 | 说 明 |
---|---|
cd [目录] | 切换到有目录名指定的目录下,注意,Linux下文件和目录是区分大小写的 |
cd 或者cd ~ | 返回当前用户的默认工作目录,注意,cd与“~”之间有一个空格 |
cd ~[用户名] | 返回指定用户的工作目录下,注意,这里“~”和用户名之间没有空格 |
cd ..或者cd ../ | 返回到上级工作目录下 |
cd / | 返回到根目录下 |
显示或者修改系统时间与日期。只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。date命令的语法如下。
date [选项] 显示时间格式(以+开头,后面接时间格式)
date命令的选项及其说明如下。
时间显示格式如表4.3所示。
表4.3 时间显示格式
格 式 | 表 示 含 义 |
---|---|
%H | 显示小时,表示范围00~23 |
%I | 显示小时,表示范围01~12 |
%k | 显示小时,表示范围0~23 |
%l | 显示小时,表示范围1~12 |
%M | 显示分钟,显示格式为00~59 |
%S | 显示秒钟,显示格式为00~59 |
%p | 显示是AM(上午)还是PM(下午) |
%r | 显示时间,格式为hh:mm:ss AM或PM,其中hh代表小时,mm代表分钟,ss代表秒 |
%T | 显示时间,格式为hh:mm:ss |
%x | 显示年份和日期,格式为mm/dd/yyyy,这里的yyyy代表年份 |
%X | 显示时间格式,相当于%H:%M:%S的组合 |
%a | 显示星期几 |
%b或%B | 显示月份,%b是月的简称,%B是显示月的全称 |
%m | 显示月份,表示格式为从01~12 |
%Z | 显示时区 |
%d | 显示一个月的第几天 |
%D | 显示年份和月份,格式为mm/dd/yy,这里yy代表年份的最后两个数字 |
%Y或%y | 显示年份,%Y显示完整的年份,%y显示年份的最后两个数字 |
%c | 显示日期和时间格式,相当于“%a %d %b %Y %r %Z”的组合 |
用于设置用户密码。语法格式如下。
passwd [用户名]
su命令主要用于改变用户身份,其格式如下。
su [选项] [用户名]
su命令的选项及其说明如表4.4所示。
表4.4 su命令的选项及其说明
选 项 | 说 明 |
---|---|
- | 加载相应用户下的环境变量 |
-l | 使目前的shell成为改变身份后用户默认的shell |
-c | 改变身份运行一个指令后就结束 |
-m | 改变用户身份,但是不改变环境变量 |
clear命令用来清除屏幕信息,格式如下。
clear
man命令用来显示指定命令的帮助信息,其格式如下。
man [命令名称]
who命令显示目前登录到系统的用户,其格式如下。
who [选项] [file]
who命令的一般输出格式如下。
名称 [状态] 终端 时间 [活动] [进程标识](主机名)
who命令的选项及其说明如表4.5所示。
表4.5 who命令的选项及其说明
选 项 | 说 明 |
---|---|
-a | 列出所有信息,相当于所有选项 |
-b | 列出系统最近启动的日期 |
-l | 列出所有可登录的终端信息 |
-m | 仅列出关于当前终端的信息。“who –m”命令等同于“who am i”和“who am I”命令 |
-q | 列出在本地系统上的用户和用户数的清单 |
-r | 显示当前系统的运行级别 |
-s | 仅显示名称、终端和时间字段信息。这是who默认的输出,即“who”和“who –s”命令是等效的 |
-u | 显示当前每个用户的用户名、登录终端、登录时间、终端活动和进程标识 |
-T或-w | 显示tty终端的状态,“+”表示对任何人可写,“-”表示仅对root用户或所有者可写,“?”表示遇到终端故障 |
在Linux下who通常通过/var/run/utmp文件来获取信息,如果“[file]”选项指定另一个文件,则who命令不再默认读取/var/run/utmp文件,而是读取指定文件来获取信息。
用于显示登录到系统的用户信息,其格式如下。
w [选项] [用户]
w命令的选项及其说明如表4.6所示。
表4.6 w命令的选项及其说明
选 项 | 说 明 |
---|---|
-h | 不显示输出信息的标题 |
-l | 用长格式输出 |
-s | 用短格式输出,不显示登录时间、JCPU和PCPU时间 |
-V | 显示版本信息 |
[用户]表示当指定用户后,只显示该用户的信息。
uname命令用来显示操作系统相关信息。其格式如下。
uname [选项]
uname命令的选项及其说明如表4.7所示。
表4.7 uname命令的选项及其说明
选 项 | 说 明 |
---|---|
-a | 显示操作系统全部信息 |
-m | 显示系统CPU类型,是32位还是64位系统 |
-n | 显示操作系统的主机名 |
-s | 显示操作系统类型 |
-r | 显示操作系统内核版本 |
uptime命令用来输出系统任务队列信息,其格式如下。
uptime
uptime输出当前系统时间、系统开机到现在的运行时间、目前有多少用户在线和系统平均负载等。
列出目前与过去登入系统的用户相关信息。当执行last指令时,它会默认读取位于/var/log目录下名称为wtmp的文件,并把该给文件记录的登入系统的用户名单全部显示出来。
last [选项] [-n 显示列数]
last命令的选项及其说明如表4.8所示。
表4.8 last命令的选项及其说明
选 项 | 说 明 |
---|---|
-a | 把从何处登入系统的主机名称或IP地址显示在最后一行 |
-R | 不显示登入系统的主机名称或IP地址 |
-x | 显示系统关机、重新开机以及执行等级的改变等信息 |
-n <显示列数>或-<显示列数> | 设置列出名单的显示列数 |
-d | 将显示的IP地址转换成主机名称 |
显示开机信息。内核会将开机信息存储在系统缓冲区(ring buffer)中,如果开机来不及查看相关信息,可以在开机后利用dmesg命令查看,也可以在/var/log/目录中查看dmesg文件。其格式如下。
dmesg [选项]
dmesg命令的选项及其说明如表4.9所示。
表4.9 dmesg命令的选项及其说明
选 项 | 说 明 |
---|---|
-c | 显示开机信息后,清除ring buffer信息 |
-s | 设置缓冲区大小,默认设置为8192 |
-n | 设置记录信息的层级 |
free命令用来显示系统内存状态,具体包括系统物理内存、虚拟内存、共享内存和系统缓存。其格式如下。
free [选项] [-s (间隔秒数)]
free命令的选项及其说明如表4.10所示。
表4.10 free命令的选项及其说明
选 项 | 说 明 |
---|---|
-b | 以字节为单位显示内存使用情况 |
-m | 以MB为单位显示内存使用情况 |
-K | 以KB为单位显示内存使用情况 |
-t | 显示内存总和列 |
-s(间隔秒数) | 根据指定的间隔秒数持续显示内存使用情况 |
-o | 不显示系统缓冲区列 |
ps命令显示系统进程在瞬间的运行动态,其格式如下。
ps [选项]
ps的选项非常之多,这里仅仅列出常用的选项介绍,ps命令的选项及其说明如表4.11所示。
表4.11 ps命令的选项及其说明
选 项 | 说 明 |
---|---|
a | 显示所有用户的进程,包含每个程序的完整路径 |
-x | 显示所有系统程序,包括那些没有终端的程序 |
-u | 显示使用者的名称和起始时间 |
-f | 详细显示程序执行的路径群 |
-c | 只显示进程的名称,不显示进程的完整路径 |
-e | 将除内核进程以外所有进程的信息写到标准输出 |
top命令提供了对系统处理器状态的实时监控,它能够实时显示系统中各个进程的资源占用状况。该命令可以按照对CPU的使用、内存使用和执行时间对系统任务进程进行排序显示,同时top命令还可以通过交互式命令进行设定显示。
查看即时活跃的进程,类似于Windows的任务管理器。其格式如下。
top [选项]
top的选项很多,这里列出常用的选项及其说明,如表4.12所示。
表4.12 top命令的选项及其说明
选 项 | 说 明 |
---|---|
-d | 指定每两次屏幕信息刷新之间的时间间隔 |
-i | 不显示闲置或者僵死的进程信息 |
-c | 显示进程的整个命令路径,而不是只显示命令名称 |
-s | 使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险 |
-b | 分屏显示输出信息,结合“-n”选项可以将屏幕信息输出到文档 |
-n | top输出信息更新的次数,完成后将退出top命令 |
除了一些选项之外,top命令还有很多交互式命令。交互式命令就是在top命令执行过程中使用的一些命令,这些命令都是单个字母,从应用来讲,熟悉这些交互式命令至关重要。
表4.13所示为交互式命令及其具体说明。
表4.13 交互式命令及其说明
交互式命令 | 说 明 |
---|---|
h或? | 显示帮助信息,给出交互式命令的一些说明总结 |
k | 终止一个进程,系统将提示用户输入一个需要终止进程的PID |
i | 忽略闲置进程和僵死进程,这是一个开关式命令 |
s | 改变top输出信息两次刷新之间的时间,系统将提示输入新的时间,单位是秒。如果输入小数,就换算成毫秒;如果输入0,系统输出将不断刷新,默认刷新时间是5秒。需要注意的是,如果设置太短的时间,可能会引起系统不断刷新,无法看清输出显示情况,而且系统负载也会加大 |
o或者O | 改变top输出信息中显示项的顺序。按小写的a~z键可以将相应的列向右移动,而按大写的A~Z键可以将相应的列向左移动。最后按Enter键确定 |
f或者F | 从当前显示列表中添加或者删除项。按f键之后会显示列的列表,按a~z键即可显示或隐藏对应的列。最后按Enter键确定 |
m | 切换显示内存信息 |
t | 切换显示进程和CPU状态信息 |
r | 重新设置一个进程的优先级,系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10 |
l | 切换显示平均负载和启动时间信息 |
q | 退出top显示 |
c | 切换显示完整命令行和命令名称信息 |
M | 根据驻留内存大小进行排序输出 |
P | 根据CPU使用百分比大小进行排序输出 |
T | 根据时间/累计时间进行排序输出 |
S | 切换到累计模式 |
W | 将当前top设置写入~/.toprc文件中 |
mkdir命令用于创建一个目录。mkdir是make directory的缩写。其格式如下。
mkdir [选项] 目录名
mkdir命令的选项及其说明如表4.14所示。
表4.14 mkdir命令的选项及其说明
选 项 | 说 明 |
---|---|
-m | 对新建目录设置存取权限 |
-p | 可以指定一个路径名称。此时,若路径中的某些目录尚不存在,加上此选项后,系统将自动创建那些尚不存在的目录,也就是说,一次可以创建多个目录 |
如果一个文本文件比较长,一屏无法显示完毕,就需要使用more命令。more命令读取文本文件时,每次显示一屏,并且在每屏后暂停,同时在屏幕底部显示单词“More”。如果此时按Enter键,more命令就会接着再显示文本的一行,依此类推;如果按空格键,more命令就继续显示文本文件的另一屏信息。其格式如下。
more [选项] 文件名
more命令的选项及其说明如表4.15所示。
表4.15 more命令的选项及其说明
选 项 | 说 明 |
---|---|
-d | 在屏幕底部more提示符后显示友好信息,此信息是有关使用哪些键继续,哪些键退出,哪些键提供more命令帮助的 |
-s | 将输出文件中的多个空行减少为只有一个空行输出。以文件的第1行为准 |
-p | 先清除显示屏以前的信息,再显示文本信息 |
-c | 显示文件时,每屏显示都清除屏幕先前的信息,然后从最顶端显示出来 |
cat命令用来将文件的内容输出到标准输出,类似于DOS下的type命令,同时cat还可以用于连接合并文件。其格式如下。
cat [选项] 文件名
或者:
cat 文件1 文件2 >文件3
cat命令的选项及其说明如表4.16所示。
表4.16 cat命令的选项及其说明
选 项 | 说 明 |
---|---|
-A | 将文件中的制表符显示为“^I”,同时在每行的末尾显示一个$符号 |
-b | 将文件中的所有非空行按顺序编号,编号从1开始 |
diff命令用来比较文件的差异。diff以逐行的方式比较文本文件的异同,如果指定比较的是目录,则diff会比较目录中相同文件名的文件,但不会比较其中的子目录。其格式如下。
diff [选项] 文件1 文件2
diff命令的选项及其说明如表4.17所示。
表4.17 diff命令的选项及其说明
选 项 | 说 明 |
---|---|
-c | 显示全部内容,并标出不同之处 |
-b | 忽略行尾的空格,同时字符串中的一个或多个空格都将视为相同 |
-r | 当文件1和文件2为目录时,会比较子目录中的文件 |
-s | 当两个文件相同时,显示文件的相同信息 |
通常输出信息由如下格式组成。
n1 a n3,n4 n1,n2 d n3 n1,n2 c n3,n4
其中,字母a、d、c之前的n1和n2代表文件1的行号,字母a、d、c之后的n3和n4代表文件2的行号,字母a、d、c分别表示附加、删除和修改操作。在上面输出形式的每行后紧跟着两个文件的若干不同行,其中以“<”打头的行属于文件1,以“>”打头的行属于文件2。
grep命令是Linux下的文本过滤工具,grep根据指定的字符串,对文件的每一行进行搜索,如果找到了这个字符串,就输出该行的内容。其格式如下。
grep [选项] 需要查找的字符串文件名
grep命令的选项有很多,这里列出最常使用的选项说明,如表4.18所示。
表4.18 grep命令的选项及其说明
选 项 | 说 明 |
---|---|
-A NUM | 除了列出符合条件的行外,同时列出每个符合条件行的后NUM行 |
-c | 只显示符合条件的行数,而不显示每行的具体信息 |
-f file | 事先将要搜索的样式写入一个文件中,每行一个样式,然后以这个文件作为条件进行搜索 |
-i | 搜索时忽略大小写 |
-n | 在搜索结果中显示行号 |
-B | 与选项“-A”相反,除了列出符合条件的行外,同时列出每个符合条件行的前NUM行 |
rm命令用来删除某个目录及其下的所有文件及子目录。对于链接文件,只是断开了链接,原文件保持不变。其格式如下。
rm [选项] 文件或者目录
rm命令的选项及其说明如表4.19所示。
表4.19 rm命令的选项及其说明
选 项 | 说 明 |
---|---|
-r | 告诉rm将选项中列出的全部目录以及子目录还有文件均递归地删除,如果在选项中不指定“-r”选项,“rm”命令将不能删除目录 |
-f | 忽略不存在的问题,也不给出提示 |
-i | 交互式删除,即在删除前进行确认 |
注意
使用rm命令要特别小心,“rm-rf”组合要慎用,因为一旦文件被删除,就不能被恢复。Linux没有类似于Windows的回收站。因此,为了防止文件或者目录被误删除,可以使用rm的“-i”选项,来逐个确认要删除的文件。使用“-i”选项时,如果用户输入“y”,文件将被删除;如果输入其他任何信息,文件则不被删除。
touch命令用来改变指定文件的访问时间和修改时间,若指定文件不存在则创建此文件。如果没有指定时间,则使用当前时间。其格式如下。
touch [选项] 设定的时间文件
touch命令的选项及其说明如表4.20所示。
表4.20 touch命令的选项及其说明
选 项 | 说 明 |
---|---|
-a | 改变文件的访问时间为系统当前时间,无须设置时间选项 |
-m | 改变文件的修改时间为系统当前时间,无须设置时间选项 |
-c | 如果文件不存在,不创建也不提示 |
-d或者-t | 使用指定的日期或时间 |
-r<参考文件或目录> | 把指定文件或目录的日期、时间都设成和参考文件或目录的日期、时间相同 |
下面是touch命令的一个操作实例,“#”号后面的内容为命令注释。
[root@mylinux~]# touch test.txt#创建一个文件test.txt [root@mylinux~]# ls -l#显示文件创建时间(修改时间) total 0 -rw-r--r-- 1 root root 0 Jul 18 06:44 test.txt [root@mylinux~]# ls –lu#显示文件的访问时间 total 0 -rw-r--r-- 1 root root 0 Jul 18 06:44 test.txt [root@mylinux~]# date #显示系统当前时间 Fri Jul 18 06:45:21 CST 2008 [root@mylinux~]# touch -a test.txt #改变文件的访问时间为系统当前时间 [root@mylinux~]# ls -lu total 0 -rw-r--r-- 1 root root 0 Jul 18 06:45 test.txt [root@mylinux~]# ls -l total 0 -rw-r--r-- 1 root root 0 Jul 18 06:44 test.txt [root@mylinux~]# touch -m test.txt #改变文件的修改时间为系统当前时间 [root@mylinux~]# ls -l total 0 -rw-r--r-- 1 root root 0 Jul 18 06:46 test.txt [root@mylinux~]# touch linux.txt [root@mylinux~]# ls -l total 0 -rw-r--r-- 1 root root 0 Jul 18 06:47 linux.txt -rw-r--r-- 1 root root 0 Jul 18 06:46 test.txt [root@mylinux~]# ls -lu total 0 -rw-r--r-- 1 root root 0 Jul 18 06:47 linux.txt -rw-r--r-- 1 root root 0 Jul 18 06:45 test.txt [root@mylinux~]# touch -a -r linux.txt test.txt #将test.txt文件的访问时间修改为linux.txt文件的访问时间 [root@mylinux~]# ls -lu total 0 -rw-r--r-- 1 root root 0 Jul 18 06:47 linux.txt -rw-r--r-- 1 root root 0 Jul 18 06:47 test.txt [root@mylinux~]# touch -d "20080718 06:40" linux.txt #将linux.txt文件的修改时间设定为2008年7月18日6点40分 [root@mylinux~]# ls -l total 0 -rw-r--r-- 1 root root 0 Jul 18 06:40 linux.txt -rw-r--r-- 1 root root 0 Jul 18 06:46 test.txt
ln命令用来在文件或目录之间创建链接。
Linux下的链接有两种,一种是硬链接(Hard Link),另一种是符号链接(Symbolic Link),默认情况下ln命令产生的是硬链接。
ln命令的格式如下。
ln [选项] 源文件目标链接名
ln命令的选项及其说明如表4.21所示。
表4.21 ln命令的选项及其说明
选 项 | 说 明 |
---|---|
-f | 如果在目标位置存在与链接名相同的文件,这个文件将被删除 |
-s | 进行软链接 |
-d | 允许系统管理员硬链接自己的目录 |
-b | 对将在链接时会被覆盖或者删除的文件进行备份 |
file命令用来显示文件的类型。对于长度为0的文件,将识别为空文件;对于符号连接文件,默认情况下将显示符号链接引用的真实文件路径。其格式如下。
file [选项] 文件名
file命令的选项及其说明如表4.22所示。
表4.22 file命令的选项及其说明
选 项 | 说 明 |
---|---|
-b | 显示文件类型结果,不显示对应文件名称 |
-L | 直接显示符号链接所指向文件的类型 |
-z | 显示压缩文件的信息 |
-i | 如果文件不是常规文件,则不进一步对文件类型进行分类 |
cp命令用来将给出的文件或者目录复制到另一个文件或者目录中。cp与Windows下的copy命令类似,但是cp命令更加强大。其格式如下。
cp [选项] 源文件或目录目标文件或目录
cp命令的选项及其说明如表4.23所示。
表4.23 cp命令的选项及其说明
选 项 | 说 明 |
---|---|
-a | 在复制目录时使用。它保留所有的信息,包含文件链接、文件属性,并递归地复制目录 |
-r | 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名 |
-d | 复制时保留链接,这样不会失去链接文件 |
-p | 保留文件的修改时间和存取权限 |
-i | 如果已经有相同文件名的目标文件,则提示用户是否覆盖 |
1)将当前目录下的所有文件复制到/tmp目录下,“./*”表示当前目录下所有文件和目录。
[root@mylinux~]#cp –r ./* /tmp
2)将/home/oracle目录及其子目录下的全部内容复制到/home/ixdba下。
[root@mylinux~]#cp –r /home/oracle /home/ixdba
find命令用来在指定的路径下查找指定的文件。其格式如下。
find path-name[-options] [-print –exec -ok命令 {} /;]
具体的选项说明如下。
表4.24 “-options”选项常见的格式及其说明
格 式 | 说 明 |
---|---|
-name '字符串' | 查找文件名匹配所给字符串的所有文件,字符串内可用通配符*、?、[] |
-lname '字符串' | 查找文件名匹配所给字符串的所有符号链接文件,字符串内可用通配符*、?、[] |
-gid n | 查找属于ID号为n的用户组的所有文件 |
-uid n | 查找属于ID号为n的用户的所有文件 |
-empty | 查找大小为0的目录或文件 |
-path '字符串' | 查找路径名匹配所给字符串的所有文件,字符串内可用通配符*、?、[] |
-group'字符串' | 查找属于用户组名为所给字符串的所有的文件 |
-depth | 在查找文件时,首先查找当前目录下的文件,然后再查找其子目录下的文件 |
-prune 目录 | 指出搜索时不搜索该目录。如果同时使用-depth选项,那么-prune将被find命令忽略 |
-size n | 查找文件长度为n块的文件,带有c时表示文件长度以字节计 |
-user '字符串' | 查找属于用户名为所给字符串的所有的文件 |
-mtime +n或-n | 按时间搜索,+n表示n天之前的,-n表示今天到n天前之间的 |
-type 文件类型 | 按指定文件类型搜索。文件类型包括b(块设备文件)、c(字符设备文件)、f(普通文件)、l(符号链接)、d(目录)、p(管道)、s(socket)文件 |
注意
格式要正确,“-exec 命令 {} /;”,在“}”和“/”之间一定要有空格才行。
split命令用来分割文档,将一个文件分成数个。其格式如下。
split [选项] [input_file] [output_file]
split命令的选项及其说明如表4.25所示。
表4.25 split命令的选项及其说明
选 项 | 说 明 |
---|---|
-b size | 指定分割出来的文件大小,size可加入单位,b代表512字节,k代表1KB,m代表1MB |
-n | 这里“n”指定分割的每个文件的长度,默认为1000行 |
-d | 将split命令生成的文件序列以数字形式命名 |
-a | 指定split命令生成的文件序列的长度,默认长度为2 |
mv命令用来将文件或目录改名或将文件由一个目录移入另一个目录中。如果源类型和目标类型都是文件或者目录,mv将进行目录重命名。如果源类型为文件,而目标类型为目录,mv将进行文件的移动。如果源类型为目录,则目标类型只能是目录,不能是文件,此时完成目录重命名。其格式如下。
mv [选项] 源文件或目录目标文件或目录
mv命令的选项及其说明如表4.26所示。
表4.26 mv命令的选项及其说明
选 项 | 说 明 |
---|---|
-i | 交互式操作,在对已经存在的文件或目录覆盖时,系统会询问是否覆盖,用户输入“y”进行覆盖,输入“n”则不覆盖 |
-f | 禁止交互式操作,在mv将要覆盖某个文件或者目录时,不给任何提示,默认覆盖 |
将一般的文件或者目录进行压缩或者解压,默认生成以“.zip”为后缀的压缩包。zip命令类似于Windows中的winzip压缩程序。其格式如下。
zip [选项] 压缩文件名需要压缩的文档列表 unzip [选项] 压缩文件名
zip命令的选项及其说明如表4.27所示。
表4.27 zip命令的选项及其说明
选 项 | 说 明 |
---|---|
-r | 递归压缩,将指定目录下的所有文件以及子目录全部压缩 |
-d | 从压缩文件内删除指定的文件 |
-i "文件列表" | 只压缩文件列表中的文件 |
-x "文件列表" | 压缩时排除文件列表中指定的文件 |
-u | 更新文件到压缩文件中 |
-m | 将文件加入压缩文件压缩后,删除原始文件,即把文件移到压缩文件中 |
-F | 尝试修复损坏的压缩文件 |
-T | 检查压缩文件内的每个文件是否正确无误 |
- 压缩级别 | 压缩级别是1~9之间的一个数字 |
unzip命令的选项及其说明如表4.28所示。
表4.28 unzip命令的选项及其说明
选 项 | 说 明 |
---|---|
-x "文件列表" | 解压文件,但不包含文件列表中指定的文件 |
-t | 测试压缩文件有无损坏,并不解压 |
-v | 查看压缩文件的详细信息,具体包括压缩文件中包含的文件大小、文件名和压缩比等,并不解压 |
-n | 解压时不覆盖已经存在的文件 |
-o | 解压时覆盖已经存在的文件,并且不要求用户确认 |
-d 目录名 | 把压缩文件解压到指定目录下 |
将一般的文件进行压缩或者解压。压缩文件预设的扩展名为“.gz”,其实gunzip就是gzip的硬链接,因此无论是压缩或者解压都可以通过gzip来实现。
注意
gzip只能对文件进行压缩,不能压缩目录,即使指定压缩的目录,也只能压缩目录内的所有文件。
其格式如下。
gzip [选项] 压缩(解压缩)的文档名
gzip命令的选项及其说明如表4.29所示。
表4.29 gzip命令的选项及其说明
选 项 | 说 明 |
---|---|
-d | 对压缩的文件进行解压 |
-r | 递归式压缩指定目录以及子目录下的所有文件 |
-t | 检查压缩文档的完整性 |
-v | 对于每个压缩和解压缩的文档,显示相应的文件名和压缩比 |
-l | 显示压缩文件的压缩信息,显示字段为压缩文档大小、未压缩文档大小、压缩比和未压缩文档名称 |
-num | 用指定的数字num配置压缩比,“-1”或“-fast”表示最低压缩比,“-9”或“-best”表示最高压缩比。系统默认压缩比为6 |
对文件进行压缩与解压缩。此命令类似于“gzip/gunzip”命令,只能对文件进行压缩。对于目录只能压缩目录下的所有文件,压缩完成后,在目录下生成以“.bz2”为后缀的压缩包。bunzip2其实是bzip2的符号链接,即软链接,因此压缩、解压都可以通过bzip2实现。其格式如下。
bzip2 [选项] 要压缩或解压的文件
bzip2命令的选项及其说明如表4.30所示。
表4.30 bzip2命令的选项及其说明
选 项 | 说 明 |
---|---|
-d | 执行解压缩,此时选项后面跟要解压缩的文件 |
-v | 压缩或解压文件时,显示详细信息 |
-k | bzip2在压缩或解压缩后,会删除原始文件,若要保留原始文件,可使用此选项 |
-f | bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,就要使用此选项 |
-t | 测试“.bz2”压缩文件的完整性 |
- 压缩级别 | 压缩级别可以从1~9中选取,数字越大,压缩率越高 |
tar是Linux下经常使用的归档工具,对文件或者目录进行打包归档,归档成一个文件,但是并不进行压缩。其格式如下。
tar [主选项+辅助选项] 文件或者目录
tar命令的选项很多,这里列出一些经常用到的主选项,如表4.31所示。
表4.31 tar命令的主选项及其说明
主 选 项 | 说 明 |
---|---|
-c | 新建文件 |
-r | 把要归档的文件追加到档案文件的末尾 |
-t | 列出档案文件中已经归档的文件列表 |
-x | 从打包的档案文件中还原出文件 |
-u | 更新档案文件,用新建文件替换档案中的原始文件 |
辅助选项的详细信息如表4.32所示。
表4.32 tar命令的辅助选项及其说明
辅 助 选 项 | 说 明 |
---|---|
-z | 调用gzip命令在文件打包的过程中压缩/解压文件 |
-w | 在还原文件时,把所有文件的修改时间设定为现在时间 |
-j | 调用bzip2命令在文件打包的过程中压缩/解压文件 |
-Z | 调用compress命令过滤档案 |
-f | “-f”选项后面紧跟档案文件的存储设备,默认是磁盘,需要指定档案文件名;如果是磁带,只需指定磁带设备名即可。注意,在“-f”选项之后不能再跟任何其他选项,也就是说,“-f”必须是tar命令的最后一个选项 |
-v | 指定在创建归档文件过程中,显示各个归档文件的名称 |
-p | 在文件归档的过程中,保持文件的属性不发生变化 |
-N "yyyy/mm/dd" | 在指定日期之后的文件才会打包到档案文件中 |
--exclude file | 在打包过程中,不将指定file文件打包 |
dd命令用来转换或复制文件,同时可以对设备进行备份。其格式如下。
dd if="input_file" of="output_file" bs="block_size" count="number"
dd命令的选项及其说明如下。
cpio命令是通过重定向的方式将文件进行打包、备份、还原、恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。其格式如下。
cpio [选项] >文件名或者设备名 cpio [选项] <文件名或者设备名
cpio命令的选项及其说明如表4.33所示。
表4.33 cpio命令的选项及其说明
选 项 | 说 明 |
---|---|
-o | 将文件复制、打包成文件或者将文件输出到设备上 |
-i | 将打包文件解压或者将设备上的备份还原到系统中 |
-t | 查看cpio打包的文件内容或者输出到设备上的文件内容 |
-v | 显示打包过程中的文件名称 |
-d | 在cpio还原文件的过程中,自动建立相应的目录 |
-c | 一种较新的存储方式 |
-B | 让默认块可以增大到5120字节,默认块为512字节,这样做的好处是可以加快存取速度 |
df命令用来检查Linux系统的磁盘空间占用情况。其格式如下。
df [选项]
df命令的选项及其说明如表4.34所示。
表4.34 df命令的选项及其说明
选 项 | 说 明 |
---|---|
-h | 以容易理解的格式输出文件系统分区占用情况,如32KB、120MB、60GB |
-k | 以KB大小为单位输出文件系统分区占用情况 |
-m | 以MB大小为单位输出文件系统分区占用情况 |
-a | 列出所有的文件系统分区,包含0大小的文件系统分区 |
-i | 列出文件系统分区的inode信息 |
-T | 显示磁盘分区的文件系统类型 |
du命令用来显示文件或目录所占用的磁盘空间情况。其格式如下。
du [选项] 文件或目录
du命令的选项及其说明如表4.35所示。
表4.35 du命令的选项及其说明
选 项 | 说 明 |
---|---|
-s | 显示文件或者整个目录的大小,单位为KB |
-b | 以字节为单位显示文件大小或者显示目录下所有文件的大小 |
-sh | 以人性化的格式显示文件或者目录大小,如300MB、1.2GB等 |
-sm | 以MB为单位显示文件或者目录大小 |
fsck命令用来检查文件系统并尝试修复错误。其格式如下。
fsck [选项] [-t <文件系统类型>] [设备名]
fsck命令的选项及其说明如表4.36所示。
表4.36 fsck命令的选项及其说明
选 项 | 说 明 |
---|---|
-a | 自动修复文件系统,没有任何提示 |
-r | 采取交互式的修复模式,在执行修复时进行询问,让用户得以确认并决定处理方式 |
-A | 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统 |
-T | 执行fsck指令时,不显示标题信息 |
-V | 显示fsck指令的执行过程 |
-N | 不执行指令,仅列出实际执行会进行的动作 |
“-t <文件系统类型>”是指定要检查的文件系统类型。
注意
在执行fsck命令修复某个文件系统时,这个文件系统对应的磁盘分区一定要处于卸载状态,磁盘分区在挂载状态下进行修复是极为不安全的,数据可能遭到破坏,也有可能损坏磁盘。
sync命令用来强制把内存中的数据写回硬盘,以免数据的丢失。其格式如下。
sync
需要说明的是:在Linux系统中,修改过的操作会缓存到内存中,不会马上写入硬盘,等待适当的时候再从内存写入磁盘,这样可以提高系统读写效率。Linux下默认每隔3秒系统自动执行一次sync操作,系统正常关机时也会执行sync操作,保证所有操作全部从内存写入磁盘。如果非法关机,系统内存信息无法及时同步到硬盘,就会造成数据丢失或者文件损坏,由此可见,Linux系统中正常关机是非常重要的。
eject命令用来退出抽取式设备,如光驱或者磁带。如果该设备已经挂载,则eject先将设备卸载,然后再退出设备。其格式如下。
eject [选项] 设备名
eject命令的选项及其说明如表4.37所示。
表4.37 eject命令的选项及其说明
选 项 | 说 明 |
---|---|
-c <光驱编号> | 如果Linux系统中有多个光驱,需要指定某个光驱 |
-d或--default | 显示默认设备,而不是实际执行操作 |
-f或--floppy | 退出抽取式软盘 |
-q或--tape | 退出磁带 |
-r或--cdrom | 退出光盘 |
-t或--trayclose | 关闭光盘的托盘 |
-n或--noop | 显示指定的设备名对应的设备文件路径。默认显示光盘的设备文件路径 |
挂载以及卸载指定的文件系统。在第3章我们曾经讲述过mount/umount命令,这里再深入讲述mount/umount的使用。
mount [选项] [-L<标签>] [-o<选项>] [-t<文件系统类型>] [设备名] [挂载点] umount [挂载点]
mount命令的选项及其说明如表4.38所示。
表4.38 mount命令的选项及其说明
选 项 | 说 明 |
---|---|
-a | 加载文件/etc/fstab中指定的所有设备 |
-n | 不将加载信息记录在/etc/mtab文件中 |
-r | 以只读方式加载设备 |
-w | 以可读写模式加载设备,属于mount默认设置 |
-f或-v | 不加载设备,仅查看mount的挂载状态 |
1)-L<标签>:标签其实就是磁盘分区标识的别名,标签可以随便起名,这样便于记忆,在Linux下磁盘分区的设备名比较难记,利用标签代替设备名,简单易记。
2)-o<选项>:指定加载文件系统时的选项,这些选项如下。
3)-t<文件系统类型>:指定设备的文件系统类型,常用选项如下。
4)设备名:硬盘分区在Linux上的设备标识,类似于/dev/sda1、/dev/hda2等。
5)挂载点:Linux系统下指定的某个目录。
ifconfig命令用来配置网络或显示当前网络接口状态。它类似于Windows下的ipconfig命令,同时ifconfig命令必须以root用户来执行。其格式如下。
ifconfig [选项] [interface] [inet|up|down|netmask|addr|broadcast]
ifconfig命令的选项及其说明如表4.39所示。
表4.39 ifconfig命令的选项及其说明
选 项 | 说 明 |
---|---|
-a | 显示所有的网络接口信息,包括活动的和非活动的 |
-s | 仅显示每个接口的摘要数据,是有关接口活动性的,每个接口显示一行信息 |
-v | 如果某个网络接口出现错误,将返回错误消息,以帮助发现和处理故障 |
scp就是secure copy,用于将文件或者目录从一个Linux系统复制到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全。其格式如下。
scp 远程用户名@ip地址:文件的绝对路径本地Linux系统路径 scp 本地Linux系统文件路径远程用户名@ip地址:远程系统文件绝对路径名
scp使用第1种格式将远程Linux系统上的某个文件或者目录复制到本地Linux系统上,使用第2种格式是将本地的某个文件或者目录复制到远程Linux系统的某个路径下。
netstat命令用来显示本机网络连接、运行端口和路由表等信息。其格式如下。
netstat [选项]
netstat命令的选项及其说明如表4.40所示。
表4.40 netstat命令的选项及其说明
选 项 | 说 明 |
---|---|
-a | 显示本机所有连接和监听端口 |
-n | 以网络IP地址的形式显示当前建立的有效连接和端口 |
-r | 显示路由表信息 |
-s | 显示按协议的统计信息。默认情况下,将显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP和UDPv6的统计信息 |
-v | 显示当前的有效连接,与“-n”选项类似 |
-t | 显示所有的TCP协议连接情况 |
-u | 显示所有的UDP协议连接情况 |
-c<秒数> | 后面跟的秒数,表示每隔几秒就刷新显示一次 |
-i | 显示自动配置接口的状态 |
-l | 仅显示连接状态为“LISTEN”的服务的网络状态 |
-p | 显示连接对应的PID与程序名 |
traceroute命令用来显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况。预设数据包大小是38字节,用户可另行设置。它与Windows下的tracert命令类似,其格式如下。
traceroute [选项] [远程主机名或者IP地址] [数据包大小]
traceroute命令的选项及其说明如表4.41所示。
表4.41 traceroute命令的选项及其说明
选 项 | 说 明 |
---|---|
-i <网络接口> | 使用指定的网络接口发送数据包 |
-n | 直接使用IP地址而不使用主机名 |
-v | 详细显示命令的执行过程 |
-w<超时秒数> | 设置等待远程主机回应的时间 |
-x | 开启或者关闭对数据包的正确性检验 |
-s<来源ip> | 设置本地主机发送数据包的IP地址 |
-g<网关地址> | 设置来源的路由网关,最多可设置8个 |
telnet命令通过telnet协议与远程主机通信或者获取远程主机对应端口的信息。它与Windows下的telnet具有相同的功能。其格式如下。
telnet 主机名或者IP地址端口
wget命令用来从网络上下载某个软件,这个命令对于能够连接到互联网的Linux系统作用非常大,可以直接从网络下载自己需要的软件。其格式如下。
wget [要下载软件的网址]
vi是Linux下标准的文本编辑程序,也是Linux系统命令行下最经常使用的文本文件可视化编辑器,类似于DOS命令edit。那么什么是可视化呢?其实就是让用户在编辑文本文件的时候能够看到它们。这听起来似乎很普通,但是在命令行的字符界面下,可视化编辑确实起了很大的作用。
vi是Linux下默认的编辑器,几乎所有的Linux/UNIX系统都捆绑了vi。这表示只要你学会了vi这个编辑工具,就可以在任何Linux/UNIX系统上使用它,而且vi程序非常小,只有几百千字节大小。因此,只要熟练了vi操作,你可以做任何想做的事情。
vi编辑程序有两种工作模式,即命令模式和文本输入模式。在命令模式下,输入的字符被解释为vi命令,就是这些命令组合形成了vi的强大功能,通过vi命令可以转换到文本输入模式;在文本输入模式下,输入的字符作为正在编辑的文件的正文内容来接受,如果按Esc键则切换到vi命令模式。
下面通过分类的方式,逐个介绍vi的一系列命令的含义和用法。
1)Linux命令行下用vi打开文件的命令选项,其详细说明如表4.42所示。
表4.42 用vi打开文件的命令选项及说明
vi使用的选项 | 说 明 |
---|---|
vi filename | 打开或者新建一个文件,并将光标置于第一行的首部 |
vi –r filename | 恢复上次vi打开时崩溃的文件 |
vi –R filename | 把指定的文件以只读方式放入编辑器中 |
vi + filename | 打开文件并将光标置于最后一行的首部 |
vi +n filename | 打开文件,并将光标置于第n行的首部 |
vi +/pattern filename | 打开文件,并将光标置于第一个与pattern匹配的位置 |
vi –c command filename | 在对文件进行编辑前,先执行指定的命令 |
2)vi命令模式下的命令选项,主要分为移动光标类命令、屏幕翻滚类命令、插入与删除文本类命令、搜索与替换类命令以及保存与退出类命令。这些分别在下面依次说明。
表4.43 移动光标类命令及其说明
按的键或者输入的字符 | 说 明 |
---|---|
h | 光标左移一个字符 |
l | 光标右移一个字符 |
Backspace键 | 光标左移一个字符 |
k或Ctrl+p | 光标上移一个字符 |
j或Ctrl+n | 光标下移一个字符 |
Enter键 | 光标下移一行 |
w或W | 光标右移一个字到字首 |
b或B | 光标左移一个字到字首 |
e或E | 光标右移一个字到字尾 |
nG | 光标移动到第n行首部 |
n+ | 光标下移n行 |
n- | 光标上移n行 |
n$ | 相对于当前光标所在行,光标再向后移动n行到行尾 |
H | 光标移至当前屏幕的顶行 |
M | 光标移至当前屏幕的中间行 |
L | 光标移至当前屏幕的最底行 |
0 | 将光标移至当前行首 |
$ | 将光标移至当前行尾 |
:$ | 将光标移动到文件最后一行的行首 |
屏幕翻滚类命令及其说明如表4.44所示。
表4.44 屏幕翻滚类命令及其说明
按的键或输入的字符 | 说 明 |
---|---|
Ctrl+u | 相对于当前屏幕,向文件首翻半屏 |
Ctrl+d | 相对于当前屏幕,向文件尾翻半屏 |
Ctrl+b | 相对于当前屏幕,向文件首翻一屏 |
Ctrl+f | 相对于当前屏幕,向文件尾翻一屏 |
nz+Enter | 将文件的第n行滚至屏幕顶部,如果不指定n值,将当前行滚至屏幕顶部 |
插入与删除文本类命令及其说明如表4.45所示。
表4.45 插入与删除文本类命令及其说明
按的键或输入的字符 | 说 明 |
---|---|
Esc | 返回命令行模式 |
i | 在光标前输入文字 |
a | 在光标后输入文字 |
o | 在当前行之下新开一行 |
O | 在当前行之上新开一行 |
r | 替换光标所在字符,输入r命令后,在键盘上输入需要替换的新字符即可完成替换 |
x | 删除光标所在的字符 |
dd | 删除光标所在的行。删除后的内容自动保存在剪贴板 |
yy | 将光标所在的行复制到剪贴板,如果在“yy”前加上数字,可复制多行 |
p | 将剪贴板的内容复制到光标后 |
P | 将剪贴板的内容复制到光标前 |
yw | 将光标所在的单词复制到剪贴板 |
搜索及替换类命令及其说明如表4.46所示。
表4.46 搜索及替换类命令及其说明
按的键或输入的字符 | 说 明 |
---|---|
/abc | 在文件中向前查找字符串abc |
?abc | 在文件中向后查找字符串abc |
n | 在同一方向重复上次的搜索命令 |
N | 在相反方向重复上次的搜索命令 |
:s/a1/a2/g | 将当前光标所在行中的所有a1均用a2替换 |
:n1,n2s/a1/a2/g | 将文件第n1至n2行中所有a1均用a2替换 |
:g/a1/a2/g | 将文件中所有的a1均用a2替换 |
:set nu | 给文件的每行加上行号 |
保存与退出类命令及其说明如表4.47所示。
表4.47 保存与退出类命令及其说明
按的键或输入的字符 | 说 明 |
---|---|
:wq | 保存并退出vi编辑器,“:wq!”表示不保存,强制退出 |
:q | 不保存就退出vi编辑器,“:q!”表示不保存,强制退出 |
:w | 保存但是不退出vi编辑器,“:w!”表示强制保存,“:w filename”表示将修改保存到“filename”中。相当于另存文件 |
x! | 保存文件,退出vi编辑器,更通用的一个vi命令 |
没看过瘾就收入一本。购买链接:
【京东】 http://item.jd.com/11868199.html
【当当】 http://product.dangdang.com/23904022.html