--作者:飞翔的小胖猪

--创建时间:2021年2月19日

1.1 基础用法

echo命令用来输出文本,在shell脚本中用来输出提示信息用的比较多。

单引号:原样输出所有的内容,不用转义就能输出特殊字符。需要调用变量时不要使用单引号

如使用echo修改操作系统密码时一定要用单引号

[root@135 ~]# echo '\\'
#修改root密码,修改密码时一定要用单引号,避免特殊字符造成的密码不一致。
[root@135 ~]# echo 'yinsi' | passwd --stdin root

双引号:双引号保留输出文本中特殊字符的含义,如需要输出特殊字符本身需要使用转义符。

[root@135 ~]# echo "\\"

常用参数:

[root@135 echo_study]# echo -[e|E|n]
-n 不换行输出
-e 启用反斜杠转义的解释
-E 禁用反斜杠转义的解释(默认)

常用转义符:使用转义符的时候需要跟上-e选项。

\b   转义后相当于按退格键(backspace) ,但前提是”\b”后面存在字符;
\c 不换行输出,在”\c”后面不存在字符的情况下,作用相当于echo -n;
\n 换行;
\f 换行,但是换行后的新行的开头位置连接着上一行的行尾,具体效果查看示例;
\v 与\f相同;
\t 转以后表示插入tab,即制表符,已经在上面举过例子;
\r 光标移至行首,但不换行,相当于使用”\r”以后的字符覆盖”\r”之前同等长度的字符,只看这段文字描述的话可能不容易理解,具体效果查看示例;
\\ 表示插入”\”本身;
[root@135 echo_study]# aa="test11"
[root@135 echo_study]# bb="test22"
[root@135 echo_study]# echo -e '$aa\t$bb\n$aa $bb'
[root@135 echo_study]# echo -e "$aa\t$bb\n$aa $bb"

1.2 高级用法

使用高级用法时必须加上\033[或\e[,确认不使用特殊属性后及时清除设置的属性,切记!切记!切记!

1.2.1 属性

\033[0m      关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH 设置光标位置,y表示行数,x表示从第几个字符开始
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标

例子:

为test添加下划线,\033[0m表示取消下划线,如果不使用\033[0m取消特殊属性,该终端输出的所有信息都会带下划线。

#只有test有下划线
[root@135 echo_study]# echo -e "\033[4mtest\033[0m"

#test后所有输出都有下划线
[root@135 echo_study]# echo -e "\033[4mtest"

设置字符显示在特定的位置,先使用\033[2J清空屏幕,然后设置从第10行第5个字符开始输出test字符。

[root@135 ~]# echo -e "\033[2J\033[10;5Htest"

1.2.2 颜色

echo可以为字体和背景设置颜色。字体和背景均提供有8种颜色。

字体颜色和背景颜色的区分是字体开头数字为3,背景开头数字为4

字体颜色

\033[30m   (黑色)
\033[31m (红色)
\033[32m (绿色)
\033[33m (黄色)
\033[34m (蓝色)
\033[35m (紫红色)
\033[36m (青色)
\033[37m (白色)

背景颜色

\033[40m   (黑色)
\033[41m (红色)
\033[42m (绿色)
\033[43m (黄色)
\033[44m (蓝色)
\033[45m (紫红色)
\033[46m (青色)
\033[47m (白色)

例子:

#设置test字体颜色为红色、背景颜色为青色。
[root@135 ~]# echo -e "\033[31mtest\033[46m"

#取消当前终端设置的所有的特殊属性,回到默认状态。
[root@135 ~]# echo -e "\033[0m"

shell中echo基础及高级用法详解-渐入佳境的更多相关文章

  1. Python中第三方库Requests库的高级用法详解

    Python中第三方库Requests库的高级用法详解 虽然Python的标准库中urllib2模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人实在感觉不好.它已经不适合现在的时代, ...

  2. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  3. js数组中foEach和map的用法详解 jq中的$.each和$.map

    数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...

  4. centos中crontab(计时器)用法详解

    关于crontab: crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行.该 ...

  5. PHP switch的“高级”用法详解

    只所以称为“高级”用法,是因为我连switch的最基础的用法都还没有掌握,so,接下来讲的其实还是它的基础用法! switch 语句和具有同样表达式的一系列的 IF 语句相似.很多场合下需要把同一个变 ...

  6. oracle中的exists 和 in 用法详解

    以前一直不知道exists和in的用法与效率,这次的项目中需要用到,所以自己研究了一下.下面是我举两个例子说明两者之间的效率问题. 前言概述: “exists”和“in”的效率问题,涉及到效率问题也就 ...

  7. TypeScript高级用法详解

    引言 作为一门强大的静态类型检查工具,如今在许多中大型应用程序以及流行的JS库中均能看到TypeScript的身影.JS作为一门弱类型语言,在我们写代码的过程中稍不留神便会修改掉变量的类型,从而导致一 ...

  8. Apache中的Order Allow,Deny用法详解

    本文讲述了Apache中的Order Allow,Deny用法.分享给大家供大家参考,具体如下: Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directo ...

  9. jQuery动画高级用法——详解animation中的.queue()函数

    http://www.cnblogs.com/zhwl/p/4328279.html $('#object').hide('slow').queue(function(next){     $(thi ...

随机推荐

  1. java多态成员变量、成员函数(非静态)、静态函数特点

    1 package face_09; 2 3 /* 4 * 多态时, 5 * 成员的特点: 6 * 1,成员变量. 7 * 编译时:参考引用型变量所属类中的是否有调用的成员变量,有,编译通过:没有,编 ...

  2. 多线程-其他方法-join等

    1 package multithread4; 2 3 /* 4 * toString():返回该线程的字符串表现形式,包括线程名称.优先级和线程组 5 * Thread[Thread-0,5,mai ...

  3. shell $用法

    $0 这个程式的执行名字$n 这个程式的第n个参数值,n=1..9$* 这个程式的所有参数,此选项参数可超过9个.$# 这个程式的参数个数$$ 这个程式的PID(脚本运行的当前进程ID号)$! 执行上 ...

  4. Nginx代理常用参数

    目录 一:Nginx代理常用参数 1.添加发往后端服务器的请求头信息 二:参数案例 1.lb01配置文件 2.web01 web02 web服务器 3.测试 4.重启 5.DNS域名解析 6.网址测试 ...

  5. linux文件编辑器快捷方式

    一:文件编辑器快捷方式 7.光标快速移动快捷方式 ①. 快速切换光标到底行 shift + G ②. 快速切换光标到首行 gg ③. 快速跳转到行首 0 ④. 快速跳转到行尾 shift + $ ⑤. ...

  6. Kubernetes的Controller进阶(十二)

    一.Controller 既然学习了Pod进阶,对于管理Pod的Controller肯定也要进阶一下,之前我们已经学习过的Controller有RC.RS和Deployment,除此之外还有吗,如果感 ...

  7. chapter2 线性回归实现

    1 导入包 import numpy as np 2 初始化模型参数 ### 初始化模型参数 def initialize_params(dims): w = np.zeros((dims, 1)) ...

  8. 微服务架构 | 7.2 构建使用 JWT 令牌存储的 OAuth2 安全认证

    目录 前言 1. JWT 令牌存储基础知识 1.1 JSON Web Token 2. 构建使用 JWT 令牌存储的 OAuth2 服务器 2.1 引入 pom.xml 依赖文件 2.2 创建 JWT ...

  9. 论文解读(GAN)《Generative Adversarial Networks》

    Paper Information Title:<Generative Adversarial Networks>Authors:Ian J. Goodfellow, Jean Pouge ...

  10. 使用Xamarin开发移动应用示例——数独游戏(七)添加新游戏

    项目代码可以从Github下载:https://github.com/zhenl/ZL.Shudu .代码随项目进度更新. 现在我们增加添加新游戏的功能,创建一个页面,编辑初始局面,并保存到数据库. ...