本文也即《Learning the bash Shell》3rd Edition的第七章Input/Output and Command-Line Processing之读书笔记之二。

echo

  echo是非常常用的shell命令。参数如下:

-e:打开反斜杠字符backslash-escaped的解析,即对/n,/t等字符进行解析,而不视之为两个字符 -E:关闭反斜杠字符的解析,/n作为两个字符,这是系统缺省模式 -n:删除最后的换行

  backslash-escaped有下面参数,注意需要加上选择-e方可生效。

/a: 发出警告铃音(ALERT or CTRL-G (bell))
/b: 退格(BACKSPACE or CTRL-H )
/c: 删除最后的字符及最后的换行(Omit final NEWLINE )
/e: 删除后面的一个字符(Escape character (same as /E) )
/E: 同上(Escape character)
/f: 换页符,在某些现实中会清屏,有些会换行(FORMFEED or CTRL-L )
/n: 换行(NEWLINE (not at end of command) or CTRL-J )
/r: 从行头开始,和换行不一样,仍在本行(RETURN (ENTER) or CTRL-M )
/t: tab键(TAB or CTRL-I )
/v: 竖直tab,和/f一样,显示不同机器有所不一样,通常会引起换行VERTICAL TAB or CTRL-K
/n: 在cygwin中使用/65,无法正确显示'A’但是下面两种方法否可以显示。ASCII character with octal (base-8) value n, where n is 1 to 3 digits
/0nnn: 用8进制的值表示一个字符,例如/0101,即65,表示字符’A’(The eight-bit character whose value is the octal (base-8) value nnn where nnn is 1 to 3 digits )
/xHH: 用16进制的值表示一个字符,例如/x41,即65,表示字符’A’The eight-bit character whose value is the hexadecimal (base-16) value HH (one or two digits)
//: 表示‘/’Single backslash

  倒数第2-4,用数值来表示字符和设备相关,通常用于复杂的IO操作,例如光标控制和特殊的图形符号。

printf

  Linux提供一个功能更强大,更灵活的打印命令printf。printf和C语言的使用方式类似。和echo不一样,它不会在最后自动加上换行,需要写入命令中。例如printf "Hello, world/n"。printf的命令格式如下:

printf format-string [arguments]

  例子为:printf "%s, %s/n" hello world。如果格式需要的参数比后面给出的多,超出的部分为0或者null。格式如下。

%c:ASCII字符,如果参数给出字符串,则打印第一个字符
%d:10进制整数
%i:同%d
%e:浮点格式([-]d.精度[+-]dd)
%E:浮点格式([-]d.精度E[+-]dd)
%f:浮点格式([-]ddd.precision)
%g:%e或者%f的转换,如果后尾为0,则删除它们
%G:%E或者%f的转换,如果后尾为0,则删除它们
%o:8进制
%s:字符串
%u:非零正整数
%x:十六进制
%X:非零正数,16进制,使用A-F表示10-15
%%:表示字符"%"

  如果需要限定输出的宽度,格式为%flags width.precision format-specifier,width是整数,右边对齐,如果需要左边对齐,在前面加“-”,例如"%-20s"表示从左边开始对齐,宽度为20,如果字符串长度少于20,通过空格补齐。precision在浮点值中提供四舍五入。例如%5.6G,长度为5,精度为6。精度是可选的。长度和精度的值可以参数中指定,例如printf "%*.*G/n" 5 6 $myvalue。长度指显示中占的字符长度,与字符长度的同义。如果长度比实际的少,例如实际字符长度更大或者所要求的精度更大,则显示按实际长度。

%d, %I, %o, %u, %x, %X:在里面使用精度,表示最小显示的数字。如果显示的数字比需求少,则补充0。缺省值为1.
%e, %E:在里面使用精度,表示最小显示的数字。如果显示的数字比需求少,在小数点后面补充0。缺省值为10.精度度为0经隐藏小数点。
%f:在这里的精度,表示小数点后面的数字的数目。
%g, %G:这里的精度,表示最大的有效数字的数目。
%s:这里的精度,表示最大的字符数目。

  在前面,介绍了”-“作为左对齐,下面介绍这些特殊符号

-:左对齐
space:正数前面加空格,负数前面加符号,例如12.12,|% f|,显示| 12.120000|,注意前面留了一个空格。例如-12.12,|% f|,显示|-12.120000|
+:对于数码给予正负号。
#:给出另一种格式:

%o以8进制显示整数,而%#o则在前面加上零,表明是八进制,例如12,显示014 %x或者%X以16进制的方式显示整数,而%#x或者%#X,在16进制的整数前面加上0x或者0X来表示,例如12,显示0XC %#e,%#E, %#f,将只以十进制显示 %#g,%#G,将不删除最后无关的补齐0,例如12.1200,将全部显示,而不是12.12。 0:对于数目,不使用空格,而使用0来作为补齐。

  介绍两个特别的字符显示格式%b和%q。

%b:表示解析字符串的特殊的字符,包括/n等等。例如printf "%s/n" 'hello/nworld',显示hello/nworld,要将/n作为换行符,则需要用printf "%b/n" 'hello/nworld'

%q:printf "%q/n" "greetings to the world"显示为greetings/ to/ the/ world,可以作为shell的输入。

printf and echo相关推荐

  1. LINUX中printf与echo的区别

    (1)首先echo是回显,即代表回车显示,是自带换行的:而printf只是打印出来,没有换行 (2)echo只是回显没有变量替换功能:printf是有的 举例:假如我们定义好变量a='hello wo ...

  2. linux shell 中 printf 与 echo的区别

    原文地址 :https://www.cnblogs.com/vagabond/p/4312047.html echo echo是非常常用的shell命令.参数如下: -e:打开反斜杠字符backsla ...

  3. 【已阅】printf,echo,cat指令与输出重定向>,输入重定向<与追加重定向>>等

    printf指令的功能(+输出/追加重定向) 语法:printf "格式化数据" (>/>>重定向) 功能:格式化输出(默认往显示器文件且不带换行符) 实例演示 ...

  4. php r echo_PHP中echo(),print(),print_r()的区别是什么?

    四种方法可以输出字符串. echo print() printf() print_r() echo 可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct) ...

  5. php print r用法,php中echo(),print(),print_r()用法

    从我对echo(),print(),print_r()这个函数的理解是echo可输入字符串变量常量,print与echo差不多,但print_r可以打印数组而前两者是不可以的,下面我来详细介绍它们三个 ...

  6. 第一天 echo test (()) [[]]

    目录 echo printf test echo printf printf命令模仿C程序库(library)里的printf()库程序(library routine).它几乎复制了 该函数的所有功 ...

  7. linux打印服务叹号,linux中如何通过echo输出!(叹号)? -bash: !: event not found

    需求描述: 今天在做通过echo结合passwd给用户改密码的过程中,出现无法修改的错误. 错误如下: [root@testvm ~]# useradd mytest [root@testvm ~]# ...

  8. 嵌入式linux内存使用和性能优化

    这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影 ...

  9. 有了这篇 Shell 脚本实践指南,同事对我“刮目相看”!

    前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看.而且当我在看其他人写的脚本的时候,总觉得难以阅读.毕竟shell脚本这个东 ...

最新文章

  1. Linux 裸设备基础知识(转)
  2. python高阶函数的使用
  3. 【Cinemachine智能相机教程】VirtualCamera(四):Noise属性
  4. 报错 插入更新_CentOS中linux网络报错 connect: Network is unreachable问题
  5. 冲锋衣和羽绒服哪个保暖?
  6. 函数嵌套,关键字,闭包和装饰器
  7. JS弹出窗口的运用与技巧
  8. Chrome扩展推荐
  9. QT之布局管理器和QLayout
  10. 贵州省谷歌地球高程DEM等高线下载
  11. 抛负载”ISO 7637-2测试标准讲解,车规级TVS管优选建议
  12. 三角函数和差公式的推导
  13. java 发送企业邮箱_Java实现网易企业邮箱发送邮件
  14. 第一世界的年轻人追求的是房子还是别的?
  15. C++设计模式——访问者模式
  16. 【安全牛学习笔记】 端口扫描
  17. 永磁同步电机矢量控制中的双闭环是什么意思_STM32 TALK | 无感FOC方案原理机器控制难点分析...
  18. 搭载鸿蒙系统的摄像头,搭载鸿蒙系统的华为P50发布日期曝光
  19. python截取字符串后三位_python如何截取字符串后几位
  20. Android系统开机到Launcher启动流程分析

热门文章

  1. node.js的下载,安装以及卸载
  2. 干货:排名前16的Java工具类
  3. 初识面向对象(理论1)
  4. 史上最简洁易懂的PGP邮件加密教程(MAC OS X版)
  5. 动动嘴皮子就解决身份安全验证问题,这很NICE
  6. 各浏览器CSS兼容问题
  7. 关于ExtJS通过单击左边的treePanel在居中的panel加载页面问题
  8. MS UC 2013-0-虚拟机-标准化-部署-1-虚拟化-部署
  9. perl学习笔记(9)
  10. php实现网站插件机制的方法