zoukankan      html  css  js  c++  java
  • 【linux之bash】

    bash的发展

    1974年 贝尔实验室 Bourne Bourne Shell --> Bsh.sh
    1978年 berke bill jey C shell --> Csh tcsh
    80年代初,贝尔实验室 Korn korn shell -->Ksh
    1983年左右,基于bsh和ksh开发了bourne-again shell --> bash 红帽里面默认使用的shell

    查看当前系统支持的shell类型

     cat /etc/shells
    
    # List of acceptable shells for chpass(1).
    # Ftpd will not allow users to connect who are not using
    # one of these shells.
    
    /bin/bash
    /bin/csh
    /bin/ksh
    /bin/sh
    /bin/tcsh
    #/bin/zsh
    bash
    1.命令历史,命令补全
    2.管道,重定向
    3.命令别名
    4.命令行编辑
    5.命令行的展开
    6.文件名的通配
    7.变量的设定
    8.编程

    bash的命令历史记录

    每个用户的家目录里面,有一个隐藏文件叫.bash_history
    默认情况下,内存中的命令历史不会自动的存放到文件中,除非注销或重启

    history 查看命令历史记录
    -c:清空命令历史缓冲区
    -w:手动的将历史缓冲区保存至文件

    !1 :执行曾经执行过的第一条命令

    命令补全

    TAB键(由于shell中包含的PATH变量才能命令补全)
    单击TAB建:补全唯一存在的命令
    双击TAB建:命令参数在不唯一情况下为我们提供选择列表

    echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    ESC+. 把上一个命令执行的最后一个参数补全(不同时按)

    !$ : 把上一个命令执行的最后一个参数补全

    ALT+. :在终端上有效。如上功能(同时按下)

    管道

    连接两个命令的通道,将前面命令的输出结果作为后面命令的执行条件或参数来使用
    管道的符号: |
    所有参与管道连接的命令一般都必须有输出结果,否则没有意义

     

    命令的别名

    自定义命令
    alias
    定义一个命令的别名;查看当前所有已经定义的别名
    unalias
    取消一个定义过的命令的别名

    在设置命令别名的时候,使用命令来实现的会立即生效,但是注销后失效
    alias cp='cp -i'

    写入.bashrc,永久生效

    开关机

    注销: exit ,logout ,ctrl+d
    重启: shutdown -r (now,0,+#,12:00) , reboot , init 6
    关机: shutdown -h (now,0,+#,12:00), poweroff,halt,init 0

    I/O重定向

    • 文件描述符

    0:标准输入:从键盘输入
    1:标准输出:到显示器上的输出
    2:标准错误:到显示器的错误消息

    • 输入重定向

    符号:<

    • 输出重定向

    符号:> (覆盖输出重定向)
    >>(追加输出重定向)

    <<:here document(此处文档)

    cat << EOF > test.txt
    das
    sdas
    sadas
    EOF

    • 错误重定向 2>, 2>>

    /dev/null 黑洞设备

    echo $? 用来描述上一条命令是否成功执行,如果成功执行,返回值为0;如果执行失败,返回值为1-127间的正整数。1,2,127被系统保留,其他我们可以自己定义

    • &>:同时重定向(错误输出重定向)

    一个命令在执行之后,有两个返回值,
    1.命令执行结果返回值
    2.命令执行状态返回值

    创建文件
    > new.txt
    echo > new.txt

    BASH中的特殊符号 man 7 glob

     1.文件名通配符
        *:通配绝大多数的多个字符(文件名最开始的.无法通配)。任意多个任意字符
        ?:通配除了文件名开头的.以外的任意单个字符
        []:通配任意指定范围内的单个字符(不允许包括特殊符号)
        ^:脱字符,取反,不包括,跟中括号配合使用:
        [:alpha:]:不区分大小写的字母,大写和小写字母
        [:lower:]:小写字母
        [:upper:]:大写字母
        [:digit:]:数字
        [:alnum:]:大写字母、小写字母和数字
        [:space:]:空格
        [:punct:]:特殊符号
        
        ls *[[:space:]]*  中间带空格
        ls *[^[:digit:]] 
      2.各种引号
        "":弱引用符号,正常进行变量代换
        '':强引用符号,不进行变量替换
        ``:shell将反引号引用的内容当作命令优先执行,也叫命令替换   相当于$(命令)
      3.反斜线 
       转义字符,将其后一个字符转义为普通字符
      4.逻辑操作符
       1) &&-逻辑与
         命令1 && 命令2
         如果命令1的执行状态返回值为假,则命令2不执行
         如果命令1的执行状态返回值为真,则命令2执行
         
         只要前面为假,整个结果一定为假
         只要前面为真,整个结果取决于后者
         只要前面为假,后面不再判断
         mkdir /bin && cd /bin  
         
       2)||-逻辑或
          只要一个结果为真,整个结果就是真
          只要判断一个结果为真,后面不再判断
          
          如果命令1的执行状态返回值为假,则命令2执行
          rm -rf /china || cd /
       3)!-逻辑非
          ! 命令:将命令的执行状态返回值取反
          ! ls /china && mkdir /china
          注意:!后面必须有空格,若不加空格就是读取命令缓冲区
          !改变的是命令的执行状态返回值
       4) :-并列

    变量的设定

    • bash的环境变量配置文件

    从作用生效范围来划分,有两类
    全局配置文件
    /etc/profile /etc/bashrc /etc/profile.d/*.sh
    用户个人配置文件(用户家目录下)
    .bash_profile .bashrc

    从配置文件的功能来将,有两类
    profile类
    设置全局变量,执行命令或脚本
    bashrc类
    设置本地变量,定义命令的别名

    • 登录式shell

    ①su - | -l | --login USERNAME 的加载顺序
    /etc/bashrc-->/etc/profile.d/*.sh
    ②从终端正常登录配置文件加载顺序:/etc/profile->/etc/profile.d/*.sh->-/.bash_profile->-/.bashrc->/etc/bashrc

    • 非登录式shell

    ①su USERNAME
    ②在图形界面中打开的终端窗口
    配置文件加载顺序:
    /etc/profile->/etc/profile.d/*.sh->-/.bashrc

    /etc/profile的作用:
    USER变量;
    LOGNAME变量;
    MAIL变量;
    PATH变量;
    HOSTNAME变量;
    HISTSIZE变量;
    umask;
    调用/etc/profile.d/*.sh

    .bash_profile的作用
    调用了.bashrc文件
    在PATH变量后面加入了“:$HOME/bin”这个目录

    .bashrc的作用
    定义默认的别名
    调用/etc/bashrc

    • 注销时生效的环境变量配置文件

    .bash_logout

    历史记录配置文件
    .bash_history

    shell登录信息
    本地终端欢迎信息:/etc/issue

    alt + F2 切换终端

    远程终端欢迎信息:/etc/issue.net
    转义字符不能使用,是否显示此欢迎信息由SSH的配置文件
    /etc/ssh/sshd_config决定,加入“Banner /etc/issue.net
    才能显示(记得重启SSH服务)

    service sshd restart


    登陆后欢迎信息:/etc/motd
    不管是本地登录,还是远程登录,都可以显示此欢迎信息

  • 相关阅读:
    无向图的双连通分量
    以管理员身份运行软件cmd命令
    异或
    递推求解DAG最长路径长度及最长路径条数
    有向图转强连通图最少加边数
    Tarjan强连通分量(scc)
    uni封装request请求
    生命周期
    页面路由,以及传值
    WXS 模块
  • 原文地址:https://www.cnblogs.com/smallmars/p/8442908.html
Copyright © 2011-2022 走看看