zoukankan      html  css  js  c++  java
  • bash

    shell 种类:
    -------------------------------------------------
    shell 有很多种类, 大致分为4类
    /etc/shells 是本机能够使用的 shell
    当我们顺利登陆了linux, linux就会依据 /etc/passwd档案给我们设定一个shell (默认的就是bash)
    环境变量可以被 子 bash 继承
    执行某个指令时, 想要一部分先执行时, 那么要使用(), 参考下例:
    cd /lib/modules/$(uname -r)/kernel // 这个例子就会先执行uname -r

    history:
    --------------------------------------------------------------
    history 10  // 查看最近的10条命令
    命令记录在 .bash_history 中 // 可以查看曾经的举动

    history -w -r 将shell中的历史写入文件, 或从文件读出
    history n  列出最近 n 条命令
    !76        执行第76条指令( 注意 ! 与 76 之间没有空格 )
    !! 执行上一个指令( 相当于按 上箭头 + enter )
    !command 例如 !sq 由现在向上搜索到最近的匹配命令执行, 例如搜索到sqlplus /nolog就可以执行这条语句, 很方便

    变量内容删除与替换 测试
    ----------------------
    删除
    echo ${PATH#/*kerberos/bin:} 其中:
    # 表是从前面开始删除 最短的一个
    * 任意多个字符
    -- 含义, 删除类似这样的最短的字符/kerberos/bin:
    echo ${PATH#/*:}
    -- 含义, 删除第一个冒号, 并且包含冒号之前的所有字符
    ## 表示从前面开始删除 最长的一个
    echo ${PATH##/*bin:}
    -- 含义, 删除最长的一个带 /bin: 的字符串
    % 表示从后边开始删除
    echo ${PATH%bin*}
    -- 含义, 从后边开始找, 第一个匹配bin的就删除
    echo ${PATH%bin:*}
    -- 含义, 从后边开始找, 0-任意字符都没关系, 一直到 bin: 后边到 bin: 全部删除
    -- 注意* 号得位置, 跟从前后找是有关系的
    %% 从后边最长的, 删除
    替换
    有点类似sqlplus中的取代
    echo ${PATH/sbin/SBIN}
    将左边的sbin取代成SBIN
    echo ${PATH//sbin/SBIN}
    符合的全部取代, 而不是只取代一个

    大括号使用
    PATH= ${PATH}:/home/bin  // 扩充变量时要加 ${}
    name=${name}yes, // 注意此例, 如果没有{} 就会变成下边含义
    name=$nameyes, // 这表示name这个变量=nameyes这个变量

    测试
    使用减号进行测试
    username=${my_name-root}
    这里的 username 如果 my_name没有定义那么
    username=root 如果 my_name有定义那么
    username=my_name
    冒号结合减号使用
    username=${my_name:-root}
    注意此处有一个冒号+减号
    含义,如果my_name没有被定义或者被定义成空串那么username就是root, 否则就是my_name,针对只是减号得情况追加了测试空串

    别名

    alias lm = 'ls -al | more'
    unalias = lm

    env , set:
    ----------------------------------------------------------------
    env : 查看环境变量
    set : 观察所有变量, 包括与 bash 操作窗口有关的变量, 以及用户自己定义的变量

    $ 本身也是变量, 表示PID, echo $$ 显示当前的PID号
    ? 表示上一次执行返回结果, 0表示执行成功.

    Read, array, declare
    -------------------------
    read [-pt] variable
    declare [-aixr] variable
    其中数组: ( 只支持1维数组 )
    ${数组}, 例如 echo "${var[1]}, ${var[2]}"

    login 与 non-login shell
    --------------------------------------
    login shell: 读取的配置文件:
    1. /etc/profile  -- 系统设定, 不用修改
    2. ~/.bash_profile 或 ~/.bash_login或~/.profile  --个人设定
      ( 如果 bash_profle不存在才读另外两个文件, 如果bash_login不存在才读 profile )
    source ~/.bash_profile ( 或 . ~/.bash_profile)使配置文件生效
    non-login shell 读取的配置文件:
    ~/.bashrc

    终端机环境设置 stty, set
    --------------------------
    stty: ( set tty)
    stty -a 查看所有设置
    ^表示ctrl,

    通配符和特殊符号
    --------------------------
    * : 0到无穷多个字符
    ? : 一定有一个字符
    []: 一定在括号内
    [-]: [0-9] 之中的所有字符
    [~]: 不在里边
    !  : 逻辑非

    数据流重定向
    --------------------------
    标准输入 ( stdin ) : 代码为 0 , 使用 < 或 << ;
    << 当输入某个字符时, 完毕 例如: "EOF"
    标准输出 ( stdout ) : 代码为 1, 使用 > 或 >>;
    >> 表示接着之前的文件继续输出
    标准错误输出 ( stderr ) : 代码为 2, 使用 2> 或 2>> ;
    将错误和正确写到一个文件:
    find /home -name .bashrc >list_file 2>&1

    tee 双向重定向
    ls -alF | tee filename | more ( -a 累加方式 )

    多个指令: && || ;
    --------------------------------
    管线命令 |

    截取命令 cut, grep
    cut -d ':' -f 5 ( 分隔符是 :, 第5个 field )
    cut -c 5,10 /etc/passwd ( 只解决第5个和第10个字符)
    cut -c 6-10 /etc/passwd ( 解决6至10个字符 )
    grep -i 忽略大小写 -n 输出行号 -v 反响选择
    --color=auto 显示颜色

    sort 排序
    uniq 去掉重复
    wc   统计信息 -l -w -m
    split -b 大小分割, -l 行分割
    cd /tmp; split -b 300k /etc/termcap termcap 会生成 termcapa, termcapb, 等等前边固定最后一位是a,b,c等
    ls -al / | split -l 10 - lsroot
    中间的 - 并当成 stdin 或 stdout 标准输入输出
    xargs 作为参数使用的指令
    cut -d':' -f 1 /etc/passwd |head -n 3| xargs finger

  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/moveofgod/p/3160479.html
Copyright © 2011-2022 走看看