linux读书摘要-linux文件与目录管理

声明:本文章为《鸟哥的linux私房菜》读书摘要!


绝对路径与相对路径

    绝对路径:由根目录(/)开始写起的文件名或目录名称,例如 /home/dmtsai/.bashrc;
    相对路径:相对于目前路径的文件名写法。例如 ./home/dmtsai 或../../home/dmtsai/ 等等。反正开头不是 /就属于相对路径的写法、

    相对路径是以『你当前所在路径的相对位置』来表示的。举例来说,你目前在 /home这个目录下,如果想要进入 /var/log 这个目录时,可以怎么写呢?

    1、cd /var/log (absolute)

    2、cd ../var/log (relative)

以上两种方法都对。关于相对路径的还有如下规则

.代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表『目前用户身份』所在的家目录

~account代表account这个用户的家目录(account是个账号名称)

目录操作中几个常用的命令

    cd:变换目录
    pwd:显示当前目录
    mkdir:建立一个新的目录
    rmdir:删除一个空的目录

cd (change directory,变换目录)

pwd (显示目前所在的目录)
    pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的指令。注意-P的用法非常实用。

mkdir (建立新目录)

文件预设权限:umask

    umask 就是指定 『 目前用户在建立文件或目录时候的权限默认值』

    查阅的方式有两种,一种可以直接输入 umask ,就可以看到数字型态的权限设定分数, 一种则是加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限了

    在默认权限的属性上,目录与文件是不一样的。我们知道 x 权限对于目录是非常重要的! 但是一般文件的建立则不应该有执行的权限。因此若使用者建立为『 文件』则预设『没有可执行( x )权限』,亦即只有 rw 这两个项目,也就是最大为 666 分,
预设权限如下:-rw-rw-rw-。若用户建立为『目录』,则由于 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为 777 分,预设权限如下:drwxrwxrwx。

    要注意的是, umask 的分数指的是『该默认值需要减掉的权限!』。比如当umask为022时,有如下情况

    建立文件时:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--
    建立目录时: (drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

    对于umask的设定直接在umask后面跟设定值即可。

    在预设的情况中,root的umask会拿掉比较多的属性,root的umask默认是022,这是基于安全的考虑啦~至于一般身份使用者,通常他们的umask为002,亦即保留同群组的写入权力。


关于执行文件路径的变量:$PATH
    当我们在执行一个指令的时候,举例来说『 ls』好了,系统会依照 PATH 的设定去每个 PATH 定义的目录下搜寻文件名为 ls 的可执行文件, 如果在 PATH 定义的目录中含有多个文件名为 ls 的可执行文件,那么先搜寻到的同名指令先被执行!

           echo 有『显示、印出』的意思,而 PATH 前面加的 $ 表示后面接的是变量,所以会显示出目前的 PATH

    PATH(一定是大写)这个变量的内容是由一堆目录所组成的,每个目录中间用冒号(:)来隔开, 每个目 录是有『顺序』之分的。仔细看一下上面的输出,妳可以发现到无论是 root 还是 dmtsai 都有 /bin 或 /usr/bin 这个目录在 PATH 变量内,所以当然就能够在任何地方执行 ls 来找到/bin/ls 执行档。

    不同身份使用者预设的 PATH 不同,默认能够随意执行的指令也不同(如 root 与 dmtsai);
    PATH 是可以修改的;
    使用绝对路径或相对路径直接指定某个指令的文件名来执行,会比搜寻 PATH 来的正确;
    指令应该要放置到正确的目录下,执行才会比较方便;
    本目录(.)最好不要放到 PATH 当中。

    要复制文件,请使用 cp (copy) 这个指令即可~不过, cp 这个指令的用途可多了~ 除了单纯的复制之外,还可以建立连结档 (就是快捷方式啰),比对两文件的新旧而予以更新, 以及复制整个目录等等的功能呢!至于移动目录与文件,则使用 mv (move), 这个指令也可以直接拿来作更名 (rename)的动作喔!至于移除吗?那就是 rm (remove) 这个指令

cp (复制文件或目录)

rm (移除文件或目录)

mv (移动文件与目录,或更名)

    关于cp、rm、mv指令的具体用法还需要根据实际操作,需要注意的很多,实际应用时要注意。mv指令是对单个文件的更名,在linux中还有一个rename指令是专职对多个档名同时更名。这一点需要区分。


文件内容的查阅

    之间有介绍过使用nano指令可以查阅文件,也可以修改文件。这里再罗列几个指令

    cat由第一行开始显示文件内容
    tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
    nl 显示的时候,顺道输出行号!
    more 一页一页的显示文件内容
    less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
    head 只看头几行
    tail 只看尾巴几行
    od 以二进制的方式读取文件内容!

    less指令使用的画面与之前的man指令的画面非常的相似。这是因为实际上man这个指令就是呼叫less来显示说明文件的内容的。关于这些指令的具体应用可以使用man指令来查看。


修改文件时间或建置新档;touch

    每个文件在 linux 底下都会记录许多的时间参数, 其实是有三个主要的变动时间
    modification time (mtime):
    当该文件的『内容数据』变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔!
    status time (ctime):
    当该文件的『状态 (status)』改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间啊。
    access time (atime):
    当『该文件的内容被取用』时,就会更新这个读取时间 (access)。举例来说,我们使用 cat 去读取/etc/man_db.conf,就会更新该文件的atime了。

    在默认的情况下, ls 显示出来的是该文件的 mtime ,也就是这个文件的内容上次被更动的时间。
    touch 这个指令最常被使用的情况是:
    建立一个空的文件;
    将某个文件日期修订为目前 (mtime 与 atime)

    关于权限应用的两个例题


文件的隐藏属性

chattr(配置文件案隐藏属性)

lsattr(显示文件隐藏属性)


文件的特殊权限,SUID,SGID,SBIT

    4 为 SUID
    2 为 SGID
    1 为 SBIT
    假设要将一个文件权限改为『 -rwsr-xr-x』时,由于 s 在用户权力中,所以是 SUID ,因此, 在原先的 755 之前还要加上 4 ,也就是:『chmod 4755 filename 』来设定

    最后一个例子就要特别小心啦!怎么会出现大写的 S 与 T 呢?不都是小写的吗?因为 s 与 t 都是取代 x 这个权限的,但是你有没有发现阿,我们是下达 7666 喔!也就是说, user, group 以及others 都没有 x 这个可执行的标志( 因为 666 嘛 ),所以,这个 S, T 代表的就是『空的』啦!怎么说? SUID 是表示『该文件在执行的时候,具有文件拥有者的权限』,但是文件 拥有者都无法执行了,哪里来的权限给其他人使用?当然就是空的啦! ^_^

file指令用来检阅文件类型

which(寻找“执行档”)(这个指令是根据『 PATH』这个环境变量所规范的路径,去搜寻『执行档』的档名)


    最后一个范例最有趣,怎么 history 这个常用的指令竟然找不到啊!为什么呢?这是因为 history 是『 bash 内建的指令』

    搜寻文件吧!在 Linux 底下也有相当优异的搜寻指令呦!通常 find 不很常用的!因为速度慢之外, 也很操硬盘!一般我们都是先使用 whereis 或者是 locate 来检查,如果真的找不到了,才以 find 来搜寻呦! 为什么呢?因为 whereis 只找系统中某些特定目录底下的文件而已(whereis 主要是针对 /bin /sbin 底下的执行档,以及 /usr/share/man 底下的 man page 文件),locate则是利用数据库来搜寻文件名(locate 寻找的数据是由『 已建立的数据库 /var/lib/mlocate/』 里面的数据所搜寻到的),当然两者就相当的快速,并且没有实际的搜寻硬盘内的文件系统状态,比较省时间
whereis(由一些特定的目录中寻找文件文件名)


locate/updatedb

    数据库的建立默认是在每天执行一次 (每个 distribution 都不同, CentOS 7.x 是每天更新数据库一次! ),所以当你新建立起来的文件, 却还在数据库更新之前搜寻该文件,那么 locate 会告诉你『找不到!』呵呵!因为必须要更新数据库呀!
    updatedb:根据 /etc/updatedb.conf 的设定去搜寻系统硬盘内的文件名,并更新 /var/lib/mlocate 内的数据库文件;
    locate:依据 /var/lib/mlocate 内的数据库记载,找出用户输入的关键词文件名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值