引:在使用Linux的过程中,最多的命令莫过于在操作文件与目录,所以通过本文,能让你大概率熟悉所有关于文件与目录的命令与知识,但是参数方面就需要自己去查询了。
目录与路径
绝对路径和相对路径
- 绝对路径:路径的写法一定由根目录/写起。
- 相对路径:路径的写法是相对于当前工作目录写的。
目录的相关操作
特殊目录列表
- . :当前目录
- .. :上层目录
- - :前一个工作目录
- ~ :登陆用户的主文件夹
- ~account :这个用户的主文件夹 (account是个账号名称)
常见目录处理的命令
- cd:切换目录
- pwd:显示当前目录
- mkdir:新建一个新的目录
- rmdir:删除一个空的目录,删除非空目录需要使用rm -r
- 好习惯:经常利用Tab键快速完整地输入目录或命令
环境变量PATH
当我们执行命令:ls -al的时候,系统会按照PATH设置的路径,去这些路径中寻找ls这个文件,并执行。如果PATH路径中有多个ls文件,那么先找到的那个ls文件被执行。
1
2
3
4// 查看PATH
echo $PATH
// 在PATH中添加路径/demo
PATH="$PATH":/demo对于PATH我们有几点需要清楚:
- 不同身份用户默认的PATH不同,默认能够随意执行的命令也不同,差异较大的地方在于/sbin和/usr/sbin。
- PATH是可以修改的,所以一般用户还是可以通过修改PATH来执行某些位于/sbin或/usr/sbin下的命令来查询。
- 使用绝对路径或相对路径直接指定某个命令的文件名来执行。
- 命令应该要放在正确的目录下,执行才会比较方便。
- 本目录(.)最好不要放到PATH当中,因为本目录会变化。
文件和目录管理
在文件与目录的管理上,不外乎“显示属性”、“复制”、“删除文件”、“移动目录或文件”等。下面这这种管理动作的具体指令:
- 显示属性
ls
- 复制
cp
- 删除
rm
- 移动(重命名)
mv
这些指令的具体参数,希望大家能够通过man info去熟悉。
我们可以通过下面的命令去取得路径的文件名与目录名称:1
2
3
4// 取得文件名称
basename /etc/sysconfig/network
// 取得文件目录
dirname /etc/sysconfig/network
文件内容查阅
主要有下面一些命令:
命令 | 作用 |
---|---|
cat | 由第一行开始显示文件内容 |
tac | 从最后一行开始显示,可以看出tac是cat的到写形式 |
nl | 显示的时候,顺便输出符号 |
more | 一页一页显示文件内容 |
less | 与more类似,但是比more更好的是,它可以往前翻页 |
head | 只看头几行 |
tail | 只看尾几行 |
od | 以二进制的方式读取文件内容 |
文件与目录的默认权限和隐藏权限
除了基本的rwx权限之外,Linux的ext2/ext3文件系统下,我们还可以设置系统隐藏属性,它可以用chattr来设置,用lsattr来查看。最重要的属性就是可以设置文件/目录为不可修改,这可以让文件所有者都不能进行修改,这对于安全性方面是非常重要的。
文件的默认权限:umask
umask指定了目前用户在新建文件或目录时候的权限默认值。
指定了以下面的方式来指定:1
2
3
4
5
6
7[root@VM_0_9_centos ~]# umask
0022 // 与一般权限有关的是后面是三个数字(表示不拥有该数值的权限,此例就表示group不拥有w,others不拥有w)
[root@VM_0_9_centos ~]# umask -S
u=rwx,g=rx,o=rx
// 设置默认权限
umask 002
在默认权限的属性上,目录与文件是不一样的,x权限对于目录是非常重要的,但是一般文件的创建则不应该拥有执行权限。所以默认情况下:
- 若用户创建“文件”则默认没有可执行权限,默认权限为666,即-rw-rw-rw-
- 若用户创建“目录”则默认拥有可执行权限,默认权限为777,即drwxrwxrwx
文件隐藏属性chattr,lsattr
chattr 设置文件的隐藏属性
注意参数a(文件只能增加数据,不能删除也不能修改数据)和i(不能 删除,修改)
- lsattr 显示文件隐藏属性
文件的特殊权限SUID,SGID,SBIT
- SUID(u+s,如x为空,则出现大S),限制与功能如下:
- SUID权限仅对二进制程序有效
- 执行者对于该程序需要x的可执行权限
- 本权限仅在执行该程序的过程中有效
- 执行者将具有该程序所有者的权限
- SGID(g+s,如x为空,则出现大S),对于文件功能与SUID类似,但是对于目录有如下功能:
- 用户若对于此目录具有r与x的权限时,该用户能够进入此目录
- 用户在此目录下得有效用户组将变成该目录的用户组
- 若用户在此目录下具有w的权限(可以新建文件),则用户所创建的新文件的用户组与此目录的用户组相同
- SBIT(o+t,如x为空,则出现大T),目前只针对目录有效,它的作用如下:
- 当用户对于此目录具有w,x权限,即具有写入的权限时,当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件。
查看文件类型:file
如果想知道某个文件的基本数据,就可以使用file这个命令查看。
文件与命令的查询
脚本文件名的查询
如果你想知道类似ls这种命令的脚本放在哪里,就通过which或type来找寻。
which命令是根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。
文件名的查找
通常find不很常用,因为速度慢,通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来查找,因为whereis与loacate是利用数据库来查询数据的,而find是直接查找硬盘的。
- whereis:寻找特定文件
- locate:根据文件的部分名称查找,由于是查询数据库的,而数据库是当晚更新,所以你新建文件是查找不到的,可以利用updatedb手动更新,但是较慢。
- find:参数很多,自己用的时候需要使用man page自行了解。
文件与文件系统的压缩与打包
常见的压缩命令
不同的压缩打包技术,对应着不同的解压缩拆包技术,所以在Linux中用后缀名来分辨压缩打包技术,如下表:
后缀 | 压缩打包技术 |
---|---|
*.Z | compress程序压缩 |
*.gz | gzip程序压缩 |
*.bz2 | bzip2程序压缩 |
*.tar | tar程序打包,未压缩 |
*.tar.gz | tar程序打包,gzip程序压缩 |
*.tar.bz2 | tar程序打包,bzip2程序压缩 |
由于compress已经不再流行,所有我们主要讲解gzip和gzip2:
gzip,zcat(用来替代compress)
目前gzip可以解开compress、zip与gzip等软件压缩的文件。可以看一下下面的案例:
1
2
3
4
5
6// 1. 压缩文件
gzip -v 文件名 // 参数v显示压缩比
// 2. 查看压缩文件内容
zcat 压缩文件
// 3. 解压缩
gzip -d 压缩文件名 // 参数d表示解压缩bzip2,bzcat(用来替代gzip)
使用方法与gzip基本相同,不再赘述。
打包命令
在压缩文件夹之前需要打包,然后我们就需要用到大名鼎鼎的tar,下面通过命令来具体介绍他的使用:1
2
3
4
5
6// 1. 压缩,参数的含义自己去用man page查看
tar -jcv -f filename.tar.bz2 // 要被压缩的文件或目录名称,tar并不会主动产生创建的文件名
// 2. 查询
tar -jtv -f filename.tar.bz2
// 3. 解压缩
tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录(如:/tmp)
对于只是打包没有压缩的文件叫做tarfile
对于打包了并且压缩的文件叫做tarball
完整备份工具
- dump 备份
- restore 恢复
参考
- 《鸟哥的Linux私房菜》