Linux脚本学习笔记1-3.26

Linux Shell 脚本攻略(第三版)学习笔记 2022 3.26

第1章小试牛刀
1.2 在终端中显示输出


Linux Shell 脚本攻略(第三版)

  • Linux Shell 脚本攻略(第三版)学习笔记 2022 3.26
    • 学习工具
    • VMware虚拟机16pro,Ubuntu18.04。
  • 一、1.2在终端中输出
  • 二、1.2.1 预备知识
    • 1.2.2.实战演练
    • 1.3使用变量与环境变量
    • 1.3.2变量使用
    • 1.3.3补充内容
  • 总结


学习工具

VMware虚拟机16pro,Ubuntu18.04。


一、1.2在终端中输出

用户通过终端会话同shell环境打交道
shell可以通过多种方法和格式显示文本

二、1.2.1 预备知识

(1)命令都是在终端会话中输入并执行
打开终端时会出现一个提示符
在这里插入图片描述
(2)$ 表示普通用户 #表示管理员的用户root
最好不要以root用户直接使用shell来执行任务
推荐使用普通用户,借助sudo这类工具来运行特权命令,
执行效果和root一样

(3)shell脚本通常以shebang起始:
#!/bin/bash

#!位于解释器路径之前
/bin/bash是Bash的解释器命令路径,bash以#符号开头的行当做注释
(脚本的第一行可以使用shebang来定义解释该脚本所使用的解释 器)
(4)脚本的执行

  1. 将脚本名作为命令行参数
    bash + 脚本名.sh
    授予脚本执行权限 ,将其变为可执行文件

    chmod +x 脚本名.sh
    或者
    chmod 755 脚本名.sh

    再打开脚本
    ./脚本名.sh

    内核会读取脚本的首行并注意到shebang为#!/bin/bash
    它会识别出/bin/bash并执行该脚本

    /bin/bash 脚本名.sh

1.2.2.实战演练

(1)echo 是用于终端打印的最基本的命令
在这里插入图片描述

默认情况下, echo在每次调用后悔添加一个换行符
只需要将文本放入“ 文本 ”双引号中。echo命令就可以将文本在终端打印出来

不使用双引号也可以得到同样的输出结果

Linux脚本学习笔记1-3.26_第1张图片
使用单引号也可以
Linux脚本学习笔记1-3.26_第2张图片
注意
双引号允许shell解释字符串中出现特殊字符,单引号不会对其 做任何解释

(2)printf命令接受引用文本或由空格分隔的参数。
可以使用格式化的字符串来指定字符串的宽度,左右对齐方式等

例如
可以用vi文本编辑器来写脚本
在这里插入图片描述
直接按 i
进入插入模式

直接输入
Linux脚本学习笔记1-3.26_第3张图片

#!/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将颜色重新置回
Linux脚本学习笔记1-3.26_第4张图片
对于背景的颜色是由对应的色彩码来描述
其中包括,重置=0,黑色=40,红色=41
绿色42,黄色=43,蓝色=44,洋红=45,
青色46,白色47

Linux脚本学习笔记1-3.26_第5张图片
代码差不多

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来查看文档

1.3使用变量与环境变量

可以使用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’

1.3.2变量使用

varName=value
注意
varName = value 是一个常见的错误
两边没有空格是赋值操作符
加上空格的等号表示等量关系测试

在变量名之前加入$ 就可以访问变量的内容
Linux脚本学习笔记1-3.26_第6张图片

var=“value”
输出如下
echo $var
还可以写出这样
echo ${var}

可以在printf,echo或其他命令的双引号中引用变量值

#!/bin/bash
fruit=apple
count=5
echo "We have $count ${fruit}(s)"

Linux脚本学习笔记1-3.26_第7张图片
输出结果
在这里插入图片描述
因为shell使用空白字符来分隔单词,所以要加上()花括号来告诉shell这里的变量名是fruit 而不是
fruits

export命令声明将由子进程所继承的一个或者多个变量
这些变量被导出之后,当前的shell脚本执行的任何应用程序都会获取这个变量

PATH变量列出一系列可供shell搜索特定应用程序的目录

echo $PATH
在这里插入图片描述
各目录路径之间以:冒号分隔
需要在PATH中添加新的路径
可以使用命令

export PATH="$PATH:/home/user/bin"
在这里插入图片描述
另外还有一些总所周知的环境变量
:HOME , PWD,USER, UID ,SHELL等

1.3.3补充内容

1 获取字符串的长度
可以使用length
Linux脚本学习笔记1-3.26_第8张图片

length=${var}
var=123456789
echo ${#var}

在这里插入图片描述
length就是字符串所包含的字符数

总结

继续学习

你可能感兴趣的:(linux)