目录相关操作:
cd:变换目录
pwd:显示目前的目录
mkdir:创建一个新的目录
rmdir:删除一个空的目录
rm -r : 删除非空目录
1 文件与目录的检视: ls
-l :长数据串行出,包含文件的属性与权限等等数据;(常用)
-a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
-A :全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录
2 复制、删除与移动: cp, rm, mv
- cp (复制文件或目录)
-a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用)
-d :若来源文件为链接文件的属性(link file) ,则复制链接文件属性而非文件本身;
-r :递回持续复制,用于目录的复制行为;(常用)
-p :连同文件的属性(权限、用户、时间) 一起复制过去,而非使用默认属性(备份常用) ;
-f :为强制(force) 的意思,若目标文件已经存在且无法打开,则移除后再尝试一次;
-i :若目标文件(destination) 已经存在时,在覆盖时会先询问动作的进行(常用)
复制(cp) 这个指令是非常重要的,不同身份者执行这个指令会有不同的结果产生,尤其是那个-a, -p的选项, 对于不同身份来说,差异则非常的大!
在默认的条件中, cp 的来源文件与目的文件的权限是不同的,目的文件的拥有者通常会是指令操作者本身。 由于具有这个特性,因此当我们在进行备份的时候,某些需要特别注意的特殊权限文件, 例如密码档 (/etc/shadow) 以及一些配置文件,就不能直接以 cp 来复制,而必须要加上 -a或者是 -p 等等可以完整复制文件权限的选项才行
rmdir 仅能删除空目录,要删除非空目录需使用“ rm -r ”指令
3 文件内容查阅
- cat 由第一行开始显示文件内容 如果加上 -n 或 -b 的话,则每一行前面还会加上行号呦!
-A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E :将结尾的断行字符 $ 显示出来;
-n :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T :将 [tab] 按键以 ^I 显示出来;
-v :列出一些看不出来的特殊字符
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
- od 以二进制的方式读取文件内容!
4 修改文件时间或创建新文件: touch
- modification time (mtime) : 当该文件的“内容数据”变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔!
- status time (ctime) : 当该文件的“状态 (status) ”改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间啊。
- access time (atime) : 当“该文件的内容被取用”时,就会更新这个读取时间(access) 。举例来说,我们使用 cat 去读取 /etc/man_db.conf , 就会更新该文件的atime 了。
在默认的情况下,ls 显示出来的是该文件的 mtime ,也就是这个文件的内容上次被更动的时间。
ls -l --time=atime
ls -l --time=ctime
无论如何, touch 这个指令最常被使用的情况是:
- 创建一个空的文件;
- 将某个文件日期修订为目前 (mtime 与 atime)
5 文件默认权限:umask
umask 就是指定 “目前使用者在创建文件或目录时候的权限默认值”, 那么如何得知或设置 umask 呢?他的指定条件以下面的方式来指定:
[root@study ~]# umask
0022 <==与一般权限有关的是后面三个数字!
[root@study ~]# umask -S
u=rwx,g=rx,o=rx
指令与文件的搜寻
1 指令文件名的搜寻
- which (寻找“可执行文件”)
这个指令是根据“PATH”这个环境变量所规范的路径,去搜寻“可执行文件”的文件名~ 所以,重点是找出“可执行文件”而已!且 which 后面接的是“完整文件名”喔!若加上 -a 选项,则可以列出所有的可以找到的同名可执行文件,而非仅显示第一个而已!
2 文件文件名的搜寻
通常 find 不很常用的!因为速度慢之外, 也很操硬盘!一般我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻呦! 为什么呢?因为 whereis 只找系统中某些特定目录下面的文件而已,locate 则是利用数据库来搜寻文件名,当然两者就相当的快速, 并且没有实际的搜寻硬盘内的文件系统状态,比较省时间啦!
- whereis (由一些特定的目录中寻找文件文件名)
whereis 主要是针对 /bin /sbin 下面的可执行文件, 以及 /usr/share/man 下面的 man page 文件,跟几个比较特定的目录来处理而已。想要知道 whereis 到底查了多少目录?可以使用 whereis -l 来确认一下即可!
- locate / updatedb
这个 locate 的使用更简单,直接在后面输入“文件的部分名称”后,就能够得到结果。 举上面的例子来说,我输入 locate passwd ,那么在完整文件名 (包含路径名称) 当中,只要有passwd 在其中, 就会被显示出来的!这也是个很方便好用的指令,如果你忘记某个文件的完整文件名时。 locate 寻找的数据是由“已创建的数据库 /var/lib/mlocate/” 里面的数据所搜寻到的,所以不用直接在去硬盘当中存取数据,呵呵!当然是很快速啰。
但是他是经由数据库来搜寻的,而数据库的创建默认是在每天执行一次 (每个 distribution 都不同,CentOS 7.x 是每天更新数据库一次!) ,所以当你新创建
起来的文件, 却还在数据库更新之前搜寻该文件,那么 locate 会告诉你“找不到!”呵呵!因为必须要更新数据库呀!
新 locate 数据库的方法非常简单,直接输入“updatedb ”就可以了! updatedb 指令会去读取 /etc/updatedb.conf 这个配置文件的设置,然后再去硬盘里面进行搜寻文件名的动作, 最后就更新整个数据库文件啰!因为 updatedb 会去搜寻硬盘,所以当你执行 updatedb 时,可能会等待数分钟的时间喔。
- 利用 find 可以加入许多选项来直接查询文件系统,以获得自己想要知道的文件名。
实体链接与符号链接: ln
在 Linux 下面的链接文件有两种,一种是类似 Windows 的捷径功能的文件,可以让你快速的链接到目标文件(或目录) ; 另一种则是通过文件系统的 inode 链接来产生新文件名,而不是产生新文件!这种称为实体链接 (hard link) 。 这两种玩意儿是完全不一样的东西呢!现在就分别来谈谈。
- Symbolic Link (符号链接,亦即是捷径)
相对于 hard link , Symbolic link 可就好理解多了,基本上, Symbolic link 就是在创建一个独立的文件,而这个文件会让数据的读取指向他 link 的那个文件的文件名!由于只是利用文件来做为指向的动作, 所以,当来源文件被删除之后,symbolic link 的文件会“开不了”, 会一直说“无法打开某文件!”。实际上就是找不到原始“文件名”而已啦!
- Hard Link (实体链接, 硬式链接或实际链接)
[root@study ~]# ln [-sf] 来源文件 目标文件
选项与参数:
-s :如果不加任何参数就进行链接,那就是hard link,至于 -s 就是symbolic link
-f :如果 目标文件 存在时,就主动的将目标文件直接移除后再创建!