shell中echo命令的使用

本文详细介绍了shell中echo命令的使用,包括字符展开的多种类型:路径名展开、隐藏文件路径名展开、波浪线展开、算术表达式展开、花括号展开等。通过实例解析了各种展开的工作机制,以及如何通过引用(双引号、单引号和转义字符)来控制展开。这对于理解和编写shell脚本至关重要。
摘要由CSDN通过智能技术生成

• echo - 显示一行文本


展开(字符)

每输入一个命令,然后按下 enter 键,在 bash 执行命令之前,bash 会对输入 的字符完成几个步骤处理,使这个发生的过程叫做(字符)展开。

通过展开,输入的字符在 shell对它起作用之前,会展开成为别的字符。echo 是一个 shell 内部命令,来完成非常简单的任务。

它在标准输出中打印出它的文本参数:

[me@linuxbox ~]$ echo this is a test
this is a test

这个命令的作用:传递到 echo 命令的任一个参数都会在(屏幕上)显示出来。
另一个例子:

[me@linuxbox ~]$ echo *
Desktop Documents ls-output.txt Music Pictures Public Templates Videos

为什么 echo 不打印“*”呢?
这个”*“字符意味着匹配文件名中的任意字符,所以答案就是:
在 echo 命令被执行 前,shell 把”*“展开成了另外的东西(在这种情况下,就是在当前工作目录下的文件名字)。
当回车键被按下时,shell 在命令被执行前在命令行上自动展开任何符合条件的字符, 所以 echo 命令从不会发现”*“,只把它展开成结果。


路径名展开

这种通配符工作机制叫做路径名展开,给出一个home目录,它看起来像这样:

[me@linuxbox ~]$ ls
Desktop   ls-output.txt   Pictures   Templates
....

我们能够执行以下参数展开模式:

[me@linuxbox ~]$ echo D*
Desktop  Documents

和:

[me@linuxbox ~]$ echo *s
Documents Pictures Templates Videos

甚至是:

[me@linuxbox ~]$ echo [[:upper:]]*
Desktop Documents Music Pictures Public Templates Videos

查看home目录之外的目录:

[me@linuxbox ~]$ echo /usr/*/share
/usr/kerberos/share  /usr/local/share

隐藏文件路径名展开

圆点字符开头的文件名是隐藏文件,路径名展开也尊重这种行为。

echo *

像这样的展开不会显示隐藏文件。
展开模式以一个圆点开头,我们就能够在展开模式中包含隐藏文件,而且隐藏文件可能会出现在第一位置

echo .*

我们会看到名字”.” 和”..”也出现在结果中。因为这些名字是指当前工作目录和它的父目录,使用这种模式可能会产生不正确的结果。

以下:

ls -d .[!.]?*

这种模式展开成为文件名,每个文件名以圆点开头第二个字符不包含圆点,再包含至少一个字符, 并且这个字符之后紧接着任意多个字符。

这将列出大多数的隐藏文件 (但仍将不能包含以多个圆点开头的文件名)这个带有 -A 选项(“几乎所有”)的 ls 命令能够提供一份正确的隐藏文件清单:

ls -A

波浪线展开

波浪线字符(“~”)有特殊的意思,当它用在 一个单词的开头时,会展开成指定用户的home目录名,如果没有指定用户名,则是当前用户的home目录:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值