您的位置:首页 > 运维架构 > Shell

shell-bash学习01基础、打印、环境变量

2015-11-10 14:27 1011 查看

基础

终端提示符:
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: