美文网首页
Linux之目录介绍及文件管理

Linux之目录介绍及文件管理

作者: 魏镇坪 | 来源:发表于2016-03-07 14:08 被阅读171次

    Linux filesystem hierarchy and file manager

    命令总结:
    本章节包含如下命令:
    touch, mkdir, cp, install, mv, rm, mktemp,more, less, head, tail, man, stat,setfacl, getfacl, set, wc, cut, sort, uniq, diff, path

    一、File system hierarchy standard

    **Linux设计哲学一切皆文件,包括所有的设备、总线都定义为文件,FHS协会将linux文件定义为各个不同的层级,每个从根到根下的二级目录,表示的意义都不一样。Linux操作系统包含了kernel和application。Linux系统又将各类库划分为两大类,其中包含了静态库和动态库。静态库是直接编译进同内核,即initrd中,随系统启动时启动。动态库是将所包含的功能编译为单个库文件,放至系统指定的目录中,再程序应用启动时,按需调用。Linux将系统所需要用到的库文件都包含进了glibc库中,故glibc是linux系统必不可少的库文件。FHS定义的linux文件系统也被称作为Filesystem Hierarchy Standard,其也被众多的linux分行版本所引用,只是其极少的部分未统一。

    Filesystem Hierarchy standard:

    1. /bin Essential user command binaries,所有用户的基本命令文件存放路径
    2. /sbin System binaries,系统管理二进制程序存放路径
    3. /boot Static file of the boot loader,系统引导加载器必须用到的各静态文件,如:kerenl,initrd,initramfs
    4. /dev device file ,特殊文件及设备文件
    5. /etc Host-specific system configuration,系统及程序的配置文件,只能为静态文件,不能为二进制文件
    6. /home User-home directory(optional),普通用户的家目录
    7. /lib Essential shares binaries and kernel moudles,为系统及程序提供共享库(/bin,/sbin等),以及为kernel提供内核模块
      1. lib.so.* :启动链接的C库
      2. ld* : 运行时链接器/加载器
      3. modules : 用于存储内核模块的目录
    8. /lib64 64位操作系统特有存储64位库的路径
    9. /media Mount point for removable media
    10. /mnt Mount point for temp
    11. /opt And-on application software packages,第三方软件安装位置
    12. /root root home directory (optional)
    13. /srv Date for service provided by system,为当前主机服务提供的数据
    14. /tmp Temporary files.为所有用户提供临时存放文件的路径,所有用户有写权限,这处有特殊权限
    15. /usr User Hierarhcy,全局共享只读数据路径
      bin/ sbin/ lib/ lib64/ include/ share/ local/ src/
    16. /usr/local local hierarchy.让管理员安装本地程序,能通常安装三方程序
    17. /var variables,var hierarchy,存储学发生变化的数据目录
      1. cache/ application cache date
      2. lib/ variables state information
      3. local/ variables date for /usr/local
      4. lock/ lock file
      5. log/ log file and directory
      6. opt/ variable date for opt
      7. run/ date relevnat to runing processes
      8. spool/ application spool date
      9. tmp/ temporary files
    18. /proc Kernel and processes information virtual filesystem,基于内存的虚拟文件系统,存储内核和进程的相关信息,多为内核参数
    19. /sys sysfs虚拟文件系统,提供了比proc更为理想的访问内核数据的途径,主要用来管理硬件
      1. /sys/devices 这是内核对系统中所有设备的分层次表达模型
      2. /sys/dev 维护了一个按字符设备和块设备的主次设备号连接到真实设备,在2.6.26引用
      3. /sys/bus 按总线类型分层旋转的目录结构,devices中的所有设备都工作在某种总线下
      4. /sys/class 按设备功能分类的设备模型,如所有输入设备/sys/class/input之下
      5. /sys/block 系统中所有的块设备
      6. /sys/firmware 系统加载固件机制对用户空间的接口
      7. /sys/fs 描述系统中所有文件系统
      8. /sys/kernel 内核所有可调整能数的位置
      9. /sys/module 系统中所有的模块信息,不论是静态编译或动态编译的模块KO文件,都可能会出现在这里

    Linux system file type

    1. - : 普通文件
    2. d : 目录文件,directory
    3. b : block device,块设备文件,以block为单位进行随机访问
    4. c : character device,字符设备,支持以charactor为单位,进行线性访问,有时序
    5. l : symbolic link,符号连接文件
    6. p : pipe,命名管道
    7. s : socket,套接字文件,IP:PORT = Socket

    二、文件的复制、移动及删除

    创建文件

    touch

    `touch` - touch - change file timestamps
        synopsis:touch [OPTION]... FILE...
        options:
            `-c` : 只是修改时间,不创建文件
            `-a` : 修改文件的access时间,即访问时间
            `-m` : 修改文件的mtime时间,却数据的修改时间,元数据的修改时间是changetime,Ctime时间
            `-t` : STAMP,改到的指定时间
        例:touch -m -t 200212012001.08  # 修改mtime 并指定详细时间
    
    文件分两类:
        文件元数据(meta date)
        文件数据
    
     时间戳:
                Access time : 最近访问时间
                Modify time :  数据改变的时间
                Change time : 元数据改变的时间
                注:只要数据改变了, 元数据也会变的
     故:使用touch修改timestamps,是修改文件的元数据部分
    

    创建目录

    `mkdir` - mkdir - make directories
        synopsis: mkdir [OPTION]... DIRECTORY...
        options:
            `-p` : --perents,按照创建父目录
            `-v` :--verbose,查看创建进度信息
            `-m` : --mode=MODE,设置权限
                 mkdir -m u=x,go=w DIR
                 mkdir -m 600 DIR
        例:如何创建/tmp/x/y1,/tmpx/y2 ,/tmp/x/y1/a,/tmp/x/y1/b?
            mkdir -p ‘/tmp/x/{y1/{a,b},y2}
        例:如何创建a_c,a_d b_c,b_d
            mkdir {a,b}_{c,d}
    

    ============

    复制文件

    文件及目录的复制 ,linux是将底层的数据流从一个位置导到另一个位置,再进行重命名操作

    CP命令:

    `cp` - copy file and directory
        synopsis: cp [OPTION]... [-T] SOURCE DEST
                  cp [OPTION]... SOURCE... DIRECTORY
                  cp [OPTION]... -t DIRECTORY SOURCE...
        options:
            `-i` : --interactive,交互模式,即覆盖之前提示用户
            `-f` : force,强制模式
            `-r` `-R` : 递归复制文件,用于复制目录
            `-d` : 复制连接,如果复制的是一个连接文件,加`-d`只会复制连接文件,不会复制连接文件所指向的文件及内容
            `--preserve` : 复制其扩展属性,=mode,=ownership,=timestamps(文件属性时间),=xattr(扩展属性),=context(安全标签),=links,=all(表示以上都包含)
            `-a` : -dR --preserve=all,用于实现归档(archive)
            
            注意:如果在不加`-d`参数时复制links,将把连接指向的文件内容复制一份到指定位置并以连接文件名命名
    
    单源复制注意内容:
        如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中
        如果DEST存在:
            如果DEST是非目录文件:则覆盖目标文件
            如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件并复制数据流至目标文件**
    
    多源复制注意内容:
        如果DEST不存在:错误
        如果DEST存在:
            如果DEST是非目录文件,错误
            如果DEST是目录文件:分别复制每个文件至DEST目录中, 并保持原名
    

    install命令:

    `install` - copy files and set attributes
        synopsis: install [OPTION]... [-T] SOURCE DEST
                  install [OPTION]... SOURCE... DIRECTORY
                  install [OPTION]... -t DIRECTORY SOURCE...
                  install [OPTION]... -d DIRECTORY...
        options:
            `-m` : --mode=MODE,设定目标文件权限
                    install -m o=x,ug=rw /etc/issue .
                    nstall -m 755 /etc/issue ./issue
            `-o` : --owner=OWNER,设定属主
            `-g` : --group=GROUP,设定属组
            `-d` : 创建目录
    

    移动文件

    mv

    `mv` - move (rename) files
        sinopsis: mv [OPTION]... [-T] SOURCE DEST
              mv [OPTION]... SOURCE... DIRECTORY
              mv [OPTION]... -t DIRECTORY SOURCE...
        options: 
            `-f` : 强制
            `-i` : 交互
    

    删除文件

    rm

    `rm` - remove files or directories
        sinopsis: rm [OPTION]... FILE...
        options:
            `-f` : 强制
            `-i` : 交互
            `-r`,`-R` : 递归操作
        注:所有文件不建议直接删除,建议使用MV将文件移动到一个固定位置,后期确定不使用的时候再清理
    

    创建临时文件和目录

    mktemp

    `mktemp` - mktemp - create a temporary file or directory
        synopsis: mktemp [OPTION]... [TEMPLATE]
        options:
            `-d` : 创建临时目录
            ·-u` : 测试创建
    mktemp /tmp/mytmp.XXXX
    mktemp -d /tmp/mytmp.XXXX   
    

    ================

    三、文件查看类工具

    分屏工具

    more
    `more` - more - file perusal filter for crt viewing
        synopssis: more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file ...
    

    less

    `less` - less - opposite of more
        synopsis: less File
        options:
            `space` - 向下翻页
            `b` - 向上翻页
            `u` - 向上翻半页
            `d` - 向下翻半页
            `j` - 向下翻一行
            `k` - 向上翻一行
            `q` - 退出
    

    head

    `head` - head - output the first part of files
        synopsis: head [OPTION]... [FILE]...
        options:
            `-n` : 显示要查看的前几行
            注:一般可以使用`-6` 代替 `-n 6`
    

    tail

    `tail` - tail - output the last part of files
        synopsis: tail - output the last part of files
        options:
            `-n` : 显示要查看的后几行
            注:一般可以使用`-6` 代替 `-n 6`
            `-f` : --follow,监控最后行的变化,并显示出来
    

    man

    `man` - man - format and display the on-line manual pages
        synopsis: format and display the on-line manual pages
        options:
            注:同less工具, man工具就是调用了Less的查看功能
    

    stat

    `stat` - stat - display file or file system status
        synopsis: stat [OPTION]... FILE...
        查看文件的元数据信息
    

    wc

    `wc` - wc - print newline, word, and byte counts for each file
        synopsis : wc [OPTION]... [FILE]...
        options:
            -l : 统计行数
            -c : byte conuts 
            -w : 统计单词总数
            -m : 字符
       使用`wc file`: 格式为:行数 单词 字符
    

    cut

    `cut` - remove sections from each line of file
        synopsis: cut OPTION... [FILE]...
        options:
            -d CHAR: 指定分隔符,默认为空格
            -f #|#,#|#,#-#: fields,保留那些字段
    
    • 例:
      • cut -d: -f7 /etc/passwd
      • cut -d: -f1,3,5-7 /etc/passwd

    sort

    `sort` - sort - sort lines of text files
        synopsis: sort [OPTION]... [FILE]...
        options:
            -t CHAR : 指定分隔符
            -n : 基于数据大小排序
            -k # : 以#字段列进行排序
            -r :逆序进行排序(reverse)
            -f : 忽略字符大小写
            -u : 重复的行只保留一份(重复相同且连续的行)
    
    • 例:
      • sort -r -n -t: -k3 /etc/passwd
      • cut -d: -f7 /etc/passwd | sort -u(统计系统用户用了哪几种shell)

    uniq

    `uniq` - report or omit repeated lines
        synopsis: uniq [OPTION]... [INPUT [OUTPUT]]
        options:
            -c : 每行重复出现的次数
            -u : 只显示没有重复的行
            -d : 只显示重复的行,至少2次或2次以上
    
    • 例:
      • cut -d: -f7 /etc/passwd | sort | uniq -c (统计系统同一shell使用的次数)

    diff

    `diff` - diff - compare files line by line
        synosis: diff [OPTION]... FILES
        options:
            -u : 不同风格显示文件差别,使用unified机制,显示要修改行的上下文,默认为3行
    
    • 例:diff fstab fstab.bak > fstab.path (应用两个文件成生fstab.path补丁文件)

    path

    synopsis: path [option] -i /path/to/patch_file /path/to oldfile (打补丁)
              path /path/to/oldfile < /path/to/patch_file (同上)
    
      • path -i fstab.path fstab : 打补丁
      • path -R -i fstab.patch fstab
    • diff用于生成补要,path用于打补丁

    ==============

    IO重定向及管道

    什么是管道及其作用:

    将一个命令的执行结果作为另一个命令的输入,即是管道

    计算机对文件的识别方式:

    • 标准输入,0表示
    • 标准输出,1表示
    • 错误输出,2表示

    程序的数据流有三种:

    输入的数据流 <---- 标准输入(stdin),即键盘
    输出的数据流 ----> 标准输出(stdout),即显示器
    错误的输出流 ----> 错误输出(stderr),显示器

    IO重定向

    • > : 覆盖输出重定向
    • >> : 追加输出重定向
    • < : 输入重定向
    • 2> : 错误覆盖输出重定向
    • 2>> : 错误追加输出重定向
    • &> : 合并覆盖重定向(即把标准输出和错误输出合在一起)
    • &>> : 合并追加重定向(即把标准输出和错误输出合在一起)
    • >| : 强行覆盖(即使用命令set -c 关闭覆盖重定向时,可以使用这个强行覆盖)

    setw命令:

    options:
        -C : 开启禁用覆盖重定向
        +C : 关闭禁用覆盖重定向
    

    相关文章

      网友评论

          本文标题:Linux之目录介绍及文件管理

          本文链接:https://www.haomeiwen.com/subject/gynakttx.html