一 Linux的文件系统

     

     与Windows不同,Linux采用/ 为所有文件的入口,通过/ 建立挂载关系,进而访问数据。为了统一不同发行版的文件系统,进而linux有了LBS规范下的FHS(文件系统层级结构标准)。而/目录下的文件是按照特定机制组织的并且有特定含义。

       

        /boot: 引导文件存放目录;
        /bin: binary,供用户使用的基本的命令;开机就会用到的命令;
        /sbin:管理类命令;
        /lib: 基本共享库;内核模块;
        /lib64:x86_64系统的共享库;
        /etc:配置文件目录;
        /home/USERNAME: 普通用主目录的默认位置;
        /root: 管理员的主目录;
        /media:便携式移动设备;
        /mnt:临时文件系统挂载点;
        /opt: 可选目录,默认第三方软件的安装位置;
        /dev:devices,设备文件
            b:块设备
            c: 字符设备
        /proc:
            伪文件系统;用于输出内核与进程的相关信息;
        /sys:
            伪文件系统;
        /srv:services,系统服务的中间数据;
        /tmp:临时文件目录;
        /usr:全局共享,只读文件;
            bin:保证系统提供基本功能;
            sbin
            lib
            lib64
            include: C程序的头文件;
            share:结构化的独立数据
                doc, man
            local:现在常用的第三方程序的安装位置;
                bin
                sbin
                lib
                lib64
                etc
                share
        /var:可变数据存放
            cache:应用程序缓存数据
            lib:应用程序的状态信息数据
            local:专用于为/usr/local下的应用程序存储可变数据;
            lock:锁文件
            log:日志文件
            opt:专用于/opt
            spool:应用程序的数据池;
            run:运行中的进程的相关数据;通常用守护进程 的pid文件;

二 linux 文件类型

    d: 目录文件
    b: 块设备文件
    c: 字符设备文件
    l: 符号链接文件
    p: 命名管道文件
    s:套接字文件

三 bash特性

    (1) 命令历史
        bash会记录此前用户执行的命令;

            history命令:
                -c:清空命令历史;
                -d #: 删除历史中第#条的命令;
            history #: 显示最近执行的#条命令;

            调用过去执行过的命令:
                !#:调用历史中的第#条命令;
                !!: 重复执行上一条命令

    (2) 命令补全
        命令搜索机制:
            hash>内建命令路径>外检命令路径
            按TAB 搜索与输入字母唯一匹配的命令

    (3) 路径补全
        根据用户输入的路径在其上级目录搜索指定字符开头的文件
            如果唯一:直接补全;
            两次Tab,列出所有符合条件的文件;

    (4) 命令行展开的功能
        ~: 展开为当前用户的主目录;
        ~USERNAME:展开为指定用户的根目录;
        {}:可承载一个以逗号分隔的列表,并其展开为多个路径;
            /var/{log,cache,run} = /var/log /var/cache /var/run

    (5) 命令的执行结果状态,由bash追踪和保存
        成功:0
        失败:1-255

    (6) 命令别名
        alias/unalias

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

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

            unalias NAME: 撤消别名;

    (7) glob
        文件名“通配”
            *:匹配任意长度的任意字符;
            ?:匹配任意单个字符;
            []: 匹配指定范围内的任意单个字符;
            [^]:匹配范围外的任意单个字符;

                字符集合:
                    [:lower:]
                    [:upper:]
                    [:alnum:]
                    [:digit:]
                    [:space:]
                    [:punct:]
                    [:alnum:]
    (8) 组合键

        Ctrl+l:清屏
        Ctrl+a: 切换至命令行首
        Ctrl+e:切换至命令行尾
        Ctrl+c:取消命令执行

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

    (9) IO重定向和管道

        I/O重定向:
            输入重定向
            输出重定向:
                COMMAND > NEW_POS, COMMAND >> NEW_POS
                >:覆盖重定向;
                >>:追加重定向;

            错误重定向:
                2>:覆盖
                2>>:追加

    管道:
         第一条命令的输出结果为第二条命令的输入

四 文件处理命令

    (1) wc:单词,字符统计
             wc [OPTION]... FILE...
            -l: 显示行数
            -w: 显示单词数

    (2) cut:剪切文本
             cut OPTION... [FILE]...
            -d: 指明分隔符;-d' ', -d:
            -f:指明要显示的字段
                #:
                #-#:1-3
                #,#: 1,3,7

    (3)sort:排序
            sort [OPTION]... [FILE]...
            -r: 逆序
            -f: 忽略字符大小写
            -u: 排序后去重
            -t CHAR: 指明分隔符
            -k #: 字段
            -n: 表示以数值大小排序

    (4) uniq:区分
             uniq [OPTION]... [FILE]...
            -c: 显示每行重复的次数;
            -d: 只显示重复过的行;
            -u: 只显示不曾重复的行;
            常与sort结合使用管道