bash的基础特性:

(1)命令历史:history

        环境变量:

                HISTSIZE:命令历史记录的条数

                HISTFILE:~/.bash_history

                HISTFILESIZE:命令历史文件记录历史的条数

        控制命令历史的记录方式

        环境变量:HISTCONTROL

            ignoredups:忽略重复的命令:连续且相同方为“重复”

            ignorespace:忽略所有以空白开头的命令

            ignoreboth:ignoredups+ignorespace

            修改环境变量值的方式:export 变量名="值"

                变量赋值:把赋值符号后的数据存储于变量名指向的内存空间


(2)命令补全

    bash执行命令:

        内部命令:

        外部命令:bash根据$PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到即为要执行的命令

            直接补全:Tab:用户给定的字符串只有一条唯一对应的命令

            以用户给定的字符串为开头对应的命令不唯一,则再次Tab会给出列表


(3)路径补全

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

    如果唯一,则直接补全

    否则,再次Tab,给出列表



目录操作类命令:

    cd,pwd,ls

    mkdir,rmdir,tree


mkdir:创建目录

    mkdir [options] /PATH/TO/SOMEWHERE

        -p:存在并不报错,且可自动创建所需的各目录

        -v:显示详细的信息

        -m MODE:创建目录时直接指定权限


tree:显示目录层级结构

    -d:只显示目录

    -L level:指定显示的层级数目

    -P pattern:只显示由指定pattern匹配到的路径


rmdir:删除空目录

    rmdir [OPTION]... DIRECTORY...

        -v:显示过程


(4)命令行展开

    ~:展开为用户的主目录

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

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

            /tmp/{a,b,c} == /tmp/a,/tmp/b,/tmp/c


(5)命令的执行结果状态

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

        成功:0

        失败:1-255

    程序执行有两类结果:

        程序的返回值

        程序的执行状态结果


练习:

(1)如何创建/tmp/x/y1,/tmp/x/y2,/tmp/x/y1/a,/tmp/x/y1/b,/tmp/x/y2/a,/tmp/x/y2/b

mkdir -p /tmp/x/y{1,2}/{a,b}

(2)如何创建x_m,y_m,x_n,y_n

mkdir  {x,y}_{m,n}

(3)如何创建/tmp/bin,/tmp/sbin,/tmp/usr,/tmp/usr/bin,/tmp/usr/sbin

mkdir -p /tmp/{bin,sbin,usr/{bin,sbin}}


文本文件查看类命令:

    cat,tac

    more,less,tail,head


    more

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

    less


    head

        head [OPTION]... [FILE]...

            -c #:指定获取前#字节

            -n #:指定获取前#行

                -#:指定获取前#行

    tail

        tail [OPTION]... [FILE]...

            -c #:指定获取后#字节

            -n #:指定获取后#行

                -#:指定获取后#行

            -f:跟踪显示文件新追加的内容


文件的时间戳管理工具

touch

文件:metadata,data

    查看文件状态:stat

三个时间戳:

    access time:访问时间,atime,读取文件内容

    modify time:修改时间,mtime,修改文件里的内容(数据)

    change time:改变时间,ctime,修改元数据


touch [OPTION]... FILE...

        -a:only atime

        -m:only mtime

        -t STAMP:

            [[CC]YY]MMDDhhmm[.ss]

        -c:如果文件不存在,则不予创建