zoukankan      html  css  js  c++  java
  • Linux shell之打印输出

    介绍

    经常需要和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]# 

    需要换行加上 参数

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

    编写shell脚本

     vim scrip.sh

    #!/bin/bash
    printf "%-5s %-10s %-4s
    " No Name Mark;
    printf "%-5s %-10s %-4.2f
    " 1 aaa 10.111;
    printf "%-5s %-10s %-4.2f
    " 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
    2"
    1
    2
    使用-e参数
    [root@localhost tmp]# echo -e "1
    2"
    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

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

    《欢迎交流讨论》

  • 相关阅读:
    Java volatile 关键字底层实现原理解析
    volatile关键字?MESI协议?指令重排?内存屏障?这都是啥玩意
    聊聊缓存一致性协议
    JIT原理
    java 泛型详解
    Java中的逆变与协变
    疯狂的String
    java中synchronized与Lock的异同
    不使用的大对象为什么要手动设置null,真的有效吗?
    不使用反射如何调用某个实例对象的方法
  • 原文地址:https://www.cnblogs.com/chenmh/p/5359463.html
Copyright © 2011-2022 走看看