zoukankan      html  css  js  c++  java
  • shell-bash学习01基础、打印、环境变量

    基础

    终端提示符: username@hostname$;

    • $: 一般用户
    • #:root用户

    运行脚本

    • Bash执行: * bash script.sh;
    • 直接运行:
      • 脚本开头添加shebang起始: #!/bin/bash,解析Bash解释器命令路径;
      • 设置运行权限: chmod a+x script.sh; //所有人都可执行
      • 直接使用脚本: ./script.sh;

    路径:

    • file = ./file;
    • ~:表示主目录,通常是/home/user,其中user是用户名;

    命令分隔

    • Bash中每个命令或命令序列是通过分号或换行符分隔;

    注释

    • #注释开始到行尾;

    终端打印的基本命令

    • 打印字段可以不带引号/单引号/双引号;
    • 不带引号要注意些特殊的字符,如分号;

    echo

    • 默认换行;
    • 变量替换的单引号中无效;
    • 添加参数
      * -n: 不换行;
      * -e: 使用转义序列;
    • 打印彩色输出:
    //代码
    echo -e 'e[1;31m This is red text e[0m'
    echo -e 'e[1;31m red texte[1;32m green text e[0m'
    //原理
    e[1;31m: 将颜色设置为红色
    e[0m: 将颜色重新设置
    常用颜色码: 
    重置=0 黑色=30 红色=31 绿色=32 黄色=33 蓝色=34 洋红=35 青色=36 白色=37
    
    
    #!  /bin/bash
    
    # check if stdout is a terminal...
    if test -t 1; then
    
        # see if it supports colors...
        ncolors=$(tput colors)
    
        if test -n "$ncolors" && test $ncolors -ge 8; then
            bold="$(tput bold)"
            underline="$(tput smul)"
            standout="$(tput smso)"
            normal="$(tput sgr0)"
            black="$(tput setaf 0)"
            red="$(tput setaf 1)"
            green="$(tput setaf 2)"
            yellow="$(tput setaf 3)"
            blue="$(tput setaf 4)"
            magenta="$(tput setaf 5)"
            cyan="$(tput setaf 6)"
            white="$(tput setaf 7)"
        fi
    fi
    
    echo "${red}error${normal}"
    echo "${green}success${normal}"
    
    echo "${green}0.052${normal} ${bold}${green}2,816.00 kb${normal}"
    # etc.
    
    

    printf

    • 不换行;
    • 使用的参数和C语言中printf函数一样: 使用引用文本或由空格分隔的参数;
    • 使用格式化字符串例子:
    //代码
    printf "%-5s %-10s %-4s
    " No Name Mark
    printf "%-5s %-10s %-4.2f
    " 1 Jinks 80.3444
    printf "%-5s %-10s %-4.2f
    " 2 pen 90.443
    //原理
    %s,%c,%f都是格式替换符,参数放在之间;
    %-5s:指定一个左对齐的宽度为5的字符串替换;
    %-4.2f:格式化浮点数,保留两位小数; 
    

    变量与环境变量

    • 无论给变量赋值时有没有使用引号,值都会以字符串的形式储存;
    • 环境变量是未在当前进程中定义,而从父进程中继承而来的变量;

    变量操作

    • 赋值: var=value;注意没有空格;
    • 打印: echo $var / echo ${var}; 注意使用单引号时,变量不会被扩展,将依照原样显示;
    • 获取字符串长度: echo ${#var};

    获取进程环境变量

    • 获取正在运行程序的进程ID: pgrep $P;
    • 使用cat获取环境变量: cat /proc/$PID/environ;
    • 优化显示使以NULL字符隔开:cat /proc/$PID/environ | tr '' ' ';

    查看当前shell环境变量

    • env;

    设置当前shell环境变量

    • export命令用来设置环境变量;至此之后,从当前shell脚本执行的任何应用程序都会继承这个变量;注意其他shell脚本不会受影响;
    //修改
    HTTP_PROXY=192.168.1.23:3128
    export HTTP_PROXY
    
    //添加
    PATH="$PATH:/home/user/bin" 
    export PATH
    
    • 常用的环境变量:
    SHELL: 当前使用的shell类型;
    PWD: 当前目录;
    UID: 用户类型, 超级用户为0;
    HOME: 主目录;
    PS1: Bash提示字符串;
    

    linux中的配置文件

    常用文件

    • /etc/profile中设定的变量(全局)的可以作用于任何用户;~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量;
    • /etc/profile: 为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行;并从/etc/profile.d目录的配置文件中搜集shell的设置;
    • /etc/bashrc: 为每一个运行shell的用户执行此文件;
    • ~/.bash_profile: 每个用户都可使用该文件输入专用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件;
    • ~/.bashrc: 包含专用的bash信息,当登录时以及每次打开新的shell时,该文件被读取;
    • ~/.bash_logout:当每次退出系统/shell时,执行该文件;

    设置环境变量时的级别区分

    • 安装程序后可能需要设置的环境变量: PATH: 可执行程序的查找路径; LD_LIBRARY_PATH: 动态库的查找路径;
    • 仅在当前shell中配置: export PATH="$PATH:/my_new_path";
    • 当前用户级别: 在~/.bashrc中添加此条语句;
    • 系统级别(所有用户): 在/etc/profile中添加;
    • 注意他们的环境变量覆盖是从shell中的配置开始的;
    • 设置生效:
      * 重启
      * 重现执行修改变变量的文件: source /etc/profile; / source ~/.bashrc;

    优化添加路径

    • ~/.bashrc为例;
    afterpend() { eval "$1=$$1:$2"; }
    afterpend PATH /test/bin
    
  • 相关阅读:
    解决DataGridView绑定List后不能排序的问题
    最新的皮肤下载
    我收录的名言
    HttpRequest访问Https带有证书并使用WSDL文档生成代理类方案(2)
    最新的Functions 类
    华兴软通短信接口简单使用WebServices版
    最新的SqlHelper 类
    闲来没事写个记事本玩玩!!!
    "基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系"证书验证失败的解决过程(3)
    FCK配置
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4952935.html
Copyright © 2011-2022 走看看