【 编程语言 】Shell学习记录
基础编程
1. 创建
在文件的第一行指定要使用的运行方式 #!/bin/bash
系统会按照第一行!后指定的运行方式运行整个文件内容。
如果不写的话,系统可能会按照当前登录的shell执行,但只是可能,Ubuntu系统很可能出问题。
所以第一行指定运行方式是一种良好的习惯。
2. 显示与输入
输入
read命令 等待用户的输入,并将获取的数据存到一个变量中
read -p “Enter your name: ”name
其他参数:
-t 指定超时时间
-s 隐藏方式读取
显示
echo “hello world” 自动动添加换行符
控制输出不换行: -n 参数
让特殊转义符起作用 -e 参数
转义符一览
其后有字符时,作为退格键
c 取消输出行末的换行符
e ESCAPE 键
f 换行后连接上一行的结尾
v 垂直制表符
换行符
光标移至行首
制表符,也就是 Tab 键
printf “hello %s %f
” world 11.11 不自动换行,需要手动加
,使用类似C语言printf
printf 可以使用%对输出间距进行控制 使用间距控制,我们不用再担心显示输出时因变量长度的不确定性导致的混乱问题
%-10s 左对齐,显示宽度为10个字符的字符串,不足使用空格补齐
%10s 右对齐,显示宽度为10个字符的字符串,不足使用空格补齐
%10.2f 右对齐,显示宽度为10个字符的浮点数,小数点后面保留两位
重定向
输入和输出进程在Linux也是以文件的概念存在
Linux用文件描述符来标识每个文件对象,它是一个非负整数
每个进程一次最多可以有九个文件描述符(可以理解为指针变量),而bash shell保留了前3个。
文件描述符 缩写 描述
0 STDIN 标准输入
1 SIDOUT 标准输出
2 SIDERR 错误输出
符号(可以理解为把符号左边的内容传送到右边)
覆盖 >
追加 >>
临时重定向与永久重定向
临时
将标准输出重定向到文件 Command > file
将错误输出重定向到文件 Command 2> file
将所有输出重定向到文件 Command >file 2>file 或者 Command &>file
永久
exec命令: exec 1>file
exec命令会在脚本执行期间保持设定的重定向策略
永久重定向之后想再改回来怎么办?可以使用后6个自定义文件描述符
exec 3>&1
exec 1>file
exec 1>&3
既要显示又要存到文件
tee filename 覆盖
tee –a filename 追加
高级显示控制 使用SGR转义码
格式为 CSI[nm
CSI 代表转义标志字符
实际上就是ESC的ASCII值
产生方法:
Linux下编辑时的产生方法
Ctrl+v 后按 ESC Linux系统显示为 ^[
非Linux下编辑时的产生方法