`

第二部分 Linux 文件、目录与磁盘格式 - Chapter 7 Linux文件和目录管理

阅读更多



# 目录与路径

    * 相对路径与绝对路径 (略)

    * 目录的相关操作
        .         代表此层目录
        ..        代表上一层目录
        -         代表前一个工作目录
        ~         代表『目前使用者身份』所在的家目录
        ~account  代表 account 这个使用者的家目录

        ** cd∶变换目录
        ** pwd∶显示目前的目录 -p
        ** mkdir∶建立一个新的目录 -m -p
        ** rmdir∶删除一个空的目录 -p
    * 关于执行文件路径的变量(环境变量)∶ $PATH

# 文件与目录管理
    * 查看文件与目录∶ ls
        参数∶
        -a  ∶全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来~
        -A  ∶全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录,一起列出来~
        -d  ∶仅列出目录本身,而不是列出目录内的文件数据
        -f  ∶直接列出结果,而不进行排序 (ls 预设会以档名排序!)
        -F  ∶根据文件、目录等资讯,给予附加数据结构,例如∶
              *∶代表可执行档; /∶代表目录; =∶代表 socket 文件; |∶代表 FIFO 文件;
        -h  ∶将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来;
        -i  ∶列出 inode 位置,而非列出文件属性;
        -l  ∶长数据串列出,包含文件的属性等等数据;
        -n  ∶列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!)
        -r  ∶将排序结果反向输出,例如∶原本档名由小到大,反向则为由大到小;
        -R  ∶连同子目录内容一起列出来;
        -S  ∶以文件容量大小排序!
        -t  ∶依时间排序
        --color=never  ∶不要依据文件特性给予颜色显示;
        --color=always ∶显示颜色
        --color=auto   ∶让系统自行依据设定来判断是否给予颜色
        --full-time    ∶以完整时间模式 (包含年、月、日、时、分) 输出
        --time={atime,ctime} ∶输出 access 时间或 改变权限属性时间 (ctime)
                               而非内容变更时间 (modification time)

    * 复制、移动与删除∶ cp, rm, mv

        ** cp  (复制文件或目录)

        $ cp [-adfilprsu] 源文件(source) 目标文件(destination)

        如果源文件有两个以上,则最后一个目标文件一定要是『目录』才行,即
        $ cp [options] source1 source2 source3 .... directory

            -p  ∶连同文件的属性一起复制过去,而非使用默认属性;
            -d  ∶若来源文件为链接文件(link file),则复制链接文件属性而非文件本身;
            -r  ∶递归连续复制,用于目录的复制行为;
            -a  ∶相当于 -pdr 的意思;

            -u  ∶若 destination 比 source 旧才更新 destination !
            -i  ∶若目标文件(destination)已经存在时,在覆盖时会先询问是否真的动作!
            -f  ∶为强制 (force) 的意思,若有重复或其他疑问时,不会询问用户,而强制复制;

            -l  ∶创建硬链接 (hard link) 的链接文件,而非复制文件本身;
            -s  ∶复制成为符号链接文件(symbolic link),亦即『快捷方式』文件;

        ** rm  (移除文件或目录)

        $ rm [-fir] 文件或目录

            -f  ∶就是 force 的意思,强制删除;
            -i  ∶互动模式,在删除前会询问用户是否动作
            -r  ∶递归删除,最常用在目录的删除了



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

        $ mv [-fiu] 源文件 目标文件
        $ mv [options] source1 source2 source3 .... directory
       
        -f  ∶force 强制的意思,强制直接移动而不询问;
        -i  ∶若目标文件 (destination) 已经存在时,就会询问是否覆盖!
        -u  ∶若目标文件已经存在,且 source 比较新,才会更新 (update)

    * 取得路径的文件名称与目录名称
    $ basename /etc/sysconfig/network
    $ dirname /etc/sysconfig/network


# 查看文件内容
    * cat  由第一行开始显示文件内容

        $ cat [-AEnTv] 文件

        参数∶
        -A  ∶相当于 -vET 的整合参数,可列出一些特殊字符~
        -E  ∶将结尾的断行字元 $ 显示出来;
        -n  ∶列印出行号;
        -T  ∶将 [tab] 按键以 ^I 显示出来;
        -v  ∶列出一些看不出来的特殊字符


    * tac  从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
        $ tac 文件


    * nl   显示的时候,顺道输出行号!
        $ nl [-bnw] 文件
        参数∶
        -b  ∶指定行号指定的方式,主要有两种∶
              -b a ∶表示不论是否为空行,也同样列出行号;
              -b t ∶如果有空行,空的那一行不要列出行号;
        -n  ∶列出行号表示的方法,主要有三种∶
              -n ln ∶行号在屏幕的最左方显示;
              -n rn ∶行号在自己栏位的最右方显示,且不加 0 ;
              -n rz ∶行号在自己栏位的最右方显示,且加 0 ;
        -w  ∶行号栏位的占用的位元数。


    * more 一页一页的显示文件内容
        $ more 文件
            *  空格键 (space)∶代表向下翻一页;
            * Enter          ∶代表向下翻『一行』;
            * /字符串        ∶代表在这个显示的内容当中,向下搜寻『字符串』;
            * :f             ∶立刻显示出文件名以及目前显示的行数;
            * q              ∶代表立刻离开 more ,不再显示该文件内容。


    * (常用) less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
        $ less 文件
            *  空格键    ∶向下翻动一页;
            * [pagedown]∶向下翻动一页;
            * [pageup]  ∶向上翻动一页;
            * /字串     ∶向下搜寻『字串』的功能;
            * ?字串     ∶向上搜寻『字串』的功能;
            * n         ∶重复前一个搜寻 (与 / 或 ? 有关!)
            * N         ∶反向的重复前一个搜寻 (与 / 或 ? 有关!)
            * q         ∶离开 less 这个程序;

    * head 只看头几行
        $ head [-n number] 文件
        参数∶
        -n  ∶后面接数字,代表显示几行的意思


    * (常用) tail 只看尾巴几行
        $ tail [-n number] 文件

        参数∶
        -n  ∶后面接数字,代表显示几行的意思

    * od   以二进位的方式读取文件内容!
        $ od [-t TYPE] 文件
        参数∶
        -t  ∶后面可以接各种『类型 (TYPE)』的输出,例如∶
              a       ∶利用预设的字元来输出;
              c       ∶使用 ASCII 字元来输出
              d[size] ∶利用十进位(decimal)来输出数据,每个整数占用 size bytes ;
              f[size] ∶利用浮点数值(floating)来输出数据,每个数占用 size bytes ;
              o[size] ∶利用八进位(octal)来输出数据,每个整数占用 size bytes ;
              x[size] ∶利用十六进位(hexadecimal)来输出数据,每个整数占用 size bytes ;


# 修改文件时间与建立新文件∶ touch
    *  建立一个空的文件;
        $ touch 新文件

    * 将某个文件日期修订为目前 (mtime 与 atime)
        $ touch [-acdmt] 文件


# 文件与目录的默认权限与隐藏属性

## 文件默认权限

    * 查看当前默认权限
        $ umask [-S]

    * 修改当前默认权限
        $ umask 002


## 文件隐藏属性

    * chattr (设定文件隐藏属性)

        $ chattr [+-=][ASacdistu] 文件或目录名称

        参数∶
        +   ∶增加某一个特殊参数,其他原本存在参数则不动。
        -   ∶移除某一个特殊参数,其他原本存在参数则不动。
        =   ∶设定一定,且仅有后面接的参数

        A  ∶当设定了 A 这个属性时,这个文件(或目录)的存取时间 atime (access)
             将不可被修改,可避免例如手提式电脑容易有磁碟 I/O 错误的情况发生!
        S  ∶这个功能有点类似 sync 的功能!就是会将数据同步写入磁碟当中!
             可以有效的避免数据流失!
        a  ∶当设定 a 之后,这个文件将只能增加数据,而不能删除,只有 root
             才能设定这个属性。
        c  ∶这个属性设定之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,
             但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)
        d  ∶当dump(备份)程序被执行的时候,设定 d 属性将可使该文件(或目录)不具有dump功能
        i  ∶这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、设定连结也无法写入
             或新增数据!』对于系统安全性有相当大的助益!
        j  ∶当使用 ext3 这个文件系统格式时,设定 j 属性将会使文件在写入时先记录在
             journal 中!但是当 filesystem 设定参数为 data=journalled 时,由于已经设定了
             日了,所以这个属性无效!
        s  ∶当文件设定了 s 参数时,他将会被完全的移除出这个硬碟空间。
        u  ∶与 s 相反的,当使用 u 来设定文件时,则数据内容其实还存在磁碟中,
             可以使用来 undeletion.
        注意∶这个属性设定上面,比较常见的是 a 与 i 的设定值,而且很多设定值必须要身为
        root 才能够设定的喔!

    * lsattr (显示文件隐藏属性)

        $ lsattr [-aR] 文件或目录
        参数∶
        -a ∶将隐藏档的属性也秀出来;
        -R ∶连同子目录的数据也一并列出来!


## 文件特殊权限∶ SUID/SGID/Sticky Bit
    * Set UID
    会制作出 s 与 t 的权限,是为了让一般使用者在执行某些程序的时候, 能够暂时的具有该程序拥有者的权限。

    SUID 仅可用在『二进位制文件(binary file)』上

    * Set GID
        **  文件∶如果 SGID 是设定在 binary file 上面,则不论使用者是谁,在执行该程序的时候, 他的有效群组 (effective group) 将会变成该程序的群组所有人 (group id)。

        ** 目录∶如果 SGID 是设定在 A 目录上面,则在该 A 目录内所建立的文件或目录的 group ,将会是 此 A 目录的 group !

    * Sticky Bit
    这个 Sticky Bit 目前只针对目录有效,对于文件已经没有效果了。
    SBit 对于目录的作用是∶『在具有 SBit 的目录下,使用者若在该目录下具有 w 及 x 的权限, 则当使用者在该目录下建立文件或目录时,只有文件拥有者与 root 才有权力删除』。

    * SUID/SGID/SBIT 权限设定
        4 为 SUID
        2 为 SGID
        1 为 Sticky bit

    假设要将一个文件属性改为『-rwsr-xr-x』时,由于 s 在使用者权限中,所以是 SUID ,因此, 在原先的 755 之前还要加上 4 ,也就是∶『 chmod 4755 filename 』来设定。

## 查看文件类型∶file
    $ file 文件


# 文件的搜寻
    * (常用 & 重点) which (寻找『可执行文件』)
        $ which [-a] command
        参数∶
        -a ∶将所有可以找到的指令均列出,而不止第一个被找到的指令名称


    * (常用 & 重点) whereis (寻找特定文件)
        $ whereis [-bmsu] 文件或目录名
        参数∶
        -b    :只找 binary 的文件
        -m    :只找在说明档 manual 路径下的文件
        -s    :只找 source 来源文件
        -u    :没有说明档的文件!


    * locate
        $ locate 文件

    * (常用 & 重点) find
        $ find [PATH] [option] [action]
        参数∶
        1. 与时间有关的参数∶
           -atime n ∶n 为数字,意义为在 n 天之前的『一天之内』被 access 过的文件;
           -ctime n ∶n 为数字,意义为在 n 天之前的『一天之内』被 change 过状态的文件;
           -mtime n ∶n 为数字,意义为在 n 天之前的『一天之内』被 modification 过的文件;
           -newer file ∶file 为一个存在的文件,意思是说,只要文件比 file 还要新,
                         就会被列出来~
        2. 与使用者或群组名称有关的参数∶
           -uid n ∶n 为数字,这个数字是使用者的帐号 ID,亦即 UID ,这个 UID 是记录在
                    /etc/passwd 里面与帐号名称对应的数字。这方面我们会在第四篇介绍。
           -gid n ∶n 为数字,这个数字是群组名称的 ID,亦即 GID,这个 GID 记录在
                    /etc/group,相关的介绍我们会第四篇说明~
           -user name ∶name 为使用者帐号名称喔!例如 dmtsai
           -group name∶name 为群组名称喔,例如 users ;
           -nouser    ∶寻找文件的拥有者不存在 /etc/passwd 的人!
           -nogroup   ∶寻找文件的拥有群组不存在于 /etc/group 的文件!
                        当您自行安装软体时,很可能该软体的属性当中并没有文件拥有者,
                        这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。
        3. 与文件权限及名称有关的参数∶
           -name filename∶搜寻文件名称为 filename 的文件;
           -size [+-]SIZE∶搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有∶
                           c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB
                           还要大的文件,就是『 -size +50k 』
           -type TYPE    ∶搜寻文件的类型为 TYPE 的,类型主要有∶一般正规文件 (f),
                           装置文件 (b, c), 目录 (d), 连结档 (l), socket (s),
                           及 FIFO (p) 等属性。
           -perm mode  ∶搜寻文件属性『刚好等于』 mode 的文件,这个 mode 为类似 chmod
                         的属性值,举例来说, -rwsr-xr-x 的属性为 4755 !
           -perm -mode ∶搜寻文件属性『必须要全部囊括 mode 的属性』的文件,举例来说,
                         我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,
                         当一个文件的属性为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,
                         因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。
           -perm +mode ∶搜寻文件属性『包含任一 mode 的属性』的文件,举例来说,我们搜寻
                         -rwxr-xr-x ,亦即 -perm +755 时,但一个文件属性为 -rw-------
                         也会被列出来,因为他有 -rw.... 的属性存在!
        4. 额外可进行的动作∶
           -exec command ∶command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到
                           的结果。
           -print        ∶将结果列印到萤幕上,这个动作是预设动作!

分享到:
评论

相关推荐

    chapter6_linux_

    在本压缩包文件"chapter6_linux_"中,包含的是《Linux内核API完全参考手册》第六章节的实例源代码。这个资源对于想要深入理解Linux内核API和系统调用的开发者来说是极其宝贵的。第六章节可能涉及了Linux操作系统中的...

    Red_Hat_Linux认证学习资料:Chapter_2

    Red Hat Linux认证学习资料的第二章主要关注安装前的准备工作,这是成功部署操作系统的关键步骤。在开始安装之前,了解和规划硬件配置对于确保系统稳定运行至关重要。以下是对本章内容的详细解读: 2.01 规划安装 ...

    ch1.zip

    2. **ZIP格式**:ZIP是一种存档格式,可以包含一个或多个文件和目录。ZIP文件内部使用了多种压缩方法,用户可以选择不同的压缩级别,平衡压缩效果和处理速度。 3. **解压工具**:许多操作系统都内置了对ZIP文件的...

    chapter4.rar

    文件系统如FAT、NTFS和ext4负责组织和访问磁盘上的数据。了解数据的读写过程、缓存机制以及文件系统的工作原理,能帮助我们优化数据存取效率。 四、网络通信 计算机之间的通信涉及网络协议栈,如TCP/IP。网络层次...

    MySQL 5.1官方简体中文参考手册

    10.8. 新字符集配置文件格式 http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chapter/(第 9/24 页)2006-11-02 19:12:13 MySQL 5.1 Reference Manual 10.9. 国家特有字符集 10.10. MySQL支持的字符集和校对 ...

    自己动手写操作系统》部分源代码

    第二章可能深入到更具体的硬件交互,如BIOS中断调用,以及如何设置磁盘扇区读取,为加载操作系统镜像做准备。此外,还会涉及简单的输入输出(I/O)设备控制,例如屏幕打印,这是与用户进行基本交互的基础。 第三...

    DIY_OS_chapter6.rar_写操作系统_操作系统

    5. **文件系统**:文件系统负责组织和管理磁盘上的数据,包括文件的创建、删除、读写操作,以及目录结构。常见的文件系统有FAT、NTFS、EXT系列等。 6. **设备驱动**:设备驱动程序是操作系统与硬件设备之间的接口,...

    vc++ 开发实例源码包

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    自己动手写操作系统(含源代码).part1

    Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的...

    Accp5.0S1计算机基础<1>

    4. **数据存储与文件系统**:理解内存和硬盘的区别,了解文件系统如何组织和管理磁盘上的数据,以及文件和目录的概念。 5. **计算机英语**:由于IT行业的国际性,学习一些基本的计算机专业词汇是必要的,这有助于...

    vc++ 应用源码包_2

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    vc++ 应用源码包_1

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    vc++ 应用源码包_6

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    vc++ 应用源码包_3

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    vc++ 应用源码包_5

    服务器可以将收集到的信息以柱状图和文件列表以及其他方式呈现给用户,以便用户对局域网内的主机进行监测和管理。 CClockST_demo 电子钟的实现,自绘Button、Static的实现,其中自定了一个辅助主题风格类。 ...

    Computer System Structures

    - Silberschatz的《操作系统概念》第二章提供了关于计算机系统操作和启动过程的深入讨论。 综上所述,计算机系统结构涉及到了计算机硬件与软件的复杂交互,其中启动过程是一个关键环节。通过了解启动过程中各部分...

    自己动手写操作系统(含源代码).part2

    Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的...

Global site tag (gtag.js) - Google Analytics