目录-Linux

Linux文件系统:

    Linux: glibc

    程序编译方式:
        动态链接
        静态编译

    进程的类型:
        终端:硬件设备,关联一个用户接口

        与终端相关:通过终端启动
        与终端无关:操作引导启动过程当中自动启动

    操作系统的组成:
        静态:kernel,application

        文件系统:层级结构

    FHS:filesystem hierarchy standard文件系统层级结构标准

        http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html

        /bin : 所有用户可用的基本命令程序文件;
        /sbin:供系统管理员使用的工具
        /boot:引导加载器必须用到的各种静态文件:kernel,initramfs(initrd),grub等
        /dev : 存储特殊文件或设备文件;
            设备有两种类型:字符设备(线性设备),块设备(随机设备);
        /etc :系统程序的配置文件,只能为静态;    
        /home:普通用户的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户同名的子目录,/home/username;
        /root:管理员的家目录:可选;
        /lib :为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及内核提供内核模块
            libc.so.*:动态链接的c库
            ld*:运行时链接器/加载器;
            modules:用于存储内核模块的目录
        /lib64:64位系统特有的存放64位共享库的路径;
        /media:便携式设备挂载点,cdrom,floppy等;
        /mnt  :其他文件系统的临时挂载点;
        /opt  :附加应用程序的安装位置;可选路径;
        /srv  :当前主机为服务提供的数据;
        /tmp  :为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所有用户执行写入操作;有特殊权限;
        /usr:usr hierarchy ,全局共享的只读数据路径;
            bin,sbin
            lib,lib64
            include:c程序头文件
            share:命令手册和自带文档的架构特有文件的存储位置;
            local:另一个层级结构;
            X11R6:x-window程序的安装位置
            src:程序源码文件的存储位置;
        /usr/local:让系统管理员安装本地应用程序;也通常用于安装第三方程序;
        /var :/var hierarchy , 存储常发生变化的数据的目录;
            cache    应用缓存数据
            lib        可变状态信息
            local    / usr / local的可变数据
            lock    锁定文件
            log        日志文件和目录
            opt        / opt的可变数据
            run        与运行流程相关的数据
            spool    应用假脱机数据
            tmp        系统重新启动之间保留的临时文件


        /proc :内核和进程存储其相关信息:他们多为内核参数,例如net.Ipv4.ip._forward,虚拟为net/ipv4/ip_forward,存储于/proc/sys/,因此其完整路径为/proc/sys/net/ipv4/ip_forward;虚拟文件系统;
        /sys  :sysfs 虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备模型的接口;内核和系统信息虚拟文件系统

        参考文档:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/index.html


Linux文件上的文件类型:
    -:常规文件;即f;
    d:directory ,目录文件;
    b:block device ,块设备文件,支持以"block"为单位进行随机访问;
    c:character device ,字符设备文件,支持以"character"为单位进行线性访问;
        major number :主设备号,用于标识设备类型,进而确定要加载的驱动程序;
        minor number : 次设备号,用于标识同一类型中的不同的设备;
            8位二进制:0-255
    l:symbolic link,符号链接文件;
    p:pipe,命令管道;
    s:socket,套接字文件;

Linux基本命令:
    命令类型:
        外部命令
        shell内嵌命令

        区分内外部命令:
            type commend
                内部:bulitin
                外部:显示为命令文件路径;
                    注意:命令可以有别名;别名可以与原名相同,此时原名被隐藏;因此要获取原命令,则使用\command;

        命令别名:
            alias :获取所有可用别名的定义;
            alias cmd :定义别名(注意:仅对当前shell进程有效);
            unalias name:撤销别名; 

    which:
        显示命令完整路径;

    whereis:
        显示二进制命令在何处,以及man手册;
        -b:只查看二进制程序路径;
        -m:只查看使用手册文件路径;
    who:
        查看登入到前端口的用户;
        -b:显示系统最近一次启动时间;
        -r:运行级别;
        -u:
    w:
        who 的增强版,还可显示做什么,例如:CPU资源占用....;


bash的基础特性1:history
    
    历史命令:shell 进程会其会话中保存此前用户提交执行过的命令;
        ]# history 
            定制history的功能,可通过环境变量实现;
                HISTSIZE:shell进程可保留的历史的条数;
                HISTFLIE:持久保存命令历史文件;
                    .bash_history
                HISTFILESIZE:命令历史文件数;

            命令用法:
                history [-c] [-d offset] [n] 
                history -anrw [filename] 
                history -ps arg [arg...]

                -c:清空命令历史;
                -d offset:清除某条历史命令;
                -r:从文件读取命令历史至历史列表中;
                -w:把历史列表中的命令追加至历史文件中;
                history # :显示最近#条命令;

            调用命令历史列表中的命令:
                !#:调用第#条命令执行;
                !!:再一次执行上一条命令;
                !SITRING:再一次执行命令历史列表中最近一个以SIRING(开头字母,从下往上检索)开头的命令;

                    注意:命令的重复执行有时候需要依赖于幂等性;

            调用上一条命令的参数:
                快捷键:esc+.
                字符串:!$

            控制命令历史记录的方式:
                环境变量:HISTCONTROL
                    ignoredups:忽略重复的命令;
                    ignorespace:忽略以空白字符开头的命令
                    ignoreboth:以上两者同时生效;

                修改变量的值:
                    NAME='VALUE'

总结:
    FHS,命令及bash命令历史
        FHS:
            /bin,/sbin,/lib,/lib64,/etc
            /home,/root
            /boot
            /media,/mnt
            /proc,/sys
            /tmp
            /srv 为服务提供数据
            /opt
            /dev 
            /usr
                /bin,/sbin,lib,lib64,share,local,include
            /var
                cache,lib,log,....
        命令:which,whereis,who,w,alias,unalias
        命令历史:history

bash的基础特性2: 命令/路径补全
                         tab键


目录管理类命令:mkdir,rmdir
    
    mkdir: 创建目录
        -p:递归创建目录
        -v:显示创建详细过程
        -m MODE:直接给定权限

    rmdir: 移除空目录
        -p:只要目录为空就删除,连续执行;(不提倡使用)
        -v:显示过程;


    实践:
        如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b?
        如何创建a_c,a_d,b_c,b_d;
        创建目录结构/tmp/mysysroot/
                        bin
                        sbin
                        etc
                            sysconfig
                                network-scripts
                        usr
                            bin
                            local
                                bin
                                etc
                            lib
                            lib64
                        var
                            cache
                            log
                            run

                    ├── sysmyroot
                    │   ├── bin
                    │   ├── etc
                    │   │   └── sysconfig
                    │   │       └── network-scripts
                    │   ├── sbin
                    │   ├── usr
                    │   │   ├── bin
                    │   │   ├── lib
                    │   │   ├── lib64
                    │   │   └── local
                    │   │       ├── bin
                    │   │       └── etc
                    │   └── var
                    │       ├── cache
                    │       ├── log
                    │       └── run



bash的基础特性3:命令行展开
    ~:自动展开为用户的家目录,或指定的用户的家目录;
    {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多项式;
        
        例如:    mkdir -pv /tmp/x/{y1/{a,b},y2}
                mkdir -v {a,b}_{c,d}
                mkdir -pv /tmp/sysmyroot/{bin,sbin,etc/sysconfig/network-scripts,usr/{bin,local/{bin,etc},lib,lib64},var/{cache,log,run}}

tree命令:
    -L level : 指定要显示的层级;

bash的基础特性4: 命令的执行状态结果
    命令执行的状态结果:
        bash通过状态返回值来输出此结果;
            成功:0
            失败:1-255

        命令执行完成之后,其状态返回值保存于 bash 的特殊变量$?中;

    命令正常执行时,有的还会有命令返回值;
        根据命令及功能不同,结果个不相同;

    引用命令执行结果:
        $(cmd)
        `cmd

            例如: -pv /tmp/$(date +%H-%M-%S)

bash的基本特性5:引用
    强引用:''
    弱引用:""
    命令引用:``

bash的基础特性6:快捷键
    ctrl+a
    ctrl+e

    ctrl+u
    ctrl+k

    ctrl+l


文本查看命令:cat,tac,head,tail,more,less

    分屏查看命令: more 和 less

    more命令:
        more FILE
            特点:翻屏至文件尾部后自动退出;
    less命令:
        less FILE
    head命令:
        查看文件的前n行;默认前10行;
            -n # :查看前#行
            -# :查看前#行
    tail命令:查看文件的后n行;
            -n #
            -#
            -f:查看文件结尾内容结束后不退出,跟随显示新增的行;

    stat命令:显示文件或文件系统的状态;
        文件:两类数据;
            元数据(数据的数据):metadata
            数据:date
        时间戳:
            Access最近访问: 2018-10-09 20:04:50.310818675 +0800
            Modify最近更改: 2018-10-09 20:04:50.310818675 +0800 //数据改变
            Change最近改动: 2018-10-09 20:04:50.310818675 +0800 //元数据改变

    touch命令: 修改/更新文件时间戳;路径没有文件默认创建文件;
        -c:指定的文件路径不存在时不予创建;
        -a:仅修改access time;
        -m:仅修改modify time;
        -t STAMP :
            [[CC]YY]MMDDhhmm[.ss]

文件管理工具: cp,mv,rm
    cp命令:copy 
        源文件:目标文件;
        单源复制: cp [OPTION]... [-T] SOURCE DEST(目标文件)
        多源复制: cp [OPTION]... SOURCE... DIRECTORY
                  cp [OPTION]... -t DIRECTORY SOURCE...

        单源复制:
            如果DEST不存在:则事先创建此文件,并复制文件数据流到DEST中;
            如果DEST存在:
                如果DEST为非目录文件:则覆盖目标文件;
                如果DEST是目录文件:则事先DEST目录下创建一个与源文件同名的文件,并复制其数据流;
        多源复制:
            如果DEST不存在:错误;
            如果DEST存在:
                如果DEST为非目录文件:错误;            
                如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
        常用选项:
            -i:交互式复制,即覆盖之前提醒用户确认;
            -f:force强制覆盖文件;
            -r,-R:递归复制文件;
            -d:复制符号链接文件本身,而非其指向的源文件;
            -a: -dR --preserve=all,archive,用于实现归档;
            --preserve=
                mode:权限
                ownership:属主和属组
                timestamps:时间戳
                context:安全标签
                xattr:扩展属性
                links:符号链接
                all:上述所有属性
    mv命令:
        mv [OPTION]... [-T] SOURCE DEST
           mv [OPTION]... SOURCE... DIRECTORY
           mv [OPTION]... -t DIRECTORY SOURCE...
        常用选项:
            -i:交互式;
            -f:force
            .....
    rm命令:
        rm [OPTION]... FILE...
        常用选项:
            -i:交互
            -f:强制
            -r:recursive递归
            删除目录:rm -fr /PATH (删除操作危险,慎用!!!)
            可以自建回收站,将要删除的文件移动到每个文件夹;
变量:
    命令的内存空间:
        变量类型:
            字符型
            数值型
                精确数值;
                近似数值;
            存储格式,数据范围,参与运算;

    变量的赋值操作:name=tom

浮点数值如何存储?

总结:
    bash特性:命令补全,路径补全,命令补全
    文件及目录的复制,移动,删除
    变量:变量类型



\:
    在命令前加上反斜杠临时取消使用别名
    例如:\ls,则直接调用ls的原始命令而不会使用alias设置的带有color选项的命令

 

posted @ 2018-10-11 20:36  找工作好爽啊哈哈哈呜  阅读(222)  评论(0编辑  收藏  举报