美文网首页
note_4.2_Shell

note_4.2_Shell

作者: 人間失格_430b | 来源:发表于2019-01-14 18:42 被阅读0次

    命令历史:shell进程会其会话中保存此前用户提交执行过的命令;
    ~]# history
    定制history的功能,可通过环境变量实现:

    • HISTSIZE:shell进程可保留的命令历史的条数;
    • HISTFILE:持久保存命令历史的文件;
      .bash_history
    • HISTFILESIZE:命令历史文件的大小;

    命令用法:

        history [-c] [-d 偏移量] [n] 
        或 history -anrw [文件名] 
        或 history -ps 参数 [参数...]
            -c: 清空命令历史;
            -d offset:删除指定命令历史
            -r: 从文件读取命令历史至历史列表中;
            -w:把历史列表中的命令追加至历史文件中;
        history n:显示最近的n条命令;
    

    调用命令历史列表中的命令:
    !#:再一次执行历史列表中的第#条命令;
    !!:再一次执行上一条命令;
    !STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;

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

    调用上一条命令的最后一个参数:
    快捷键:ESC, .
    字符串:!$

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

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


    bash的基础特性

    命令补全:

    shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当作命令;

    • 命令查找机制:
      查找内部命令;
      根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名;

    给定的打头字符串如果能惟一标识某命令程序文件,则直接补全;
    不能惟一标识某命令程序文件,再击tab键一次,会给出列表;

    路径补全:

    在给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件:

    • tab:
      如果能惟一标识,则直接补全;
      否则,再一次tab,给出列表;

    目录管理类的命令:

    mkdir, rmdir

    注意:路径基名方为命令的作用对象;基名之前的路径必须得存在;


    mkdir不存在路径
            mkdir [OPTION]... DIRECTORY...
                -p: 自动按需创建父目录;
                -v: verbose,显示详细过程;
                -m MODE:直接给定权限;
    
    rmdir:remove empty directories(必须是空目录)
            rmdir [OPTION]... DIRECTORY...
    
                -p:删除某目录后,如果其父目录为空,则一并删除之;
                -v: 显示过程;
    
    mkdir、rmdir

    问题1:如何创建/tmp/x/y1, /tmp/x/y2, /tmp/x/y1/a, /tmp/x/y1/b?
    问题2:如何创建a_c, a_d, b_c, b_d;


    bash的基础特性之:命令行展开

    ~:自动展开为用户的家目录,或指定的用户的家目录;
    {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
    例如:/tmp/{a,b} 相当于 /tmp/a /tmp/b

    回答1:
    回答2:

    问题3:创建如下目录结构:

            /tmp/mysysroot/
                |-- bin
                |-- etc
                |   `-- sysconfig
                |       `-- network-scripts
                |-- sbin
                |-- usr
                |   |-- bin
                |   |-- lib
                |   |-- lib64
                |   |-- local
                |   |   |-- bin
                |   |   |-- etc
                |   |   |-- lib
                |   |   `-- sbin
                |   `-- sbin
                `-- var
                    |-- cache
                    |-- log
                    `-- run
    

    回答3:[root@localhost ~]# mkdir -p /tmp/mysysroot/{bin,etc/sysconfig/network-scripts,sbin,usr{bin,lib,lib64,local/{bin,etc,lib,sbin},sbin},var/{cache,log,run}}


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

    bash的基础特性:命令的执行状态结果

        命令执行的状态结果:
            bash通过状态返回值来输出此结果:
                成功:0
                失败:1-255
    
            命令执行完成之后,其状态返回值保存于bash的特殊变量$?中;
    
        命令正常执行时,有的还回有命令返回值:
            根据命令及其功能不同,结果各不相同;
    
        引用命令的执行结果:
            $(COMMAND)
            或`COMMAND`
    

    bash的基础特性:引用

        强引用:''
        弱引用:""
        命令引用:``
    

    bash基础特性:快捷键

        Ctrl+a:跳转至命令行行首
        Ctrl+e:跳转至命令行行尾
    
        Ctrl+u:删除行首至光标所在处之间的所有字符;
        Ctrl+k:删除光标所在处至行尾的所有字符;
    
        Ctrl+l:清屏,相当于clear
    

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

    分屏查看命令:more和less

        more命令:
            more FILE
                特点:翻屏至文件尾部后自动退出;
    
        less命令:
            less FILE
    
        head命令:
            查看文件的前n行;
                head [options] FILE
                    -n #
                    -#
    
        tail命令:
            查看文件的后n行;
                tail [options] FILE
                    -n #
                    -#
                    -f:查看文件尾部内容结束后不退出,跟随显示新增的行;
    
        stat命令:
            stat - display file or file system status
    
            stat FILE...
    
            文件:两类数据
                元数据:metadata
                数据: data
    
            时间戳:
                access time:2015-12-10 16:12:22.776423693 +0800
                modify time:2015-12-10 16:12:22.776423693 +0800
                change time:2015-12-10 16:12:22.776423693 +0800
    
        touch命令:
            touch - change file timestamps
    
            touch [OPTION]... FILE...
                -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...
    

            单源复制:cp [OPTION]... [-T] SOURCE DEST
                如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中;
                如果DEST存在:
                    如果DEST是非目录文件:则覆盖目标文件;
                    如果DEST是目录文件:则先在DEST目录下创建一个与源文件同名的文件,并复制其数据流;
    

            多源复制:cp [OPTION]... SOURCE... DIRECTORY
                      cp [OPTION]... -t DIRECTORY SOURCE...
    
                如果DEST不存在:错误;
                如果DEST存在:
                    如果DEST是非目录文件:错误;
                    如果DEST是目录文件:分别复制每个文件至目标目录中,并保持原名;
    

            常用选项:
                -i:交互式复制,即覆盖之前提醒用户确认
                -f:强制覆盖目标文件
                -r, -R:递归复制目录
                -d:复制符号链接文件本身,而非其指向的源文件
                -a:-dR --preserve=all, archive,用于实现归档
                --preserv=
                    mode:权限
                    ownership:属主和属组
                    timestamps: 时间戳
                    context:安全标签
                    xattr:扩展属性
                    links:符号链接
                    all:上述所有属性
    

    mv命令:move
           mv [OPTION]... [-T] SOURCE DEST
           mv [OPTION]... SOURCE... DIRECTORY
           mv [OPTION]... -t DIRECTORY SOURCE..         
    
           常用选项:
                -i:交互式;
                -f:force
    

    rm命令:remove
            rm [OPTION]... FILE...
    
            常用选项:
                -i:interactive
                -f:force
                -r: recursive
    
                删除目录:rm -rf PATH_TO_DIR
    
                    危险操作:rm -rf 
    

    变量:

        命名的内存空间;
            变量类型:
                字符型:
                数值型
                    精确数值:
                    近似数值:
    
                存储格式、数据范围、参与运算;
    

    相关文章

      网友评论

          本文标题:note_4.2_Shell

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