• bash 基础命令


    bash的基础特性(1):
        
        (1) 命令历史
            history
                环境变量:
                    HISTSIZE:命令历史记录的条数;
                    HISTFILE:~/.bash_history;
                    HISTFILESIZE:命令历史文件记录历史的条数;
    
                history -d OFFSET
                -c
                history #: 显示历史中最近的#条命令;
                -a: 手动追加当前会话缓冲区的命令历史至历史文件中;
    
            调用历史中的命令:
                !#: 重复执行第#条指令;
                !!: 
                !string
    
            调用上一条命令的最后一个参数:
                !$: 
                ESC, .
                Alt+.
    
            控制命令历史的记录方式:
                环境变量:HISTCONTROL
                    ignoredups:忽略重复的命令;连续且相同方为“重复”;
                    ignorespace:忽略所有以空白开头的命令;
                    ignoreboth:ignoredups, ignorespace;
    
                修改环境变量值的方式:export 变量名=""
                    变量赋值:把赋值符号后面的数据存储于变量名指向内存空间;
    
        (2) 命令补全
            bash执行命令:
                内部命令:
                外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到即为要执行的命令;
    
                    直接补全:Tab,用户给定的字符串只有一条惟一对应的命令;
                    以用户给定的字符串为开头对应的命令不惟一,则再次Tab会给出列表;
    
        (3) 路径补全
            把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名;
                如果惟一:则直接补全;
                否则:再次Tab,给出列表;
    
        (4) 命令行展开
            ~: 展开为用户的主目录
            ~USERNAME:展开为指定用户的主目录
            {}:可承载一个以逗号分隔的列表,并将其展开为多个路径
                /tmp/{a,b} = /tmp/a, /tmp/b
                /tmp/{tom,jerry}/hi = /tmp/tom/hi, /tmp/jerry/hi
    
        (5) 命令的执行结果状态
            成功
            失败
    
            bash使用特殊变量$?保存最近一条命令的执行状态结果:
                0:成功
                1-255:失败
    
            程序执行有两类结果:
                程序的返回值;
                程序的执行状态结果;
    
    
    目录管理类命令:
        cd, pwd, ls
    
        mkdir, rmdir, tree
    
        mkdir [options] /path/to/somewhere
            -p: 存在于不报错,且可自动创建所需的各目录;
            -v: 显示详细信息
            -m MODE: 创建目录时直接指定权限;
            
            [root@localhost games]# mkdir -pv 1/{2,3}/{4,5}
                    mkdir: 已创建目录 "1"
                    mkdir: 已创建目录 "1/2"
                    mkdir: 已创建目录 "1/2/4"
                    mkdir: 已创建目录 "1/2/5"
                    mkdir: 已创建目录 "1/3"
                    mkdir: 已创建目录 "1/3/4"
                    mkdir: 已创建目录 "1/3/5"
        [root@localhost games]# mkdir -pv {x,y}_{1,2}
                    mkdir: 已创建目录 "x_1"
                    mkdir: 已创建目录 "x_2"
                    mkdir: 已创建目录 "y_1"
                    mkdir: 已创建目录 "y_2"
            tree: 
            -d: 只显示目录
            -L level:指定显示的层级数目
            -P pattern: 只显示由指定pattern匹配到的路径;
    
        rmdir:删除空目录
            rmdir [OPTION]... DIRECTORY...
                -v: 显示过程;
    
      
    
    文本文件查看类命令:
        cat, tac
        more, less, tail, head
    
        more
            more [OPTIONS...] FILE...
                -d: 显示翻页及退出提示
    
        less
            less [OPTIONS...] FILE...
    
        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命令:
            

          root@localhost games]# stat /etc/rc.d/init.d/functions
          文件:"/etc/rc.d/init.d/functions"
          大小:18104 块:40 IO 块:4096 普通文件
          设备:fd00h/64768d Inode:269800 硬链接:1
          权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
          环境:system_u:object_r:bin_t:s0
          最近访问:2019-03-13 06:31:06.556356472 -0400
          最近更改:2018-01-02 11:29:40.000000000 -0500
          最近改动:2019-02-26 18:43:45.841001981 -0500
          创建时间:-
    [root@localhost games]#

    
            touch [OPTION]... FILE...
                -a: only atime
                -m: only mtime
                -t STAMP:
                     [[CC]YY]MMDDhhmm[.ss]
                -c: 如果文件不存,则不予创建
    
    
    
    文件管理:
        cp, mv, rm
    
        复制命令:cp
            cp [OPTION]... [-T] SOURCE DEST
            cp [OPTION]... SOURCE... DIRECTORY
            cp [OPTION]... -t DIRECTORY SOURCE...
    
            cp SRC DEST
                SRC是文件:
                    如果目标不存在:新建DEST,并将SRC中内容填充至DEST中;
                    如果目录存在:
                        如果DEST是文件:将SRC中的内容覆盖至DEST中;
                            此时建议为cp命令使用-i选项;
                        如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中;
    
            cp SRC... DEST
                SRC...:多个文件
                    DEST必须存在,且为目录,其它情形均会出错;
    
            cp SRC DEST
                SRC是目录:
                    此时使用选项:-r
    
                    如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中;
                    如果DEST存在:
                        如果DEST是文件:报错
                        如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中;
    
            常用选项:
                -i:交互式
                -r, -R: 递归复制目录及内部的所有内容;
                -a: 归档,相当于-dR --preserv=all
                    -d:--no-dereference --preserv=links
                    --preserv[=ATTR_LIST]
                        mode: 权限
                        ownership: 属主属组
                        timestamp: 
                        links
                        xattr
                        context
                        all
                -p: --preserv=mode,ownership,timestamp
                -v: --verbose
                -f: --force
    
        mv: move,移动文件
           mv [OPTION]... [-T] SOURCE DEST
           mv [OPTION]... SOURCE... DIRECTORY
           mv [OPTION]... -t DIRECTORY SOURCE...
           
           常用选项:
                   -i: 交互式
                   -f: 强制
    
        rm: remove,删除
            rm [OPTION]... FILE...
    
            常用选项:
                -i: 交互式
                -f: 强制删除
                -r: 递归
    
                rm -rf 
    
        文本编辑器:nano
            全屏编辑器
    
    1、命令别名(alias)
            通过alias命令实现:
                (1) alias
                    显示当前shell进程所有可用的命令别名;
                (2) alias NAME='VALUE'
                    定义别名NAME,其相当于执行命令VALUE;
    
                注意:在命令行中定义的别名,仅对当前shell进程有效;如果想永久有效,要定义在配置文件中;
                    仅对当前用户:~/.bashrc
                    对所有用户有效:/etc/bashrc
    
                    Note: 编辑配置给出的新配置不会立即生效;
            
                    bash进程重新读取配置文件:
                        source /path/to/config_file
                        .  /path/to/config_file
              
            撤消别名:unalias
                unalias [-a] name [name ...]
    
            Note: 如果别名同原命令的名称,则如果要执行原命令,可使用"COMMAND"
    [root@localhost games]# alias cdnet='cd /etc/sysconfig/network-scripts/'
    [root@localhost network-scripts]# unalias cdnet
    
    
    
    2、glob (globbing)
            bash中用于实现文件名“通配”
    
                通配符:*, ?, []
    
                (1) *
                    任意长度的任意字符
                        a*b: 
                            aab, ab, a123b, 
                            abc
                (2) ?
                    任意单个字符
                        a?b:
                            aab
                            ab, a12b, abc
    
                (3) []
                    匹配指定范围内的任意单个字符
                        [0-9]
                        [a-z]:不区分字符大小写
    
                (4) [^]
                    匹配指定范围外的任意单个字符
                        [^0-9]
    
                专用字符集合:
                    [:digit:]:任意数字,相当于0-9
                    [:lower:]:任意小写字母
                    [:upper:]: 任意大写字母
                    [:alpha:]: 任意大小写字母
                    [:alnum:]:任意数字或字母
                    [:space:]:
                    [:punct:]:标点符号
    
            
        3、bash的快捷键
    
            Ctrl+l: 清屏,相当于clear命令;
    
            Ctrl+a:跳转至命令开始处;
            Ctrl+e:跳转至命令结尾处;
    
            Ctrl+c:取消命令的执行;
    
            Ctrl+u: 删除命令行首至光村所在处的所有内容;
            Ctrl+k: 删除光标所在处至命令行尾部的所有内容;
    
        4、bash的的I/O重定向及管道
    
            程序:指令+数据
                读入数据:Input
                输出数据:Output
    
            打开的文件都有一个fd: file descriptor (文件描述符)
    
            标准输入:keyborad, 0
            标准输出:monitor, 1
            标准错误输出:monitor, 2
    
            I/O重定向:改变标准位置
    
            输出重定向:COMMAND > NEW_POS, COMMAND >> NEW_POS
                >:覆盖重定向,目标文件中的原有内容会被清除;
                >>: 追加重定向,新内容会追加至目标文件尾部;
    
                # set -C: 禁止将内容覆盖输出至已有文件中;
                    强制覆盖:>|
                # set +C: 
    
                2>: 覆盖重定向错误输出数据流;
                2>>: 追加重定向错误输出数据流;
    
                标准输出和错误输出各自定向至不同位置:
                    COMMAND > /path/to/file.out 2> /path/to/error.out
    
                合并标准输出和错误输出为同一个数据流进行重定向:
                    &>:覆盖重定向
                    &>>:追加重定向
    
                    COMMAND > /path/to/file.out 2> &1
                    COMMAND >> /path/to/file.out 2>> &1
             COMMAND > /dev/null 2>&1
      2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null
    输入重定向:< tr命令:转换或删除字符 tr [OPTION]... SET1 [SET2]
      

    [root@localhost /]# tr abc ABC
    hello
    hello
    atest
    Atest
    abc33
    ABC33

    cat anaconda-ks.cfg |head -10 |tr 'a-z' 'A-Z'
    #前10行转换为大写
            HERE Documentation:<<
                # cat << EOF
                # cat > /path/to/somefile << EOF
    
        管道:
            COMMAND1 | COMMAND2 | COMMAND3 |...
    
            Note:最后一个命令会在当前shell进程的子shell进程中执行;
    
            tee命令:   当前屏幕输出,然后重定向到一个文件
         tee [OPTION]... [FILE]...       [root@localhost ~]# ping www.baidu.com |tee ping.out 文本处理工具:wc, cut, sort, uniq wc命令: wc [OPTION]... [FILE]... -l: lines -w: words -c: characters cut命令: cut [OPTION]... [FILE]... -d DELIMITER: 指明分隔符 -f FILEDS: #: 第#个字段 #,#[,#]:离散的多个字段,例如1,3,6 #-#:连续的多个字段, 例如1-6           [root@localhost ~]# cut -d: -f1 /etc/passwd #冒号为分隔符,显示第一列 混合使用:1-3,7 --output-delimiter=STRING sort命令: sort [OPTION]... [FILE]... -f: 忽略字符大小写 -r: 逆序 -t DELIMITER: 字段分隔符 -k #:以指定字段为标准排序 -n: 以数值大小进行排序 -u: uniq,排序后去重

             cut -d: -f1 /etc/passwd #排序,: 为分隔符。指定第一列 uniq命令: uniq [OPTION]... [FILE]... -c: 显示每行重复出现的次数; -d: 仅显示重复过的行; -u: 仅显示不曾重复的行; Note: 连续且完全相同方为重复
  • 相关阅读:
    [VirtaulBox]网络连接设置
    LeetCode
    LeetCode
    LeetCode
    LeetCode-37.Sudok Solver
    LeetCode-36.Valid Sudoku
    LeetCode-52.N-Queen II
    LeetCode-51.N-Queens
    LeetCode-22.Generate Parentheses
    LeetCode-111.Mininum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/zy09/p/10528747.html
Copyright © 2020-2023  润新知