目录
1 前言
Linux的哲学之一是一切皆文件,即计算机系统的所有设备(软件和硬件)都可以用文件来表示,所以文件管理对于Linux系统来说就像是管家一样,使Linux变得清晰、简洁、高效、易用。
以我们平常使用的Windows系统的计算机为例,其上不同类型的文件有很多,如常见的txt(文本)、jpg(图片)、mp3(音频),flv(视频)格式等等。
而Linux系统上同样也有很多不同类型的文件,常见的如
- -:表示常规文件,即f,其他程序会表示为f;
- d:directory,目录文件,完成路径映射;
- b:block device,块设备文件,支持以block为单位进行随机访问;
- c:character device,字符设备文件,支持以character为单位的线性访问;
- l:symbolic link,符号链接文件,可以找到文件的路径,也叫软链接;
- p:pipe,命名管道;
- s:socket,套接字文件,在两个进程直接进行通信时进行套接,主要用于服务提供。
2 命令行接口
我们使用Linux,都是因为其可以长期高效稳定的运作,特别是对于企业,稳定显得尤为重要,其次,Linux占用系统内存很小,我们可以尽情的压榨计算机的性能。最重要的是Linux的发行版有很多好用免费的版本。
虽然Linux也有图形界面(GUI),但使用命令行(CLI)效率更高,且能节省更多系统资源。基本上所有企业配置的服务器都不需要图形界面,试想,如果都安上了图形界面,那得多有钱才会那么干啊,况且也没必要,服务器只需要在那边跑就行了。
3 常用文件管理命令
类似于Windows系统,Linux系统中的文件也可以查看文件路径、文件属性、复制、粘贴、移动、创建、删除等等。此外,Linux还有一些特殊的文件管理命令。
在此只列出基本的语法格式,想要查更具体的用法,可用man
或help
命令:
3.1 文件查看:ls,file,tree,cat,tac,head,tail,more,less,stat,pwd
-
ls:list,列出指定目录下的内容,类似于Wndows下的文件列表。
ls [OPTION]... [FILE]...
-
file:查看文件内容类型。
file [FILE]...
例子:
file /etc/fstab
:显示etc目录下的fstab文件。
-
tree:层级显示文件,这个贼他妈好用,谁用谁知道。
-
cat:concatenate,文本文件查看工具,查看文件内容,无法编辑,就看一下。
cat [OPTION]... [FILE]...
例子:
cat -n /etc/fstab
:查看/etc/fstab文件并显示文件行数编号。
-
tac:将文件反序输出,与
cat
相反。 -
head:用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
head [OPTION]... [FILE]...
例子:
head -n5 /etc/fstab
:显示/etc目录下fstab文件的前5行内容。
-
tail:与head相反。
-
more:是一个基于vi编辑器文本过滤器,选项可参照vi编辑器,只能向前浏览。该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,给出至今己显示的该文件的百分比。
more [OPTIONS] FILE...
-
less:与more相反,允许用户向前或向后浏览文件。按Q键退出less程序。
-
stat:显示文件或文件系统状态。
stat [OPTIONS] FILE...
例子:
stat tmp...
:显示tmp目录文件的状态信息。
其中,值得注意的是Acess,Modify,Change这三个,它们分别代表时间戳里的- access time:最近访问时间
- modify time:最近数据更改时间
- change time:最近元数据更改时间。
- 元数据即为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。如上图所示,对于Linux来说,元数据指File、Size、Blocks、IO Block、directory、Device、Inode(文件索引节点号)、Links(硬链接次数)、Context(文件所在环境)、Uid、Gid、Access、Modify、Change、Birth。
-
pwd:显示当前文件路径。
3.2 文件管理:mkdir,rmdir,cp,mv,rm,install,mktemp
- mkdir:make directory,创建目录。也可用touch来创建文件。
mkdir [OPTION]... DIRECTORY
例子:
- 使用命令行展开功能,在/tmp目录下创建目录:x_y, x_z, q_y, q_z和/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b。
mkdir -p /tmp/{x_{y,z},q_{y,z}} /tmp/{a1/{a,b},a2}
- 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2018-05-27-09-32-22。
mkdir -p /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
-
rmdir:remove directory,用来删除空目录。
rmdir [OPTION]... DIRECTORY
注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。虽然还可以用带有-r选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。 -
cp:复制文件和目录。
单源复制 cp [OPTION]... [-T] SOURCE DEST
多源复制 cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
- mv:move,用来移动或重命名文件。
注意:如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变;如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
-
rm:remove,删除文件。
注意:所有不用的文件建议不要直接删除,而是移动到某个专用目录,用来模拟回收站。
rm [OPTION]... FILE...
-
install:复制文件并设置文件属性。
-
mktemp:创建临时文件。
注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来。
3.3 文件压缩:gzip/gunzip,bzip2/bunzip2,xz/unxz,zip/unzip,tar
- gzip/gunzip:以
.gz
结尾的压缩格式文件
gzip [OPTIONS] /PATH/TO/SOMEFILE...
-#:指明压缩比1-9,默认为6,数字越大,压缩比就越大
-d:decompress,解压缩,相当于gunzip
-c:将压缩后的数据输出至标准输出(默认为显示屏)
-r:递归至目录中对每个文件进行压缩
zcat /PATH/TO/SOMEFILE.GZ:无需显示解压缩便可查看压缩文件的内容
- bzip2/bunzip2:以
.bz2
结尾的压缩格式文件
bzip [OPTIONS] /PATH/TO/SOMEFILE...
-#:指明压缩比1-9,默认为6,数字越大,压缩比就越大
-d:decompress,解压缩,相当于bunzip2
-k:压缩后保留原文件
bzcat /PATH/TO/SOMEFILE.BZ2:无需显示解压缩便可查看压缩文件的内容
- xz/unxz:以
.xz
结尾的压缩格式文件
xz [OPTIONS] /PATH/TO/SOMEFILE...
-#:指明压缩比1-9,默认为6,数字越大,压缩比就越大
-d:decompress,解压缩,相当于bunzip2
-k:压缩后保留原文件
xzcat /PATH/TO/SOMEFILE.BZ2:无需显示解压缩便可查看压缩文件的内容
-
zip/unzip:以
.zip
结尾的压缩格式文件,可以将多个文件压缩归档指单个文件
zip ZIP_FILE.zip /PATH/TO/SOMEFILE
-
tar:可进行归档和压缩文件,归档就是将多个文件打包为单个文件以便于管理,默认的归档不会执行压缩,归档不会删除原文件
tar [OPTIONS] -c -f /PATH/TO/TARFILE.tar /PATH/TO/FILE...
-cf:归档并压缩
-xf:展开归档,可直接使用,不用指定对应的压缩工具
-z:对应于gzip,压缩后的文件后缀名为.tar.gz
-j:对应于bzip2,压缩后的文件后缀名为.tar.bz2
-J:对应于xz,压缩后的文件后缀名为.tar.xz
4 常用文本处理命令:wc,cut,sort,uniq
- wc:字符统计
- cut:文本内容切割
- sort:排序
- uniq:显示重复的行
5 常用用户、组管理命令
Linux操作系统是多任务(Multi-tasks)、多用户(Multi-users)的分时操作系统。不管是Linux系统还是WIndows系统,为了保证用户系统和数据资料的安全,需要对每个登陆的用户进行验证,即账户密码,又对每个用户对应的权限有所限制,而一旦拥有相同权限的人多了,就可以把那些用户分在一起,所以有了组,可以理解为权限狗系统用户。
查看用户信息
Linux系统中用户的登录信息存储在**/etc/passwd** 中,其显示格式为:
name:password:UID:GID:GECOS:directory:shell
name:用户登录的名字
password:为用户加密的密码,如果显示为字符x,则表示密码存储在/etc/shadow文件中
UID:用户标识
GID:用户所属基本组的组标识
GECOS:备注信息
directory:用户的家目录
shell:用户的默认shell
查看组信息
与Linux用户组信息相关的文件包括:/etc/group,/etc/gshadow
用户存储在/etc/group里面的信息格式为:
group_name:password:GID:user_list
group_name:用户组的名字;
password:加密的用户组密码;
GID:用户组标识;
user_list:以此组为附加组的用户列表;
4.1 用户管理:useradd,usermod,userdel,passwd,change,id
在Linux系统中,每个使用该系统的人称之为用户(User),而用户标识(UID) 则是每个用户的唯一标识,每个用户的登录名(UserID)和用户标识(UID)在Linux系统中一一对应,通过名称解析库来转换。
用户类别:
管理员:root,其用户标识(UID)为0。
普通用户
系统用户:为了让后台进程和服务类进程能够以非管理员身份运行,通常需要为此创建多个普通用户,此类用户不需要登录到系统中。
登录用户:正常登录及访问系统时需要登录的用户账号。
用户标识:UserID,UID
16bits:二进制数字:0-65535
管理员:0
普通用户:1-65535
系统用户:1-499(CentOS6),1-999(CentOS7)
登录用户:500-60000(CentOS6),1000-60000(CentOS7)
名称解析:名称转换
UserID<- ->UID
根据名称解析库进行转换:/etc/passwd
- useradd:创建用户
- usermod:修改用户属性
- userdel:删除用户
- passwd:设置用户的认证信息,包括用户密码、过期时间等。
- change:更改用户密码过期信息
- id: 显示用户的真实有效ID
- chmod:可以更改用户权限
- chown:可以更改用户属主和属组
- chgrp:更改属组
- umask::文件的权限反向掩码,遮罩码;新建文件或目录的权限是减去umask所得
4.2 组管理:groupadd,groupmod,groupdel,gpasswd,newgrp
- groupadd:添加组
- groupmod:修改组属性
- groupdel:删除组
- gpasswd:管理组
- newgrp:临时切换指定的组为基本组