介绍

经常需要和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. windows下mongodb权限设置解决方法

    mongodb简介: MongoDB 是一个跨平台的,面向文档的数据库,提供高性能,高可用性和可扩展性方便. MongoDB工作在收集和文件的概念. MongoDB默认设置为无权限访问限制,所以可以直 ...

  2. [php-src]Php扩展的多文件编译

    内容均以php5.6.14为例. 假设有模块 foo,php_foo.h 和 foo.c 是固有文件,额外的C文件如果要加入编译,大致有五步. 1. 新增头文件 foo_bar.h #ifndef F ...

  3. PS:缝线颜色随着鞋帮颜色的改变发生改变.files

    1.绘制逼真缝线 (1)新建两个图层,并且命名为“针眼”和“缝线”: (2)选择“铅笔”工具,像素为“2”: (3)在针孔图层上进行缝线路径描边,并双击图层,弹出“图层样式”窗口,选择“斜面与浮雕”- ...

  4. easyui tree onloadsuccess事件的心得

    在onloadSuccess事件中不能apeed新节点,否则又会触发noloadsuccess事件,形成死循环. 公司电话:028-87657875           13060063607 淘宝店 ...

  5. 正确获得android设备的IP地址

    网上此类获得android设备IP地址相关的文章有不少,有一篇是比较通用的,但有一个问题:有些设备默认的是IPv6的地址,那段代码获得的就是IPv6的地址.但这显然不是我们想要的,我们需要的是IPv4 ...

  6. 两种状态显示处理. enum , Linq AsEnumerable

    1.ENUM protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { GridViewRow ro ...

  7. Linux 忘记root登录密码解决方法

    很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步骤如下: 重启linux系统 3  ...

  8. listener监听器

    前言:之前写了一篇关于Filter的文章:http://tianweili.github.io/blog/2015/01/26/java-filter/,现在再来一篇Listener的,Filter和 ...

  9. 无状态的web应用

    无意间看到这个话题,随便看了下 觉得有点意思.比较零散,记录一下. 1. http协议无状态. 简单的理解:每一个http请求都是独立的.不会因为前一个请求的失败就影响到下一个请求.既不会影响前面的, ...

  10. 分析Linux内核创建一个新进程的过程

    一.原理分析 1.进程的描述 进程控制块PCB——task_struct,为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. struct task_struct ...