zoukankan      html  css  js  c++  java
  • echo 命令详解

      echo 命令是 Linux 中最基础的命令,也是最常用的命令,特别是在写 shell 脚本的时候。可能会被经常用到,虽然 echo 命令比较基础,但是功能还算丰富,此处对 echo 命令的常用方法进行总结,并给出示例,方便记忆与回顾。

    echo 命令的基本用法,很简单,就是 echo 命令后面跟上要输出的文本。

    [root@localhost ~]# echo "www.baidu.com"
    www.baidu.com
    [root@localhost ~]# echo test xia
    test xia
    [root@localhost ~]# echo 123
    123

    除了基本用法,还可以配合一些选项使用

    echo -n 表示不换行输出

    [root@localhost ~]# echo -n 123;echo 456
    123456
    [root@localhost ~]# echo -n 123
    123[root@localhost ~]#

    echo 输出命令替换后的内容,例如 echo `ifconfig`。

    [root@localhost ~]# echo `ifconfig`
    ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.200.115 netmask 255.255.255.0 broadcast 192.168.200.255 inet6 fe80::19dd:30dd:c333:988f prefixlen 64 scopeid 0x20<link> ether 00:0c:29:c9:a5:31 txqueuelen 1000 (Ethernet) RX packets 13379 bytes 925270 (903.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3754 bytes 462452 (451.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 468 bytes 40736 (39.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 468 bytes 40736 (39.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    [root@localhost ~]#

    输出的文本格式可能不是我们想要的。可以使用 echo "`ifconfig`"

    [root@localhost ~]# echo "`ifconfig`"
    ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
                inet 192.168.200.115 netmask 255.255.255.0 broadcast 192.168.200.255
                inet6 fe80::19dd:30dd:c333:988f prefixlen 64 scopeid 0x20<link>
                ether 00:0c:29:c9:a5:31 txqueuelen 1000 (Ethernet)
                RX packets 13496 bytes 933316 (911.4 KiB)
                RX errors 0 dropped 0 overruns 0 frame 0
                TX packets 3784 bytes 466094 (455.1 KiB)
                TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
           inet 127.0.0.1 netmask 255.0.0.0
           inet6 ::1 prefixlen 128 scopeid 0x10<host>
           loop txqueuelen 1000 (Local Loopback)
           RX packets 468 bytes 40736 (39.7 KiB)
           RX errors 0 dropped 0 overruns 0 frame 0
           TX packets 468 bytes 40736 (39.7 KiB)
           TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    [root@localhost ~]#

    echo -e 处理特殊字符

    若字符串出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

    a  发出警告声

      删除前一个字符

    c  最后不加上换行符号

    f  换行但光标仍旧停留在原来的位置

      换行且光标移动至行首

      光标移至行首,但不换行

      插入 tab

    v  与 f 相同

    \  插入 字符

    nn  插入nnn (八进制)所代表的 ASCII 字符

     使用 echo 命令输出 "" 转义字符,在 "" 后面存在字符的前提下,"" 表示删除前一个字符,"" 表示删除前两个字符。

    [root@localhost ~]# echo -e "123"
    123
    [root@localhost ~]# echo -e "1234567"
    124567
    [root@localhost ~]# echo -e "1234567"
    14567
    [root@localhost ~]#

     使用 echo 命令输出 "c" 转义字符,当 "c" 后面存在字符,"c" 后面的字符将不会被输出,当 "c" 后面不存在字符,效果与使用 "echo -n" 相同。

    [root@localhost ~]# echo -e "123c"
    123[root@localhost ~]#
    [root@localhost ~]# echo -n "123"
    123[root@localhost ~]#
    [root@localhost ~]# echo -e "123c456"
    123[root@localhost ~]#
    [root@localhost ~]#

     使用 echo 命令输出 "f" 转义字符,表示换行,但是换行后的新行的开头位置连接着上一行的行尾。

    [root@localhost ~]# echo -e "123f456"
    123
          456
    [root@localhost ~]#

     使用 echo 命令输出 " " 转义字符,被输出的字符从 " " 处开始另起一行。

    [root@localhost ~]# echo -e "123 456"
    123
    456
    [root@localhost ~]#

    使用 echo 命令输出 " " 转义字符,表示使用 " " 后面的字符覆盖 " " 之前的同等长度的字符。

    [root@localhost ~]# echo -e "123456 abc"
    abc456
    [root@localhost ~]# echo -e "123 abc"
    abc
    [root@localhost ~]# echo -e "1 abc"
    abc
    [root@localhost ~]# echo -e "a "
    a
    [root@localhost ~]#

    使用 echo 命令输出 " " 转义字符,作用相当于键盘上的 tab 键。

    [root@localhost ~]# echo -e "123 abc"
    123   abc
    [root@localhost ~]#

    使用 echo 命令输出 "\" 转义字符,表示 ""。

    [root@localhost ~]# echo -e "123\456"
    123456
    [root@localhost ~]#

    echo -e 除了输出转义字符外,还能够在命令行中输出彩色的字符,或者带有彩色背景的字符。

    格式如下: 

    echo -e "33[字背景颜色;文字颜色m字符串33[0m"

    例如:

    echo -e "33[41;36m something here 33[0m"

    其中41的位置代表底色, 36的位置是代表字的颜色 
    注: 
      1、字背景颜色和文字颜色之间是英文的 " ; " 
      2、文字颜色后面有个m 
      3、字符串前后可以没有空格,如果有的话,输出也是同样有空格 
      下面是相应的字和背景颜色,可以自己来尝试找出不同颜色搭配 
    例如:

    echo -e "33[31m 红色字 33[0m"

    echo -e "33[34m 蓝色字 33[0m"

    echo -e "33[41;33m 红底黄字 33[0m"

    echo -e "33[41;37m 红底白字 33[0m"

    文字颜色:30—–37 

    30 黑色

    31 红色

    32 绿色

    33 黄色

    34 蓝色

    35 紫色

    36 浅蓝色

    37 灰色

    字背景颜色范围:40—–47 

    40 黑色

    41 红色

    42 绿色

    43 黄色

    44 蓝色

    45 紫色

    46 浅蓝色

    47 灰色

    最后面控制选项说明 

      33[0m 关闭所有属性
      33[1m 设置高亮度
      33[4m 下划线
      33[5m 闪烁
      33[7m 反显
      33[8m 消隐
      33[30m — 33[37m 设置前景色
      33[40m — 33[47m 设置背景色
      33[nA 光标上移n行
      33[nB 光标下移n行
      33[nC 光标右移n行
      33[nD 光标左移n行
      33[y;xH设置光标位置
      33[2J 清屏
      33[K 清除从光标到行尾的内容
      33[s 保存光标位置
      33[u 恢复光标位置
      33[?25l 隐藏光标
      33[?25h 显示光标
  • 相关阅读:
    快速进去CF(codeforces)的方法
    【Java】【25】去除空格
    【Java】【24】正则
    【Word&Excel】【4】Excel去除重复的项
    【Word&Excel】【3】Excel替换某一行/列的内容
    【JS】【22】标签的background-image属性
    【JS】【21】换行
    【Spring】【2】使用注解@Scheduled执行定时任务
    【JS】【20】点击页面判断是否安装app并打开,否则跳转下载的方法
    【Java】【23】汉字转拼音
  • 原文地址:https://www.cnblogs.com/2567xl/p/12924672.html
Copyright © 2011-2022 走看看