终端打印

终端是交互式工具,用户可以通过它与shell环境进行交互。在终端中打印文本是大多数shell脚本和工具日常需要执行的基本任务。通过终端打印,人们可以知道系统的运行状态,这对用户来说是至关重要的。

echo终端打印

echo "Welcome to Bash"

echo 'Welcome to Bash'

echo  Welcome to Bash

以上三种方法的效果是一样的,输出内容都是“Welcome to Bash”,并在末尾添加换行符。在默认情况下,echo在每次调用后会添加一个换行符,而无需手动输入换行符。此处,建议养成一种习惯,对于其他的方法了解即可。

使用双引号时的限制

使用双引号输出字符串时,字符串内不能含有特殊字符(!),或者要在特殊字符前加转义字符\。使用单引号或者不使用引号,也可以正常输出特殊字符。

echo "cannot include !"   #这种情况下将会报错

echo "cannot include \!"  #这种情况下可以正常输出!

echo cannot include !     #这种情况下可以正常输出!

echo 'cannot include !'   #这种情况下可以正常输出!

使用单引号的限制

在使用单引号输出字符串时,变量替换将会失效。使用双引号或者不使用引号可以正常输出被替换的变量。

var="abcd"

echo '1234$var'          #这种情况下将输出 1234$var

echo 1234$var            #这种情况下将输出 1234abcd

echo "1234$var"          #这种情况下将输出 1234abcd

不使用引号时的限制

在不使用引号输出字符串的情况下,无法显示分号(;),因为分号在Bash中被用作命令定界符。使用单引号或者双引号可以输出分号。

echo hello;hello  #第一个hello被当成字符串输出,第二个被当成命令

printf终端打印

printf使用的参数和C语言中的printf函数一样,使用引用文本或由空格分隔的参数。在printf函数中,我们可以使用格式化字符串,指定字符串的宽度、左右对齐方式等。在默认情况下,printf不会在行尾添加换行符,需要手动添加。

printf "Hello world"                    #使用引用字符

printf "%-5s %-10s %-4s\n" No Name Mark #指定宽度及左对齐方式

printf "%-5s %-10s %-4s\n" 1 Sarath 80.3456

工作原理

%s,%c,%d,%f都是格式替换字符,其所对应的参数可以置于带引号的格式字符串之后。

%-5s指明了一个格式为左对齐且宽度为5的字符串替换,-表示左对齐,若不指定对齐方式,则默认采用右对齐方式。宽度指定了保留给某个变量的字符数,如果要输出的内容宽度不足,则用空格填充,若多于指定宽度,则超出部分被丢弃。

%4.2f表示指定小数可以保留两个小数位,要注意的是4并不代表整数部分的位数,也不代表整数位和小数位的和。

注意:使用echo和printf的命令选项时,要保证选项出现在命令行内所有字符串之前,否者Bash会将选项视为另一个字符串。

补充内容

在echo中使用转义字符

在默认情况下,echo会自动在输出字符串末尾添加换行符,可以使用-n选项来忽略结尾的换行符。echo同样接受双引号字符串内的转义序列作为参数。如果需要使用转义序列,则采用echo -e “包含转义序列的字符串”这种形式,在ubuntu14.04中,不需要添加-e选项,若添加,则-e选项会被作为字符串的一部分输出。

echo "Hello World"           #将在末尾添加换行符

echo -n "Hello Wordl"        #末尾不会添加换行符

echo -e "1\t2\t3"            #将输出 -e 1  2   3

echo "1\t2\t3"               #将输出1  2   3

打印彩色输出

在终端中生成颜色输出,有助于我们从大量文本中快速定位特定的信息,我们可以使用转义序列来实现颜色输出。

每种文本颜色都有对应的颜色码。

echo -e "\e[1;31m This is red text \e[0m"

echo -e "\e[1;41m This is red background \e[0m"

#ubuntu14.04不支持这种方式改变文本或者背景颜色

linux打印机添加命令,Linux Shell脚本系列教程(二):终端打印命令详解相关推荐

  1. Linux求平方脚本,Linux Shell脚本系列教程(五):数学运算

    这篇文章主要介绍了Linux Shell脚本系列教程(五):数学运算,本文讲解了使用let.(())和[]进行算术运算.使用expr进行算术运算.使用bc进行算术运算三种方法,需要的朋友可以参考下 在 ...

  2. 【Linux】shell脚本实战-if多分支条件语句详解

    文章目录 前言 多分支语句的语法 多分支语句举例: 1. 出嫁的条件 2. 管理http服务实战脚本 3. 猜数字游戏v1版本-if版本 总结 前言 前面我们已经学习过单分支语句和双分支语句的使用. ...

  3. linux expect 输入密码,shell脚本无密码登录 expect的使用方法详解

    shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了. 从 ...

  4. shell脚本编程神器之awk语法案例详解

    AWK入门指南 文章目录 shell脚本编程神器之awk语法案例详解 安装AWK AWK 起步示例 AWK程序的结构 执行 awk 程序 awk 的错误提示 简单输出 打印每一行 打印特定行 NF,字 ...

  5. ES6系列教程第四篇--asyn详解

    一.什么是async async其实是ES7的才有的关键字,放在这里说,其实是和我们前面所说的Promise,Generator有很大关联的.async的意思是"异步",顾名思义是 ...

  6. ES6系列教程第三篇--Generator 详解

    一.什么是Generator 函数 先看下面的Generator函数, function* helloGenerator() {console.log("this is generator& ...

  7. 【Linux】shell脚本实战-if单双分支条件语句详解

    文章目录 if单分支 1. 单分支语法分析 2. 单分支语法规范 if双分支语法分析 3. if单分支和双分支脚本举例 a. 检查是否为超级用户(双分支) b. 找一个金钱大于1000000的结婚(单 ...

  8. Android系列教程之七:EditText使用详解-包含很多教程上看不到的功能演示

    写道 标题有点大,说是详解,其实就是对EditText的一些常用功能的介绍,包括密码框,电话框,空白提示文字等等的讲解,尽量的介绍详细一点,也就是所谓的详解了..呵呵 广告一下我的应用"我团 ...

  9. linux系统添加外部磁盘阵列,Linux下添加磁盘阵列空间(vdisk盘),分区,格式化详解...

    sfdisk -l 确定/dev/sda是新识别到的存储vdisk盘. 1.创建分区 [root@yyxtdb1 init.d]#fdisk /dev/sda Command (m for help) ...

最新文章

  1. 102. Binary Tree Level Order Traversal
  2. php操作mysql数据库,PHP操作mysql数据库
  3. linkerd——针对java的为微服务提供可靠性的proxy,服务发现重试LB等
  4. hibernate查询-基本查询
  5. AI在汽车中的应用:实用深度学习
  6. 那些35岁的程序员都去哪了
  7. 教你如何在Android Studio中使用DDMS工具查看logcat——移动测试Android app(app的性能监控与测试)
  8. ​小米 11 发布,售价 3999 元起;罗永浩回应败诉半导体公司;deepin 20.1(1010) 发布|极客头条...
  9. java mvc controller_java之spring mvc之Controller配置的几种方式
  10. MyEclipse8.6安装svn插件
  11. KMeans聚类算法思想与可视化
  12. 广东省30m二级分类土地利用数据(矢量)
  13. 超好用的 Windows 效率工具推荐
  14. openldap备份与还原
  15. educoder——面向对象程序设计java——实验实训——实验二 - 面向对象
  16. 使用Python统计股票高开后的走势
  17. 华为Nova7+1=荣耀50?我看未必
  18. 移动端自动轮播可滑动轮播图
  19. 迅睿cms,迅睿cms程序系统,迅睿cms网站优化
  20. MATLAB 求解定积分和不定积分

热门文章

  1. Redis 模糊匹配 SearchKeys
  2. Oracle管理拾遗(长期更新)
  3. 在SLES-11-SP1-i586上搭建apache+php环境
  4. TCPDF中文生僻字解决方案
  5. 【转】浅谈.net remoting 与webservice
  6. hdu 2795 公告板 (单点最值)
  7. 使用 Cordova 打包 app
  8. 一条 SQL 语句在 MySQL 中如何被执行的?
  9. Java集合框架图(学习)
  10. 人工智能与电气工程及其自动技术论述