基础

终端提示符: 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. 开始使用 Fresco

    如果你仅仅是想简单下载一张网络图片,在下载完成之前,显示一张占位图,那么简单使用 SimpleDraweeView 即可. 在加载图片之前,你必须初始化Fresco类.你只需要调用Fresco.ini ...

  2. WIN7 64位系统下,右下角的声音和电源图标不见的解决办法

    近日,电脑突然出现任务栏右下角的声音和电源图标消失不见的问题,重启仍旧没有修复,后来找到了解决办法 解决办法: 1.Ctrl+Shift+Esc键调出windows资源管理器. 2.找到进程中的exp ...

  3. Tmux的安装、使用与配置

    tmux 安装.使用.配置 因上线需求,故需要使用tumx,方便上线 tmux功能 提供了强大的.易于使用的命令行界面 可横向.纵向分割窗口 窗格可以自由移动和调整大小,或者直接利用四个预设布局之一 ...

  4. ROW_NUMBER()函数的使用

    SQL Server数据库ROW_NUMBER()函数的使用是本文我们要介绍的内容,接下来我们就通过几个实例来一一介绍ROW_NUMBER()函数的使用. 实例如下: .使用row_number()函 ...

  5. 数据结构和算法 – 3.堆栈和队列

    1.栈的实现   后进先出     自己实现栈的代码 using System; using System.Collections.Generic; using System.Linq; using ...

  6. 设计模式学习之装饰者模式(Decorator,结构型模式)(16)

    参考地址:http://www.cnblogs.com/zhili/p/DecoratorPattern.html 一.定义:装饰者模式以对客户透明的方式动态地给一个对象附加上更多的责任,装饰者模式相 ...

  7. Android浏览本地 API文档 + 解决页面加载慢的问题

    火狐浏览器安装离线浏览插件: 用浏览器打开index.html文件,你会发现加载的很慢,原因你懂的,为此,我们可以通过离线的方式 查看本地API文档,用火狐浏览器  +   Work Offline插 ...

  8. penghui_031413 Bat命令学习

    penghui_031413   Bat命令学习 基础部分:====================================================================== ...

  9. [LeetCode] Add Two Numbers

    You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...

  10. <转> jsp:include 乱码问题解决

    jsp include页面出现乱码问题的几种通用解决方法: 1.当jsp include动态文件时(jsp文件)可以在被include的jsp文件头部加上代码: <%@ page languag ...