Linux的文件系统

此篇文章摘抄自老师讲课笔记。

   

   绝对路径:/

      根文件系统:rootfs

 

      文件系统挂载:

 

      LSB:FHS(文件系统层级结构标准)

 

   FHS

      /boot:引导文件存放目录,例如kernel(vmlinuz)、bootloader(grub, grub2);

      /bin:binary,供用户使用的基本的命令;OS启动即会用到程序;

      /sbin:管理类的基本命令;

      /lib:基本共享库;内核模块;

      /lib64:x86_64系统的共享库;

      /etc:配置文件目录;

      /home/USERNAME:普通用主目录的默认位置;

      /root:管理员的主目录;

      /media:便携式移动设备;

      /mnt:临时文件系统挂载点;

      /opt:可选目录,第三方应用程序的默认安装位置;

      /dev:devices,设备文件

        b:block devices,random access

        c:character deivces,linear access

      /proc

        伪文件系统;用于输出内核与进程的相关信息;

      /sys

        伪文件系统;

      /srv:services,系统上运行服务用到中间数据;

      /tmp:临时文件目录;

      /usr:Universal Shared,Read-only data;

        bin:保证系统提供基本功能;

        sbin

        lib

        lib64

        include:C程序的头文件;headerfiles

        share:结构化的独立数据

           doc,man

        local:现在常用的第三方程序的安装位置;

           bin

           sbin

           lib

           lib64

           etc

           share

      /var:variable data files

        cache:应用程序缓存数据

        lib:应用程序的状态信息数据

        local:专用于为/usr/local下的应用程序存储可变数据;

        lock:锁文件

        log:日志文件

        opt:专用于/opt

        spool:应用程序的数据池;

        run:运行中的进程的相关数据;通常用守护进程 的pid文件;

      /selinux

 

Linux的文件类型:

   -(f):普通文件

   d:目录文件

   b:块设备文件

   c:字符设备文件

   l:符号链接文件

   p:命名管道文件

   s:套接字文件

 

bash的基础特性(1)

   (1)命令历史

      bash会记录此前用户在shell会话中执行的命令于缓冲区中;正常退出时,会被记录于当前用户家目录下隐藏文件.bash_history中;

        环境变量:

           HISTSIZE:命令历史记录的条数;

           HISTFILE:命令历史文件路径;

           HISTFILESIZE

 

        history命令:

           -c:清空命令历史;

           -d#: 删除历史中指定的命令;

           -a:当缓冲区中的历史手动追加文件;

 

           history#: 显示最近的多少条命令;

 

        调用过去执行过的命令:

           !#:调用历史中的第#条命令;

           !!:重复执行上一条命令

           !string:调用历史中最近一个以string开头的命令;

 

        调用过去执行过的命令的最后一个参数:

           !$:

           ESC,.

           Alt+.

 

   (2)命令补全

      bash内建命令

      外部命令

 

      命令搜索机制:

        PATH环境变量:由冒号分隔的路径

 

        hash:把此前搜索到路径缓存到内存中;

           kv:key-value

              ls--> /bin/ls

 

      命令补全:

 

   (3)路径补全

      把用户给出的路径字符串当前路径起始,并在其指定的上级目录下搜索以指定的字符串开头的文件名;

        如果惟一:直接补全;

        否则:两次Tab,可列出;

 

   (4)命令行展开的功能

      ~:展开为当前用户的主目录;

      ~USERNAME:展开为指定用户的家目录;

      {}:可承载一个以逗号分隔的列表,并其展开为多个路径;

        /var/{log,cache,run}= /var/log /var/cache /var/run

 

   (5)命令的执行结果状态,由bash追踪和保存

      成功:0

      失败:1-255

 

      bash使用特殊变量$?保存最近一条命令的状态结果;

 

      程序的执行结果有两种:

        程序的返回值;

        程序的状态结果;

 

   (6)命令别名

      命令的另一个引用符号,由bash程序维护;

 

      alias/unalias

 

        alias:查看所有已经定义别名;

        aliasNAME=COMMAND:定义别名;

 

           如果别名同原命令名,想直接执行原命令,则需使用\COMMAND

 

        unaliasNAME: 撤消别名;

 

目录管理类命令:

   mkdir,rmdir, tree, dirname, basename

 

   (1)mkdir

      mkdir[OPTION] /PATH/TO/SOMEWHERE

        -p:创建父目录

        -v:显示创建过程

 

      练习:

        如何创建目录:x_m, x_n, y_m,y_n?

 

   (2)rmdir

      rmdir/PATH/TO/SOMEWHERE

 

      删除空目录;

 

   (3)tree

      tree[OPTION]... [DIR]

        -d:只层级目录类型的文件;

        -Llevel: 只显示几个层级;

 

文本文件查看命令:

  

   cat,tac, more, less, tail, head

 

   more,less

      翻屏查看;

 

      more[OPTIONS]... FILE...

        -d:显示翻页有退出提示

 

         Space: 向后一屏;

        Enter:向后一行;

 

        b:向前一屏;

 

      less[OPTION]... FILE...

 

        文本搜索:

           /KEYWORD

           ?KEYWORD

              n:与命令方向相同的下一个;

              N:与命令方向相反的前一个;

 

      head和tail:

        head[OPTION]... FILE

        tail[OPTION]... FILE

           -n#

              -#

           -c#: 显示前/后#个字节

 

        tail的专用选项:

           -f:follow

 

   时间戳管理工具:touch

      每个文件都有三个时间戳:

        atime:文件最近一次被访问的时间;

        mtime:文件最近一次被“修改”的时间;

        ctime:文件最近一次被“改变”的时间;

 

        文件数据:

           metadata

           data

 

      touch[OPTION]... FILE...

        更新时间戳至当前时间;

        -a:只更新atime

        -m:只更新mtime

        -tSTAMP:

           [[CC]YY]MMDDhhmm[.ss]

        -c:不创建空文件

 

文件管理命令:

  

   cp,mv, rm

 

   复制命令:cp, copy

      cp[OPTION]... [-T] SOURCE DEST

       cp [OPTION]... SOURCE... DIRECTORY

       cp [OPTION]... -t DIRECTORYSOURCE...

 

       cp SRC DEST:

          SRC是文件:

             如果DEST不存在:新建目标文件,并将SRC复制到目标文件;

             如果DEST存在:

                如果DEST是文件:用SRC的内容覆盖至DEST文件中;

                如果DEST是目录:在DEST目录中新一个与原文件同名的文件,将将SRC内容复制到新建的同名的目标文件中;

 

       cp SRC... DEST:

          如果DEST不存在:

             是错误的;

          如果DEST存在:

             如果DEST是文件:错误;

             如果DEST是目录:

 

       常用选项:

          -r, -R: 递归复制;

          -d: 不跟踪符号链接;

          --preserve[=ATTR_LIST]

             mode, ownership, timestamps

             context, links, xattr, all

          -a: -dR --preseve=all

          -i: interactive

          -f: force

          -v: 显示过程

 

   mv: move, 移动文件

     mv [OPTION]... [-T] SOURCE DEST

       mv [OPTION]... SOURCE... DIRECTORY

       mv [OPTION]... -t DIRECTORY SOURCE...

 

       常用选项:

        -i:交互式

        -f:强制

 

   rm: remove

      rm [OPTION]... FILE...

        只删除文件;

        常用选项:

           -r:

           -f:

           -i:

 

文本编辑器:

   nano

 

bash的基础特性(02)

   (1)glob

      文本名“通配”

        *:匹配任意长度的任意字符;

        ?:匹配任意单个字符;

           a*b:aab, ab, a123b;

           a?b:

        []:匹配指定范围内的任意单个字符;

           [0-9]

        [^]:匹配范围外的任意单个字符;

           [^a-b]

 

           字符集合:

              [:lower:]

              [:upper:]

              [:alnum:]

              [:digit:]

              [:space:]

              [:punct:]

              [:alnum:]

 

      练习:

        显示/etc/目录下,以非字母开头,后面跟了一具字母及其它任意长度任意字符的文件或目录;

 

        复制/etc目录下,所有以.d结尾的文件或目录至/tmp/mageedu.com目录中;

 

   (2)组合键

 

      Ctrl+l:清屏

      Ctrl+a:切换至命令行首

      Ctrl+e:切换至命令行尾

      Ctrl+c:取消命令执行

 

      Ctrl+u:删除光标所在处至行首的内容;

      Ctrl+k:删除光标所在处至行尾的内容;

 

 

   (3)IO重定向和管道

 

      程序:指令+数据

        读入数据:Input

        输出数据:Output

 

      打开的文件都一个fd:file descriptor

 

      标准输入:keyboard, 0,/dev/stdin

      标准输出:monitor, 1, /dev/stdout

      标准错误输出:monitor, 2,/dev/stderr

 

      I/O重定向:

        输入重定向

        输出重定向:

           COMMAND> NEW_POS, COMMAND >> NEW_POS

           >:覆盖重定向;

           >>:追加重定向;

 

           set-C

              如果覆盖重定向目标文件存在,则禁止执行;

              >|

           set+C

 

        错误重定向:

           2>:覆盖

           2>>:追加

 

      同时重定向标准输出流和错误输出流:

         COMMAND > /path/to/file.out 2>/path/to/file.err

 

        COMMAND> /path/to/file.out 2>&1

 

        COMMAND&> /path/to/file.out

 

      输入重定向:

        <

 

        tr命令:

           tr[OPTION]... SET1 [SET2]

              -d:删除字符

 

      HereDocument:<<

        cat>> /path/to/somefile << EOF

 

   管道:

      COMMAND1| COMMAND2 | ...

 

      练习:tee命令的用法;

 

文件处理工具:

   wc,cut, sort, uniq

 

   wc:word counts

      wc[OPTION]... FILE...

        -l:显示行数

        -w:显示单词数

 

   cut

      cutOPTION... [FILE]...

        -d:指明分隔符;-d'', -d:

        -f:指明要显示的字段

           #:

           #-#:1-3

           #,#:1,3,7

 

   sort命令:排序

      sort[OPTION]... [FILE]...

        -r:逆序

        -f:忽略字符大小写

        -u:排序后去重

        -tCHAR: 指明分隔符

        -k#: 字段

        -n:表示以数值大小排序

 

   uniq命令:

      uniq[OPTION]... [FILE]...

        -c:显示每行重复的次数;

        -d:只显示重复过的行;

        -u:只显示不曾重复的行;


你可能感兴趣的:(bash,linux文件系统)