基础

终端提示符: 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 text\e[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\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Jinks 80.3444
printf "%-5s %-10s %-4.2f\n" 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 '\0' '\n';

查看当前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

shell-bash学习01基础、打印、环境变量的更多相关文章

  1. Python 基础-python环境变量、模块初识及字符类型

    (1).模块内置模块.第三方模块.自定义模块初识模块:sys \ os一般标准库存放路径 C:\Users\Administrator\AppData\Local\Programs\Python\Py ...

  2. Bash 中的 _ 是不是环境变量

    首先,我们想到的会是 export(等价于 declare -x)命令: $ export | grep 'declare -x _=' 没有找到,那么结论就是 _ 不是环境变量?当然没那么简单,否则 ...

  3. JAVA_SE基础——2.环境变量的配置&测试JDK

    哈喽,利用晚上的空余时间再写篇心的~~~  谢谢大家 前一篇文章 JAVA_SE基础--JDK&JRE下载及安装http://blog.csdn.net/thescript_j/article ...

  4. (大数据工程师学习路径)第一步 Linux 基础入门----环境变量与文件查找

    环境变量与文件查找 本节介绍环境变量的作用与用法,及几种搜索文件的方法.学会这些技巧高效地使用 Linux. 一.环境变量 1.变量 要解释环境变量,得先明白变量是什么,准确的说应该是 Shell 变 ...

  5. shell基础:环境变量

    子shell是在父shell中打开的shell. 使用pstree查看进程树. $调用环境变量 set查看所有变量内容, env查询环境变量 只是临时改变

  6. Linux学习之十一、环境变量的功能

    环境变量的功能 可以利用两个命令来查阅,分别是 env 与 export 呢! 范例一:列出目前的 shell 环境下的所有环境变量与其内容. [root@www ~]# env SHELL 告知我们 ...

  7. Linux基础入门-环境变量与文件查找

    一.环境变量: Shell中的变量也有不同的数据类型,不用专门指定类型名,可以参与运算,有作用域限制. declare tmp 创建一个变量 可以不用专门声明,可以即用即创建 tmp=shiyanlo ...

  8. linux学习笔记:关于环境变量

    (摘自https://blog.csdn.net/llzk_/article/details/53813266之后整合) 1.linux系统的条件 Linux是一个多用户的操作系统,每个用户登录系统时 ...

  9. Linux学习笔记之Linux环境变量总结

    0x00 概述 Linux是一个多用户多任务的操作系统,可以在Linux中为不同的用户设置不同的运行环境,具体做法是设置不同用户的环境变量. 0x01 Linux环境变量分类 按照生命周期来分,Lin ...

随机推荐

  1. BestCoder24 1001.Sum Sum Sum(hdu 5150) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5150 题目意思:就是直接求素数. 不过 n = 1,也属于答案范围!!只能说,一失足成千古恨啊---- ...

  2. 【Git】笔记5 分支管理2

    来源:廖雪峰 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就会在merge时生成一 ...

  3. HDU 4811 Ball -2013 ICPC南京区域现场赛

    题目链接 题意:三种颜色的球,现给定三种球的数目,每次取其中一个放到桌子上,排成一条线,每次放的位置任意,问得到的最大得分. 把一个球放在末尾得到的分数是它以前球的颜色种数 把一个球放在中间得到的分数 ...

  4. August 22nd 2016 Week 35th Monday

    Have you ever given any thought to your future? 你有没有为将来打算过呢? Have you ever given any thought to your ...

  5. Ubuntu自定义服务

    1.准备脚本 准备好一个bash服务脚本,包括start|stop|restart等参数,将脚本文件命名为“服务名”,拷贝到/etc/init.d/目录下. 2.添加服务sudo update-rc. ...

  6. hdu 2159 FATE

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159 思路:二维完全背包,状态转移方程为: f[j][l]=max(f[j][l],f[j-b[i]] ...

  7. php 上传文件实例 上传并下载word文件

    上传界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  8. Linux安装mysql最新版本纪要

    http://blog.csdn.net/frt007/article/details/50184143 http://blog.csdn.net/wb96a1007/article/details/ ...

  9. Delphi的文件操作

    参考自:http://www.cnblogs.com/railgunman/articles/1800318.html Delphi 中默认有input 和 output 两个文件变量,使用可以不用定 ...

  10. tomcat安装服务和内存参数设置

    第一:安装服务 在dos窗口进入到tomcat的bin目录下,通过如下命令即可将tomcat安装成服务 service.bat install Tomcat2 其中Tomcat2是服务的名称 如果启动 ...