The Linux Command Line——8. 从shell眼中看世界

 

 

echo 是一个 shell 内建命令,可以完成非常简单的任务。它将它的文本参数打印到标准输出中。

 

 

这个命令的作用相当简单明了。传递到 echo 命令的任一个参数都会在(屏幕上)显示出来。

 

 

为什么 echo 不打印 “*” 呢?如果你回忆起我们所学过的关于通配符的内容,这个 “*” 字符意味着匹配文件名中的任意字符,但在原先的讨论中我们并不知道 shell 是怎样实现这个功能的。简单的答案就是 shell 在 echo 命令被执行前把 “*” 展开成了另外的东西(在这里,就是在当前工作目录下的文件名字)。当回车键被按下时,shell 在命令被执行前在命令行上自动展开任何符合条件的字符,所以 echo 命令的实际参数并不是 “*”,而是它展开后的结果。知道了这个以后,我们就能明白 echo 的行为符合预期。

波浪线展开:

 

 

 

算术表达式展开:

算术表达式展开使用这种格式:

算术表达式只支持整数(全部是数字,不带小数点),但是能执行很多不同的操作。

 

花括号展开:

 

 

我们要创建一系列以数值 “年-月” 形式命名的目录。

 

 

 

参数展开:

 

 

查看有效的变量列表:

 

 

 

命令替换:

命令替换允许我们把一个命令的输出作为一个展开模式来使用:

 

 

我们把 which cp 的执行结果作为一个参数传递给 ls 命令,因此可以在不知道 cp 命令完整路径名的情况下得到它的文件属性列表。

 

管道线的输出结果成为 file 命令的参数列表。

 

 

 

 

引用

 

 

shell 利用单词分割删除掉 echo 命令的参数列表中多余的空格。

 

双引号:

如果你把文本放在双引号中,shell 使用的特殊字符,都失去它们的特殊含义,被当作普通字符来看待。有几个例外:$,\ (反斜杠),和 ‘(倒引号)。这意味着单词分割、路径名展开、波浪线展开和花括号展开都将失效,然而参数展开、算术展开和命令替换仍然执行。使用双引号,我们可以处理包含空格的文件名。

 

在双引号中,参数展开、算术表达式展开和命令替换仍然有效

 

 

 

 

单引号

 

转义字符

在字符之前加上一个反斜杠,在这里叫做转义字符。

posted @ 2021-04-19 18:58  北漂的尘埃  阅读(43)  评论(0编辑  收藏  举报