**1 Linux命令格式**
命令格式:命令 [-选项] [参数]
(1)选项:用来调整命令的功能,用以使得前面的命令根据需要得出不同的结果,展示不同的内容。
(2)参数:命令操作的对象,表示该命令是针对什么操作的,可能是一个进程,一个用户,一个文件甚至是一个目录。
例:
- [root@localhost ~]#ls -la /etc

[root@localhost ~]#ls -la /etc
说明:
1)个别命令使用不遵循此格式;选项和参数是可选的,例如ls命令可以不跟任何选项和参数也可以执行,但是有些命令后面是不可以省略选项和参数的,甚至有的命令需要带多个选项、多个参数才能执行,即不遵循此格式。
2)当有多个选项时,可以写在一起;例如:-la命令就是“-l -a”两个命令合在一起写的,并且绝大多数命令选项的先后顺序是可以颠倒的(有些命令不可以)。
3)简化选项与完整选项:例如:-a 等于 –all,Linux系统中习惯于用一个“-”来调用简化选项(如-a),用两个“–”来调用完整选项(如–all)。
2 目录处理命令ls
命令名称:ls
命令英文原意:list
命令所在路径:/bin/ls
执行权限:所有用户
功能描述:显示目录文件
语法:ls 选项[-ald] [文件或目录]
应用示例:
- [root@localhost ~]#ls

[root@localhost ~]#ls
命令执行结果如图1所示:
图1 ls命令操作结果
示例说明:该命令后面没有带任何的选项和参数,表示显示当前所在目录下的文件(只有文件名,没有其他详细一点的信息)。一般情况下初始登录后的所在位置都是用户的家目录,此处示例就表示root用户的家目录下的文件。
补充说明:图1中所显示的三个文件就是当前Linux的安装日志文件。
- [root@localhost ~]#ls -a

[root@localhost ~]#ls -a
命令执行结果如图2所示:
图2 ls -a命令操作结果
示例说明:显示所有文件(只有文件名,没有其他详细一点的信息),包括隐藏文件(以“.”开头的文件)。选项“a”表示“all”,即“所有”。
补充说明:在Linux系统中,以“.”开头的文件就是隐藏文件,隐藏文件的设计初衷是为了告诉用户:这是一个系统文件,如果没有特殊的要求,或者除非你确定需要操作它,否则不要乱动它。Linux系统中,要把一个文件进行隐藏,只需要更改文件名即可(即在文件名前面再加一个“.”)。
以上就是是查看当前目录下的文件的操作命令示例,那么如果需要查看其它目录下的文件的话,可以直接在“ls”命令后面指定任何一个目录来进行查询。例如:
- [root@localhost ~]#ls /

[root@localhost ~]#ls /
命令执行结果如图3所示:
图3 ls命令查看指定目录下的文件信息
示例说明:查看根目录下的文件。
上述示例展示的都只是查看文件的基本命令,从示例结果中我们可以看到,我们通过命令所能看到的只有文件的文件名,没有其他任何的文件说明信息。下面就来介绍如何通过ls命令查看文件的更多相关信息。
- [root@localhost ~]#ls -l

[root@localhost ~]#ls -l
命令执行结果如图4所示:
图4 ls -l长格式显示文件信息
示例说明:详细信息显示。选项“l”表示“long”,即“长格式”。长格式显示的好处是比普通ls命令显示结果多出了一些文件的属性信息。
补充说明:从图4中可以看到,每一个文件的信息显示格式都被分成了7个部分。例如:
- -rw-r–r–. 1root root 7572 6月 7 23:35 install.log.syslog

-rw-r--r--. 1root root 7572 6月 7 23:35 install.log.syslog
其中:
(1)第一部分:文件类型(第1个字符)+权限(后9个字符)。如上“-rw-r–r–”。
表示该文件的文件类型,以及Linux的三个用户类分别对其拥有的操作权限。
具体说明如下:
1)第1字符表示文件类型:
“-”:二进制文件;
“d”:目录;
“l”:软链接文件。
补充:Linux系统中还有几类不常见的系统特殊文件类型:字符设备文件、块设备文件、套接字文件和管道符文件。
2)后9个字符分为三个部分,分别对应不同的用户类,且每个部分都标记相应的用户类所拥有的权限。
- rw- r– r–
- u g o

rw- r-- r--
u g o
(A)Linux系统中的三种权限类分别是:r 读;w 写;x执行。
说明:
a)对文件来说,执行权限x是它的最高权限,权限的分配原则是:够用就好!也就是说只要够使用,就不应该给最大的权限。所以通常情况下,文件的所有者可能也没有对该文件的执行操作权限。
b)一般来说,对于文件,读写权限就足够了,执行权限只有当我们需要让这个文件运行的时候,比如说它是个命令,或者是个脚本,但是如果是个日志,那就不需要执行权限了。
c)用户类不拥有某种操作权限时,在该权限的显示位置将会显示一个“-”表示该用户类没有此项操作权限。
(B)Linux系统中每个文件把用户分成了三类,分别表征用户和文件之间的关系:
第一类:u 所有者(user) 文件的创建者,只能有一个,但是可以变更。
第二类:g 所属组(group) 一个用户集合,该集合内的用户拥有相同的操作权限。
第三类:o 其他人(other) 既不是所有者,也不是所属组的剩余用户类。
如上所示“rw-r–r–”中:
a)“rw-”表示该文件的所有者拥有对该文件的读写操作权限,没有执行操作权限;
b)“r–”表示该文件的所属组拥有对该文件的读操作权限,没有写操作权限和执行操作权限;
c)“r–”表示其他人拥有对该文件的读操作权限,没有写操作权限和执行操作权限;
(2)第二部分:引用计数。
代表该文件曾经被调用或者引用的次数。(引用计数对于文件和目录来讲,只在硬链接这里才有作用)
如上所示的数字“1”表示该文件被调用或引用了1次。
(3)第三部分:所有者(u)。
如上所示“root”表示该文件的所有者是root用户。
(4)第四部分:所属组(g)
如上所示“root”表示该文件的所属组是root用户组。
(5)第五部分:文件大小(默认单位是字节Byte)
如上所示“7572”,表示该文件的大小为7572个字节。
可以看到,这种不带单位的文件大小显示方式是不太直观的,那么针对这个问题,Linux的操作命令还提供了一个“-h”选项,这是一个很多命令都支持的通用选项。“h”表示“human”,也就是“人性化显示”。在显示文件大小的时候会视实际情况附带显示诸如“K”、“M”、“G”等等的单位信息。例如:
- [root@localhost ~]#ls -lh

[root@localhost ~]#ls -lh
命令执行结果如图5所示:
图5 ls -lh命令操作结果
(6)第六部分:该文件最后一次被修改的时间
如上所示“6月 7 23:35”表示该文件最后一次被修改的时间为6月7日的晚上11点35分。
补充说明:在Linux系统中本身是没有“创建时间”这个概念的。但是有文件的访问时间,即“文件的最后一次访问时间”、“文件的状态修改时间”和“文件的数据修改时间”。但是如果一个文件从创建以来就没有被修改过,那么这里显示的实际上就是该文件的创建时间。
(7)第七部分:文件名
如上所示的文件名为“install.log.syslog”。
再来看看ls命令的最后一个选项“-d”。首先举一个例子,比如说我想查看某一个目录的详细信息,那么如果我通过如下命令进行查看将会得到一个什么样的显示结果:
- [root@localhost ~]#ls -l /etc

[root@localhost ~]#ls -l /etc
命令执行结果如图6所示:
图6 ls –l命令查看指定目录下的文件详细信息
可以看到,仅仅只是通过长格式选项显示的结果中显示却是指定目录下的很多很多的文件详细信息,而非目录本身的详细信息。那么要查看指定目录本身的详细信息,我们就要用到“-d”选项了,这个选项一般是跟“-l”选项结合起来使用的。例如:
- [root@localhost ~]#ls -ld /etc

[root@localhost ~]#ls -ld /etc
命令执行结果如图7所示:
图7 ls -ld命令操作结果
示例说明:查看目录属性。选项“d”表示“directory”,即“目录”。显示当前目录本身的详细信息,而不显示目录下的信息。
补充知识:i节点(inode)
类似于索引id,用于唯一标志某个文件,相当于索引号。可以通过“ls -i”命令行后面跟文件名或者目录来查看指定文件或者指定目录下的文件的i节点。例如:
- [root@localhost ~]#ls -i
- [root@localhost ~]#ls -i /
- [root@localhost ~]#ls -i /etc/issue

[root@localhost ~]#ls -i
[root@localhost ~]#ls -i /
[root@localhost ~]#ls -i /etc/issue
命令执行结果如图8所示:
图8 查看i节点信息
示例说明:查看当前目录下的文件的i节点、根目录下的文件的i节点,以及指定文件的i节点。
** - 2 目录处理命令:mkdir **
命令名称:mkdir
命令英文原意:make directories
命令所在路径:/bin/mkdir
执行权限:所有用户
语法:mkdir -p [目录名]
说明:-p选项用于实现递归创建
功能描述:创建新目录
示例:
- [root@localhost~]# mkdir /tmp/yangtzeu

[root@localhost~]# mkdir /tmp/yangtzeu
说明:在“/temp”目录下创建目录“yangtzeu”。
操作结果如图1所示:
图1 在已经存在的目录下创建新目录
- [root@localhost~]# mkdir -p /tmp/China/Beijing

[root@localhost~]# mkdir -p /tmp/China/Beijing
操作结果如图2所示:
图2 -p实现递归创建子目录
说明:如果China目录本身不存在,那么想要在China目录下再创建一个新的子目录Beijing的话:
1)“mkdir /tmp/China/Beijing”将会失败。如图3所示,系统会提示:无法创建“/tmp/China/Beijing”:没有那个文件或目录。
图3 创建当前不存在的目录的子目录
2)但是mkdir提供了一个选项“-p”可以实现递归创建,即实现在创建一个本身不存在的目录的同时在其下创建一个新的子目录。
- [root@localhost~]#mkdir /tmp/China/Shanghai /tmp/China/Shenzhen

[root@localhost~]#mkdir /tmp/China/Shanghai /tmp/China/Shenzhen
说明:mkdir命令可以同时创建多个目录。如上命令所示,在tmp的China目录下同时创建两个目录“Shanghai”和“Shenzhen”。
操作结果如图4所示:
图4 在已经存在的目录下同时创建多个目录
注意,在创建新目录时要遵循以下两点说明:
(1)一定要做好目录结构的规划,避免杂乱无章;
(2)目录名称的命令最好有一定的含义,便于查找和管理。
**3 目录处理命令:cd**
命令名称:cd
命令英文原意:change directory
命令所在路径:shell内置命令
执行权限:所有用户
语法:cd [目录]
说明:无论想要切换到哪一个目录,只要用cd命令后面加上想要切换的目录名称即可。
功能描述:切换目录
示例:
- [root@localhost~]# cd /tmp/China/Shanghai

[root@localhost~]# cd /tmp/China/Shanghai
说明:切换到指定目录。即进入到/tmp目录中China目录下的Shanghai目录里。
操作结果如图5所示:
图5 切换目录
从操作示意图中可以看到:
a)当我们切换到任意一个目录之后,在命令行最左边的提示符里保存的只是最近一级的目录名称,而不是完整的目录名称。
b)输入命令“cd /tmp/China/Shanghai”之后命令提示符显示的是最近一级的目录名称“Shanghai”,而无法显示完整的目录名称“/tmp/China/Shanghai”。那么,如果我们想要查询当前的详细目录,可以通过使用另一个简单的目录处理命令pwd来实现。
c)当我们切换到某一个目录下,要怎样才能返回到上一级目录,或直接返回根目录呢?
- [root@localhostShanghai]#cd ..

[root@localhostShanghai]#cd ..
说明:回到上一级目录。当前是在“/tmp/China/Shanghai”目录下,执行命令后,系统将会返回到上一级目录“/tmp/China”下。
操作结果如图6所示:
图6 返回上一级目录
补充说明:
(1)在Windows系统中也有这个命令,但是区别在于在Windows系统中“cd”和“..”之间是不需要空格的。但是在Linux系统中,命令具有严格的规定,“cd”和“..”之间是必须要有空格的。
(2)“.”表示当前目录;“..”表示当前目录的上一级目录。
- [root@localhostShanghai]#cd

[root@localhostShanghai]#cd
说明:从当前目录直接返回到根目录。当前是在“/tmp/China/Shanghai”目录下,执行命令后,系统将会直接返回到根目录下。
操作结果如图7所示:
图7 从当前目录直接返回到根目录
**4 目录处理命令:pwd**
命令名称:pwd
命令英文原意:print working directory
命令所在路径:/bin/pwd
执行权限:所有用户
语法:pwd
功能描述:显示当前目录的绝对路径
示例:
- [root@localhostShanghai]#pwd

[root@localhostShanghai]#pwd
说明:显示当前所在目录的绝对路径:“/tmp/China/Shanghai”。
操作结果如图8所示:
图8 显示当前所在目录的绝对路径
**5 文件处理命令:rmdir**
命令名称:rmdir
命令英文原意:remove empty directories
命令所在路径:/bin/rmdir
执行权限:所有用户
语法:rmdir [目录名]
功能描述:删除空目录
示例:
- [root@localhost~]# rmdir /tmp/yangtzeu

[root@localhost~]# rmdir /tmp/yangtzeu
操作结果如图9所示:
图9 删除空目录
说明:
1)该命令只能用于删除空目录。
2)但是如果操作的是非空目录,那么系统将会提示删除失败,原因是:目录非空。比如说,前面我们在tmp目录下创建了目录China,并且在该目录下创建了三个空目录Beijing,Shanghai和Shenzhen,那么此时,目录China就不再是非空目录了,我们如果如下命令,那么系统就会提示删除失败了:
- [root@localhost~]#rmdir /tmp/China

[root@localhost~]#rmdir /tmp/China
操作结果如图10所示:
图10 删除非空目录操作失败
**6 目录处理命令:cp**
命令名称:cp
命令英文原意:copy
命令所在路径:/bin/cp
执行权限:所有用户
语法:cp -rp [源文件或目录][目标目录]
cp 复制文件。在使用cp命令复制文件的时候是不需要附带选项的。
cp -r 复制目录
cp -p 保留文件属性
功能描述:复制文件或目录
示例:
- [root@localhost~]#cp /etc/grub.conf /tmp

[root@localhost~]#cp /etc/grub.conf /tmp
说明:将系统文件grub.conf复制到tmp目录下。
操作结果如图11所示:
图11 复制单个文件
- [root@localhost~]# cp /root/install.log/root/install.log.syslog /tmp

[root@localhost~]# cp /root/install.log/root/install.log.syslog /tmp
说明:将系统安装日志文件install.log和install.log.syslog复制到tmp目录下。(同时复制多个文件)
操作结果如图12所示:
图12 同时复制多个文件
- [root@localhost~]# cp -r /tmp/China/Beijing /root

[root@localhost~]# cp -r /tmp/China/Beijing /root
说明:将“/tmp/China/” 目录下的Beijing目录复制到root目录下。
操作结果如图13所示:
图13 复制单个目录
- [root@localhost~]# cp -rp /tmp/China/Shanghai /tmp/China/Shenzhen/root

[root@localhost~]# cp -rp /tmp/China/Shanghai /tmp/China/Shenzhen/root
说明:将“/tmp/China”目录下的Shanghai和Shenzhen目录复制到root目录下,并保持目录属性。(同时复制多个目录)。
操作结果如图14所示:
图14 同时复制多个目录
Linux压缩解压命令
1 关于压缩解压命令需要关注的要点:
(1)有哪些基本的压缩格式;
(2)压缩命令在Linux系统中怎样使用。
2 压缩解压命令:gzip
命令名称:gzip
命令英文原意:GNU zip
命令所在路径:/bin/gzip
执行权限:所有用户
语法:gzip [文件]
功能描述:压缩文件
压缩后文件格式:.gz
示例:
- [root@localhost~]# gzip Hadoop

[root@localhost~]# gzip Hadoop
说明:
1)这是在Linux里面比较常见的一种压缩格式。但是在Windows系统不太常见,Windows系统中用的比较多的压缩格式为.zip、.rar。如果要在Linux系统中解压缩.rar压缩文件就需要安装一个rar for Linux版本。
2)而默认的.zip格式的压缩文件是Linux和Windows双方都不需要额外安装任何软件就可以进行解压缩处理的。
2.1 解压缩:gunzip [或者使用:gzip -d]
命令名称:gunzip
命令英文原意:GNU unzip
命令所在路径:/bin/gunzip
执行权限:所有用户
语法:gunzip [压缩文件]
功能描述:解压缩.gz的压缩文件
示例:
- [root@localhost~]#gunzip Hadoop.gz

[root@localhost~]#gunzip Hadoop.gz
说明:
与Windows存在很大的不同:
(1)gzip只能用来压缩文件,不能用来压缩目录;
(2)gzip压缩过程不保留源文件,压缩完成后只保留压缩包。
如果需要压缩目录,可以使用下面的压缩命令。
3 压缩解压命令:tar
命令名称:tar
命令所在路径:/bin/tar
执行权限:所有用户
语法:tar 选项 [-zcf] [压缩后文件名] [待打包的目录]
-c 打包
-v 显示详细信息,即打包了那些目录
-f 指定文件名
-z 打包同时压缩,如果没有此选项,则只是进行了简单的打包操作,并没有压缩。
功能描述:打包目录
压缩后文件格式:.tar.gz
示例:
- [root@localhost~]#tar -zcf Hadoop.tar.gz Hadoop

[root@localhost~]#tar -zcf Hadoop.tar.gz Hadoop
说明:将目录Hadoop打包并压缩为.tar.gz文件。
3.1 解压缩
tar命令解压缩语法:
-x 解包
-v 显示详细信息,即打包了那些目录
-f 指定解压文件
-z 解压缩
示例:
- [root@localhost~]#tar -zxvf Hadoop.tar.gz

[root@localhost~]#tar -zxvf Hadoop.tar.gz
4 压缩解压命令:zip
命令名称:zip
命令所在路径:/usr/bin/zip
执行权限:所有用户
语法:zip 选项 [-r] [压缩后文件名] [待打包的文件或目录]
-r 压缩目录
功能描述:压缩文件或目录
压缩后文件格式:.zip
与gzip相比的好处在于:
(1)能保留源文件;
(2)选项-r可以压缩目录。
示例:
- [root@localhost~]# zip Hadoop.zip Hadoop

[root@localhost~]# zip Hadoop.zip Hadoop
说明:压缩文件。
- [root@localhost~]# zip -r Java.zip Java

[root@localhost~]# zip -r Java.zip Java
说明:压缩目录:Java目录中包含jdk、tomcat、Oracle等文件。
4.1 解压缩:unzip
命令名称:unzip
命令所在路径:/usr/bin/unzip
执行权限:所有用户
语法:unzip [压缩文件]
功能描述:解压.zip的压缩文件
示例:
- [root@localhost~]#unzip Hadoop.zip

[root@localhost~]#unzip Hadoop.zip
5 压缩解压命令:bzip2
命令名称:bzip2
命令所在路径:/usr/bin/bzip2
执行权限:所有用户
语法:bzip2 选项 [-k] [文件]
-k 产生压缩文件后保留源文件
功能描述:压缩文件
压缩后文件格式:.bz2
示例:
- [root@localhost~]#bzip2 -k Hadoop
- [root@localhost~]# tar -cjf Java.tar.bz2 Java

[root@localhost~]#bzip2 -k Hadoop
[root@localhost~]# tar -cjf Java.tar.bz2 Java
说明:压缩比比较惊人,压缩比较大的文件时推荐使用。
5.1 解压缩:bunzip2
命令名称:bunzip2
命令所在路径:/usr/bin/bunzip2
执行权限:所有用户
语法:bunzip2 选项 [-k] [压缩文件]
-k 解压缩后保留源压缩文件
功能描述:解压缩
示例:
- [root@localhost~]#bunzip2 -k Hadoop.bz2
- [root@localhost~]# tar -xjf Java.tar.bz2

[root@localhost~]#bunzip2 -k Hadoop.bz2
[root@localhost~]# tar -xjf Java.tar.bz2