zoukankan      html  css  js  c++  java
  • echo&printf

    echo&printf

    在linux当中我们打印最常用的命令就是echo和printf,两者功能差不多,在一般的打印当中使用echo即可,但如果是打印表格的话,echo就不如printf方便了,printf是C语言风格的,echo没有什么风格,简单粗暴,下面演示一下。

    1. echo

    echo的简单使用

    //echo简单使用,遵循引号规则
    [root@kk ~]# echo zhanghe
    zhanghe
    [root@kk ~]# echo "zhanghe"
    zhanghe
    [root@kk ~]# echo 'zhanghe'
    zhanghe
    
    [root@kk ~]# echo zhanghe!
    zhanghe!
    [root@kk ~]# echo 'zhanghe!'
    zhanghe!
    [root@kk ~]# echo "zhanghe!"   #双引号会转义
    -bash: !": event not found
    [root@kk ~]# echo "zhanghe!"  #加斜线将其再转回来
    zhanghe!
    

    echo的转义字符

    [root@kk ~]# echo "zhang	he"
    zhang	he
    [root@kk ~]# echo -e "zhang	he"  #想要转义生效要加-e,-t即table
    zhang	he
    [root@kk ~]# echo -e "zhang
    he"   #-n即换行
    zhang
    he
    

    echo的颜色

    列几个文本常用的颜色码,黑色30,红色31,绿色32,黄色33,蓝色34,洋红35,青色36,白色37.

    文本颜色 对应号码
    重置 0
    黑色 30
    红色 31
    绿色 32
    黄色 33
    蓝色 34
    洋红 35
    青色 36
    白色 37

    解释一下,-e不用说了,上文提到过了,需要使用转义字符的时候就要使用-e选项;e[1;是固定的格式,不需要解释,需要注意的是冒号是中文的,而不是英文的,31m就是指红色;而最后的e[0m指的是将颜色重新置回来。

    上面提到的颜色是文本颜色,其实上还有背景颜色,背景颜色我们用的不多,下面也演示一下吧!

    背景颜色 对应号码
    重置 0
    黑色 40
    红色 41
    绿色 42
    黄色 43
    蓝色 44
    洋红 45
    青色 46
    白色 47

    解释一下,非常简单,在上面的演示当中,字体的颜色在前面,背景色处于后面,我们实际使用过程当中很少使用背景色,太花哨了。

    echo的缺点

    echo的缺点是对齐,打印一行字符串不需要什么对齐,但要打印多行的话,而且多行之意每一行都要进行对齐时,echo就不好用了,就需要用到printf。

    2. printf

    print的简单使用

    [root@kk ~]# printf zhanghe    #printf默认结尾没有换行符,需要手动添加
    zhanghe[root@kk ~]# printf zhanghe
       #加上换行符还要用双引号进行转义
    zhanghen[root@kk ~]# printf "zhanghe
    "  #这样才对 
    zhanghe
    

    示例演示:

    [root@kk ~]# cat 1.sh
    printf "%-10s %-6s %-8s %-8s
    " name age sex weight
    printf "%-10s %-6s %-8s %-8.2f
    " zhangsan 11 man 70.1234
    printf "%-10s %-6s %-8s %-8.2f
    " lisi 12 man 73.1
    printf "%-10s %-6s %-8s %-8.2f
    " marry 30 woman 60.342
    
    [root@kk ~]# bash 1.sh
    name       age    sex      weight  
    zhangsan   11     man      70.12   
    lisi       12     man      73.10   
    marry      30     woman    60.34   
    

    解释一下,这%-10s是什么意思呢?其实很简单,就是占10个字符的位置,不够就用空格填充,-表示左对齐,不加-就是右对齐,%s那都是固定格式,print后面先跟选项,然后再跟参数,选项和参数是对应关系,对多少个参数就应该有多少个选项。%-10s对应name,%-6s对应age,依次类推。最后的 表示换行。

    有两个地方需要注意,我们可以看到在weight对应的选项中,第一行是以s结尾,而后面的三行都是以f结尾,什么意思呢?s表示占的是字符类型,第一行都是字符,没有数值,而f表示占的是数值类型,weight是有小数的,8.2表示一共占8个数值而且要保留两位小数。

    print的颜色

    print的颜色值与echo当中列出来的是一样的,就是使用上有点区别。

    printf "33[1;32;40m%-10s33[0m 33[1;32;40m%-6s33[0m 33[1;32;40m%-8s33[0m 33[1;32;40m%-8s33[0m
    " name age sex weight
    printf "%-10s %-6s %-8s %-8.2f
    " zhangsan 11 man 70.1234
    printf "%-10s %-6s %-8s %-8.2f
    " lisi 12 man 73.1
    printf "%-10s %-6s %-8s %-8.2f
    " marry 30 woman 60.342
    

    解释一下,33[1;看做是固定格式即可,33[0就是将颜色再重置回来。也是先跟字符颜色,再跟背景颜色,与echo当中的颜色格式非常相似。

  • 相关阅读:
    shell基础--变量的数值计算
    shell基础--字符串和变量的操作
    shell基础--shell特殊变量
    Asp.net MVC 控制器扩展方法实现jsonp
    ASP.NET web api 跨域请求
    asp.net Web API简单的特性路由配置
    ASP.Net Web API 输出缓存 转载 -- Output caching in ASP.NET Web API
    基础拾遗 C# Json 与对象相互转换
    内存溢出和内存泄漏
    软件测试面试题(一)
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/12909313.html
Copyright © 2011-2022 走看看