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

  • 相关阅读:
    SQL中 patindex函数的用法
    纵表与横表互转的SQL
    几种数据库的大数据批量插入【转】
    使用cmd命令行窗口操作SqlServer
    C#性能优化实践
    C# 图像处理(二)—— 黑白效果
    SQLSERVER系统视图
    SQLServer行列转换 Pivot UnPivot
    C#图片处理常见方法性能比较
    GSM局数据制作1(Erision)
  • 原文地址:https://www.cnblogs.com/moveofgod/p/3160479.html
Copyright © 2011-2022 走看看