第1章小试牛刀
1.2 在终端中显示输出
用户通过终端会话同shell环境打交道
shell可以通过多种方法和格式显示文本
(1)命令都是在终端会话中输入并执行
打开终端时会出现一个提示符
(2)$ 表示普通用户 #表示管理员的用户root
最好不要以root用户直接使用shell来执行任务
推荐使用普通用户,借助sudo这类工具来运行特权命令,
执行效果和root一样
(3)shell脚本通常以shebang起始:
#!/bin/bash
#!位于解释器路径之前
/bin/bash是Bash的解释器命令路径,bash以#符号开头的行当做注释
(脚本的第一行可以使用shebang来定义解释该脚本所使用的解释 器)
(4)脚本的执行
将脚本名作为命令行参数
bash + 脚本名.sh
授予脚本执行权限 ,将其变为可执行文件
chmod +x 脚本名.sh
或者
chmod 755 脚本名.sh
再打开脚本
./脚本名.sh
内核会读取脚本的首行并注意到shebang为#!/bin/bash
它会识别出/bin/bash并执行该脚本
/bin/bash 脚本名.sh
默认情况下, echo在每次调用后悔添加一个换行符
只需要将文本放入“ 文本 ”双引号中。echo命令就可以将文本在终端打印出来
不使用双引号也可以得到同样的输出结果
使用单引号也可以
注意
双引号允许shell解释字符串中出现特殊字符,单引号不会对其 做任何解释
(2)printf命令接受引用文本或由空格分隔的参数。
可以使用格式化的字符串来指定字符串的宽度,左右对齐方式等
例如
可以用vi文本编辑器来写脚本
直接按 i
进入插入模式
#!/bin/bash
#文件名 printf.sh
printf "%-5s %-10s %-4s\n " No Name Mark
printf "%-5s %-10s %-4.2f\n " 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n " 2 James 99.3456
printf "%-5s %-10s %-4.2f\n " 3 Jeff 77.3456
```bash
在这里插入代码片
然后输入 chmod +x ./printf.sh
加权限变成可执行文件
./printf.sh
打开文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/66958cf1f0ce46fc832bac13caa3f282.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5q2M6KGM5aSp,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
## 1.2.4补充内容
1.默认情况下,echo会在文本的尾部追加一个换行符, 可以使用-n 来禁止
echo 接受双包含转义序列的双引号字符串作为参数
![在这里插入图片描述](https://img-blog.csdnimg.cn/c4183902a3254ffea53f5370d735b725.png#pic_center)
2.打印彩色输出
脚本可以使用转义序列在终端生成彩色文本
文本的颜色是由对应的色彩码来描述
其中包括,重置=0,黑色=30,红色=31
绿色32,黄色=33,蓝色=34,洋红=35,
青色=36,白色=37
![在这里插入图片描述](https://img-blog.csdnimg.cn/ee889a1637ed42d0b20529d49d525354.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6ZW_5q2M6KGM5aSp,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
```bash
echo -e "\e[1;31m This is red text \e[0m "
echo -e "\e[1;32m This is green text \e[0m "
echo -e "\e[1;33m This is yellow text \e[0m "
echo -e "\e[1;34m This is blue text \e[0m "
echo -e "\e[1;35m This is magenta text \e[0m "
echo -e "\e[1;36m This is cyan text \e[0m "
echo -e "\e[1;37m This is white text \e[0m "
其中\e[1;31m是一个转义字符串,可以设置颜色为红色,\e[0m将颜色重新置回
对于背景的颜色是由对应的色彩码来描述
其中包括,重置=0,黑色=40,红色=41
绿色42,黄色=43,蓝色=44,洋红=45,
青色46,白色47
echo -e "\e[1;41m Red Background \e[0m "
echo -e "\e[1;42m Green Background \e[0m "
echo -e "\e[1;43m Yellow Background \e[0m "
echo -e "\e[1;44m Blue Background \e[0m "
echo -e "\e[1;45m Magenta Background \e[0m "
echo -e "\e[1;46m Cyan Background \e[0m "
echo -e "\e[1;47m White Background \e[0m "
要看其他可以用命令man console_codes来查看文档
可以使用printent命令来查看当前shell所定义的全部环境变量
要查看其他进程的环境变量,可以使用如下命令
cat /proc/$PID/environ
PID 是相关进程的进程ID
如果有一个叫做gedit的应用程序在运行的话
可以使用pgrep命令来获取到gedit的进程ID
比如得到gedit的进程ID为12501
要生成一份易读的报表,可以用cai 命令输出通过管道传到tr ,将其中的\0替换成\n
cat /proc/12501/environ | tr ‘\0’ ‘\n’
varName=value
注意
varName = value 是一个常见的错误
两边没有空格是赋值操作符
加上空格的等号表示等量关系测试
var=“value”
输出如下
echo $var
还可以写出这样
echo ${var}
可以在printf,echo或其他命令的双引号中引用变量值
#!/bin/bash
fruit=apple
count=5
echo "We have $count ${fruit}(s)"
输出结果
因为shell使用空白字符来分隔单词,所以要加上()花括号来告诉shell这里的变量名是fruit 而不是
fruits
export命令声明将由子进程所继承的一个或者多个变量
这些变量被导出之后,当前的shell脚本执行的任何应用程序都会获取这个变量
PATH变量列出一系列可供shell搜索特定应用程序的目录
echo $PATH
各目录路径之间以:冒号分隔
需要在PATH中添加新的路径
可以使用命令
export PATH="$PATH:/home/user/bin"
另外还有一些总所周知的环境变量
:HOME , PWD,USER, UID ,SHELL等
length=${var}
var=123456789
echo ${#var}
继续学习