Bash基础

1. shell整体概念:
    shell、KDE、Application -> Kernel -> 硬件
    
2. shell的种类:
    记录文件:/etc/shells
    类别:
        /bin/bash
        /bin/sh (已被bash取代,软链接的是bash)
        /bin/tcsh
        /bin/csh (已经被tcsh取代,软连接的是tcsh)
        /sbin/nologin

3. linux内置bash作为默认的shell的原因:
    1)历史记录命令:history
    2)命令与目录、文件自动补全(tab键)
    3)命令别名设置命令:alias
    4)工作控制、前景背景控制:job control,foreground,background
    5)程序化脚本:shell script
    6)通配符
    
4. 判断命令是bash内置命令还是外部命令:
    type [-tcp] cmd
    如:type -t cd -> builtin (file,外部;alias,别名;builtin,bash内置命令)
    
5. 变量操作:
    变量声明:
        declare [-airx] varname 其中,-a为数组,-i为整数,-r为只读即不可更改或者unset,-x为export    
        如:declare -i sum=100+200 -> 300,若无-i选项,则为100+200
    
    变量赋值:
        直接赋值:varname=value,如:myname='Rudy Vivo'
        拼接:PATH=$PATH:/home/bin, varname2='$varname, have a good day'
        计算:version=$(username -r)
        
        注意:
            1)变量名与常规编程语言要求类似;
            2)等号左右侧不能有空格;
            3)变量赋值如果包含空格等特殊符号,需要用引号括起来;
            4)变量可不用声明,可直接使用和赋值
    取消变量:
        unset varname (不用$)
    
    查看变量:
        单个:echo $varname
        全部:set (自定义变量 + 环境变量)
        
    环境变量:
        查看:env
        自定义变量 & 环境变量转换:
            export
            declare
        
    变量赋值时单引号和双引号的区别:
        var1='hello'
        var2='$var1, Vivo'        hello, Vivo
        var3="$var1, Vivo"        $var1, Vivo
        
    从键盘获取输入的变量值:
        read [-p 输入提示字符] [-t 等待时间] varname
        
    变量内容处理:
        删除:
            从左侧开始,取最短的部分:#,取最长的部分:##。 如:echo $(PATH#*:bin)
            从右侧开始,取最短的部分:%,取最长的部分:%%。 如:echo $(PATH%%:)
        替换:
            替换第一个:${变量/旧字符串/新字符串}, 替换全部:${变量//旧字符串/新字符串}。
        变量设定和替换:
            ${str-expr} 如果str没有设定,返回expr的值;否则,返回str自身的值;
            ${str:-expr} 如果str没有设定或者str为空字符串,返回expr的值;否则,返回str自身的值。
        
6. 查看语系设置:
    locale
    
7. 系统资源配置:
    ulimit [-SHacdfltu] [配额]
    如:ulimit -f 10240限制用户仅能创造10M以内的文件
    
8. 命名别名设置与取消:
    设置:alias        如:alias ll='ls -l --color=tty'
    取消:unalias    如:unalias ll
    
9. history:
    文件记录位置:~/.bash_history
    记录条数:HISTFILESIZE
    
10. bash环境设置:
    启动顺序:
        1)/etc/profile,包含:PATH、MAIL、USER、HOSTNAME、HISTSIZE
        2)~/.bash_profile
        3)~/.bashrc
        4)/etc/bashrc
        5)开始操作bash
    系统设置更新:source或者. (修改配置后,可直接执行source/.,立即生效)
    
11. 数据重定向:
        标准输入:< 或者 << 结束字符串 (如:cat catfile << "eof")
        标准输出:> 或者 >> (注意:>为覆写,>>为append)
        错误输出:2> 或者 2>>
        注意:标准输出和错误输出可合并,同时使用。即:> ** 2> *
        
12. 命令执行的判断依据(多指令根据上一个指令情况决定是否执行):
    1)shell脚本;
    2)无关命令:cmd1;cmd2;        相关命令:cmd1 && cmd2(仅cmd1执行完成切正确执行,才执行cmd2), cmd1 || cmd2(cmd1执行不成功才执行cmd2)
    
13. 管道命令:
    取出文本或文件中指定部分的列(多行):cut [-d'分隔符'] [-f要取得段数] [-c]
    查找包含有指定内容的行:grep [-acinv] 搜索字符串 filename
    排序:sort、uniq、wc
    双重定向:tee。 如:ls -l | tee -a ~/homefile | more
    文本删除和替换:tr
    空格和tab替换:col [-xb]
    文本内容关联:关联关系相连:join; 无关联关系相连:paste
    空格和tab转换: expand & unexpand
    文件切割:split [-bl]  file prefix
    文件合并:用数流重定向即可。 如:cat termcap* >> termcapback
    参数代换:xargs     如:cut -d':' -f1 /etc/passwd | head -n 3| xargs finger
    文件名替换:管线命令中用到文件名(如tar)时,该stdin与stdout可利用减号来替代。

你可能感兴趣的:(shell,bash,管道)