标签:
1.1、打开终端后,就会出现一个提示符,其形式通常如下:
或者是:
要么就简单地以$或#表示。
($表示普通用户,#表示超级用户(root user))。
1.2、linux下的所有脚本语言,都以#!后跟解释权路径这样一个被称为shebang的特殊行作为起始的。shell脚本常以#!/bin/bash起始。
有两种运行脚本的方式:一种是将脚本作为sh命令的参数,另一种是将脚本作为具有执行权限的可执行文件。
将脚本作为参数时运行方式如下:
或者
赋予脚本权限:
执行:
执行过程:shell程序读取首行,查看shebang行是否为#!/bin/bash。它会识别/bin/bash,并在内部以$ /bin/bash a.sh这样的形式执行脚本。
1.3、当一个终端被打开时会执行一组初始化指令,这组指令位于home目录下的.bashrc文件(~/.bashrc)。
~./bash_history脚本用于保存用户运行过 的命令。~是一种简写,代表用户的home目录 的路径。
命令是通过换行符来分隔的:$ cmd1;cmd2
等同于 $cmd1
cmd2
注释以#起始,一直延续到行尾
2、终端打印
2.1、echo
单引号、双引号、不带引号都可以完成同样的任务:
$ echo “welcome to bash”
$ echo ‘welcome to bash’
$ echo welcome to bash
这三种方法看起来相似,但各有一些特殊用途和副作用。
三种方法的副作用如下:
该命令参数很多,必须用一篇文章 才能叙述的完。
2.2、printf
和c语言的printf完全一样。
补充:
echo和printf中的标志(如-e、-n等)应该出现在命令行内任何字符串之前,否则bash会将其视为另一个字符串。
在echo中转义换行符
默认情况下,echo会将一个换行符追加到文本尾部,使用-n标志可以可以忽略结尾换行符。
彩色打印
彩色文本:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,杨红=35,青色=36,白色=37
如:echo -e “\e[1;31m This is red text \e[0m”
\e[a;31m 将颜色设为红色,\e[0m将颜色置回
彩色背景:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,杨红=45,青色=46,白色=47
如:echo -e “\e[1;42m green background \e [0m”
3、变量与环境变量
脚本语言中的变量通常是动态类型的,不需预先声明类型,直接赋值即可。bash中的变量皆为字符串。一些特殊变量会被shell和操作系统用来存储一些特别的值,即环境变量。
env命令:查看与每个进程运行时 的环境变量:
ID获取:假设一个叫做gedit的程序正在运行。可以使用pgrep命令来获取gedit的进程ID:
此时使用
命令将会返回一个包含环境变量名及其对应变量值的列表。每一个变量以name=value的形式表述,由null字符(\0)分隔,将\0用\n替换,既可以在每一行显示一对name=value。替换用tr命令实现:
4、变量操作
赋值:var=value
如果值中包含任何空白字符(如空格),即必须使用单引号或双引号。
注意:var0=value不等于var = value,前者是赋值操作,后者是相等操作。
在变量名之前加上 $ 前缀就可以打印出变量 的内容:
5、环境变量
export命令用来设置环境变量:
#也可以使用
$ PATH
="$PATH:/home/user/bin"
$ export PATH
从当前shell脚本执行的任何程序都会继承这个变量。我们还可以按照自己的需要,在执行的应用程序或shell脚本中到处特定的变量。默认情况下有很多变量可供使用。
PATH就是其中之一:
在给出所要执行的命令后,shell自动在PATH环境变量所包含的目录列表中(各目录路径之间以冒号分隔)查找对应的可执行文件。$PATH通常定义在/etc/environment或/etc/profile或~/.bashrc
还有一些众所周知的环境变量:HOME、PWD、USER、UID、SHELL
6、一些技巧
6.1获取字符串长度 : length=${#var}
$ echo${#var} 20
6.2、识别当前shell版本
bash
6.3、检查是否为超级用户
UID是一个重要的环境变量,可以用于检查当前脚本是以超级用户还是以普通用户身份运行的:
6.4、修改Bash提示字符串
可以利用 PS1 环境变量来定制提示文本。默认shell提示文本是在文件 ~/.bashrc 的某一行设置的。
#设置字符串,可以输入:
$ PS1
="PROMPT>"
标签:
原文地址:http://www.cnblogs.com/xdjyw/p/4993816.html