介绍

经常需要和shell命令打交道,但是一直没有系统的学习,接下来会花1到2个月的时间系统的学习一下shell命令,接下来就开启shell命令的奇妙旅行吧。本章主要介绍shell的打印输出。

知识要点

  • shell脚本都是以#!/bin/bash开头;这是固定的写法,其中/bin/bash是bash命令的路径。
  • 一般都会通过chmod授予shell脚本的可执行权限。
  • 在shell脚本中的打印输出通常会有echo和printf两种,前者会自动换行。
  • 在shell中如果用双引号("")作为打印输出的内容时,如果双引号中有特殊字符需要在特殊字符前加上转义字符\,当然也可以使用单引号或者不使用引号直接输出,使用单引号或者不使用就不需要用到转义字符。

格式替代符

有一些常用的格式替代符会经常在打印输出中被用到,格式替代符只能用在printf输出中。

%-5s:表示5个字符宽度,其中的-表示左对齐

%-4.2f:其中的f表示浮点型,4.2代表长度为4个字符且小数点2位,如果小数点超过2会进行四舍五入,-表示左对齐。

整形:

%d:整数的参数会被转成一有符号的十进制数字

%u:整数的参数会被转成一无符号的十进制数字

%o:整数的参数会被转成一无符号的八进制数字

%x:整数的参数会被转成一无符号的十六进制数字, 并以小写abcdef表示

%X:整数的参数会被转成一无符号的十六进制数字, 并以大写ABCDEF表示

浮点型数

%f double型的参数会被转成十进制数字, 默认取小数点以下六位, 四舍五入

%e double型的参数以指数形式打印, 有一个数字会在小数点前, 六位数字在小数点后, 而在指数部分会以小写的e来表示.

%E 与%e作用相同, 唯一区别是指数部分将以大写的E来表示.

%g double型的参数会自动选择以%f或%e的格式来打印, 其标准是根据欲打印的数值及所设置的有效位数来决定.

%G 与%g作用相同, 唯一区别在以指数形态打印时会选择%E格式.

字符及字符串:

%c 读字符串的第一个字符

%s 输出指定宽度的字符内容.

%p 如果是参数是"void *"型指针则使用十六进制格式显示

打印输出

在写脚本的时候更多的会使用echo作为打印输出,且习惯性的会使用双引号。

echo

[root@localhost tmp]# echo "hello word"
hello word

printf

默认printf是不换行的

[root@localhost tmp]# printf "hello word"
hello word[root@localhost tmp]#

需要换行加上\n参数

[root@localhost tmp]# printf "hello word\n"
hello word
[root@localhost tmp]#

编写shell脚本

vim scrip.sh

#!/bin/bash
printf "%-5s %-10s %-4s\n" No Name Mark;
printf "%-5s %-10s %-4.2f\n" 1 aaa 10.111;
printf "%-5s %-10s %-4.2f\n" 2 bbb 20.146;

授予脚本执行权限:chmod u+x scrip.sh

如果使用echo就不能用格式替代符

#!/bin/bash
echo No Name Mark;
echo 1 aaa 10.111;
echo 2 bbb 20.146;

注意事项

在echo,printf中使用-e,-n参数时,-e,-n应该出现在命令行其它字符之前。

-e:如果要在echo的双引号使用转义序列作为参数得需要使用-e参数

-n:忽略末尾的换行符

不使用-e参数
[root@localhost tmp]# echo "1\n2"
1\n2
使用-e参数
[root@localhost tmp]# echo -e "1\n2"
1
2

转义序列:

/n:换行

/t:tab键

彩色输出

字体颜色包括:0=重置,30=黑色,31=红色,32=绿色,33=黄色,34=蓝色,35=洋红,36=青色,37=白色

背景颜色包括:0=重置,40=黑色,41=红色,42=绿色,43=黄色,44=蓝色,45=洋红,46=青色,47=白色

echo -e "\e[1;32m hello word \e[0m"

\e[1;32m:将字体颜色设为绿色,\e[0m:将颜色重置

总结

如果输出的内容涉及到特殊字符建议使用printf来输出。

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

Linux shell之打印输出的更多相关文章

  1. Linux Shell常用技巧(一) RE

    一.    特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty.其中/dev/null将会丢掉所有写入它 ...

  2. Linux Shell常用技巧(一)

    一.    特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty.其中/dev/null将会丢掉所有写入它 ...

  3. Linux Shell常用技巧

    转载自http://www.cnblogs.com/stephen-liu74/ 一.    特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文 ...

  4. (linux shell)第一章--小试牛刀(下)

    文章来源: (linux shell)第一章--小试牛刀(下) 1.6 数组和关联数组 1.6.1 预备知识 Bash同一时候支持普通数组和关联数组.普通数组仅仅能使用整数作为数组索引,而关联数组能够 ...

  5. 超全整理!Linux shell及常用36类命令汇总

    本文采编自http://blog.csdn.net,作者为ZHXGXN,版权归作者所有! 使用Linux shell是一些程序员每天的基本工作,但我们经常会忘记一些有用的shell命令和技巧.当然,命 ...

  6. [转帖]Linux Shell常用技巧(五)

    Linux Shell常用技巧(五) https://zhuanlan.zhihu.com/p/73451771 1. 变量:在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义.变量的类型可 ...

  7. [转帖]拿小本本记下的Linux Shell常用技巧(一)

    拿小本本记下的Linux Shell常用技巧(一) https://zhuanlan.zhihu.com/p/73361101 一. 特殊文件: /dev/null和/dev/tty Linux系统提 ...

  8. linux Shell(待学)

    2. Shell 2.1 简介 shell脚本执行方式Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务.它类似于 DOS 下的 command 和后来的 cmd ...

  9. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

随机推荐

  1. Python学习(基础简绍)

    今天终于开始了python的学习,至于python的历史我就不说了,百度百科中太详细了,我这里说就是关公面前耍大刀,太自不量力了,所以,废话不多说,直接讲讲我惊天学习Python的收获吧. 1.Pyt ...

  2. XML解析、使用TreeView呈现效果

    首先用到TXMLDocument控件: Memo来显示XML文件, TreeView来呈现元素: 源代码: Procedure TForm2.Button1Click(Sender: TObject) ...

  3. python 跨模块实现按照文件大小,日期实现日志分割,反转

    笔者的一个自动化测试平台项目,采用了python作为后端服务器语言.项目基于快速成型目的,写了一个极其简陋的日志记录功能,支持日志记录到文件和支持根据日志级别在终端打印不同颜色的log.但随着测试平台 ...

  4. angularjs的四大特征

    angularjs四大特性: 1.MVC模式: Model:数据,其实就是angular变量($scope.XX,$rootScope.XX); View:数据的呈现,Html+Directive(指 ...

  5. Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法

    sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...

  6. oracle的加密和解密

    加密函数 create or replace function encrypt_des(p_text varchar2, p_key varchar2) return varchar2 isv_tex ...

  7. AppFuse3.5对接oracle数据库

    AppFuse是一个使用Java语言开发web应用系统的集成框架.java开发人员最头痛的事情就是面对大量的框架不知该如何选择.这些框架性能如何,兼容性如何等等都需要筛选比较.Appfuse作者Mat ...

  8. linux系统安装软件方法大全

    1.源代码包的安装gzip -d apache_1.3.20.tar.gz (解压)tar xvf apache_1.3.20.tar (解包)cd apache_1.3.20 ./configure ...

  9. c++的转换

    1.静态转换 static_cast 用于明确定义的变换 ,包括 编译器允许的非强制转换和不太安全但定义清楚的变换.ps:(非强制变换,窄化变换,隐式转换,类层次静态定位,void*强制转换) 2.常 ...

  10. c一些关键字

    register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率.注意是尽可能,不是绝对. extern:可以置于变量或者函数前,以标示变量或者函数的定义 ...