别人 echo 、你也 echo ,是问 echo 知多少?-- Shell十三问<第三问>

别人 echo 、你也 echo ,是问 echo 知多少?-- Shell十三问

承接上一章所介绍的 command line ,这里我们用 echo 这个命令加以进一步说明。
温习---标准的 command line 包含三个部件:

command_name option argument

echo 是一个非常简单、直接的 Linux 命令:将 argument 送出至标准输出(STDOUT),通常就是在监视器(monitor)上输出。
为了更好理解,不如先让我们先跑一下 echo 命令好了:

$ echo
$

你会发现只有一个空白行,然后又回到 shell prompt 上了。
这是因为 echo 在预设上,在显示完 argument 之后,还会送出一个换行符号(new-line charactor)。
但是上面的 command 并没任何的 argument ,那结果就只剩一个换行符号了...

若你要取消这个换行符号,可利用 echo 的 -n option :

$ echo -n
$

不妨让我们回到 command line 的概念上来讨论上例的 echo 命令好了:command line 只有 command_name(echo) 及 option(-n),并没有任何 argument

要想看看 echo 的 argument ,那还不简单!接下来,你可试试如下的输入:

$ echo first line
first line
$ echo -n first line
first line $

#于上两个 echo 命令中,你会发现 argument 的部份显示在你的荧幕,而换行符号则视 -n option 的有无而别。
很明显的,第二个 echo 由于换行符号被取消了,接下来的 shell prompt 就接在输出结果同一行了... 

echo常用选项:

事实上,echo 除了 -n options 之外,还有:
-e :启用反斜线控制字符的转换(参考下表)
-E :关闭反斜线控制字符的转换(预设如此)
-n :取消行末之换行符号(与 -e 选项下的 \c 字符同意)

关于 echo 命令所支持的反斜线控制字符如下表:
\a:ALERT / BELL (从系统喇叭送出铃声)
\b:BACKSPACE ,也就是向左删除键
\c:取消行末之换行符号
\E:ESCAPE,跳脱键
\f:FORMFEED,换页字符
\n:NEWLINE,换行字符
\r:RETURN,回车键
\t:TAB,表格跳位键
\v:VERTICAL TAB,垂直表格跳位键
\n:ASCII 八进位编码(以 x 开首为十六进制)
\\:反斜线本身

或许,我们可以透过实例来了解 echo 的选项及控制字符:

例一:

$ echo -e "a\tb\tc\nd\te\tf"
a b c
d e f

上例运用 \t 来区隔 abc 还有 def ,及用 \n 将 def 换至下一行。

例二:

$ echo -e "\x61\x09\x62\x09\x63\x0a\x64\x09\x65\x09\x66"
a b c
d e f

用 ASCII 十六进制编码进行换算。

例四:

$ echo -ne "a\tb\tc\nd\te\bf\a"
a b c
d f $

因为 e 字母后面是删除键(\b),因此输出结果就没有 e 了。
在结束时听到一声铃向,那是 \a 的杰作!
由于同时使用了 -n 选项,因此 shell prompt 紧接在第二行之后。若你不用 -n 的话,那你在 \a 后再加个 \c ,也是同样的效果。

事实上,在日后的 shell 操作及 shell script 设计上,echo 命令是最常被使用的命令之一。
比方说,用 echo 来检查变量值:

$ A=B
$ echo $A
B
$ echo $?
0

好了,更多的关于 command line 的格式,以及 echo 命令的选项就请大家自行多加练习、运用了...

原文地址:https://www.cnblogs.com/passzhang/p/12200835.html

时间: 2024-10-30 14:15:18

别人 echo 、你也 echo ,是问 echo 知多少?-- Shell十三问<第三问>的相关文章

var=value?export前后差在哪?-- Shell十三问&lt;第五问&gt;

var=value?export前后差在哪?-- Shell十三问 这次让我们暂时丢开 command line ,先来了解一下 bash 变量(variable)吧.所谓的 变量,就是就是利用一个特定的"名称"(name)来存取一段可以变化的"值"(value). 在 bash 中,你可以用 "=" 来设定或重新定义变量的内容: name=value 在设定变量的时侯,得遵守如下 规则: 等号左右两边不能使用区隔符号(IFS),也应避免使用 s

exec 跟 source 差在哪?-- Shell十三问&lt;第六问&gt;

exec 跟 source 差在哪?-- Shell十三问 这次先让我们从 CU Shell 版的一个实例贴子来谈起吧: 例中的提问是: cd /etc/aa/bb/cc 可以执行 但是把这条命令写入 shell 时 shell 不执行!这是什么原因呀! 我当时如何回答暂时别去深究,先让我们了解一下进程(process)的观念好了.首先,我们所执行的任何程序,都是由父进程(parent process)所产生出来的一个子进程(child process),子进程在结束后,将返回到父进程去.此一现

三问:linux操作系统安全加固

三问:linux操作系统安全加固 1.为什么要进行安全加固? 安全加固的重要性不言而喻.我这里把操作系统同马斯洛需求层次做了个类比,如有不恰当之处,还请指教.同人一样,操作系统也有自己的生理需求,对于人来说生理需求无非吃喝拉撒等,而对于操作系统来说它的生理需求又是什么了?我个人认为应该是底层硬件的配置,内核的驱动,操作系统基本配置以及设备加电.那么机器加了电,读取硬件信息,驱动内核,启动操作系统后,随之而来最重要事当然是安全需求.人类的安全需求主要包括人身安全,生活稳定以及心灵上追求的安全感等,

软件测试自我修养(一):修心三问

"授人以鱼,不如授之以渔" 说的是传授给人知识,不如传授给人学习知识的方法.今天我想针对于此从思维层面再做一个升华:"授之以渔,则先令人悟之". 做好软件测试,首先具备的修养是需要弄明白三个问题.这就是上面讲到要的"悟".假如开发人员修改提交了BUG,我们使用"三问"的思想进行测试,对于测试人员了解需求会起到很大的帮助. 何以悟"三问".您一定会问:"哪三问?" 举个例子,咱们来设计一个

丢掉盔甲,我们依然是骄傲的骑士——Secooler“三问四看”话认证培训

DBA的高薪引无数英雄豪杰掏腰包!很多IT培训机构看准了这一点,认为这里"人傻钱多",于是没有任何数据库行业积淀的人也做起了数据库培训的生意,还将DBA培训简化成了三包服务(包学.包过.包就业),导致现在的很多年轻人成了"三过人才",即"看过.学过.考过"就是没"做过".我并不否定"三过人才",毕竟很多人希望借此进入DBA行业,但是你绝不能只停留在三过状态,我提倡在三过的基础上增加三会,即"会思考

养成每日三问的好习惯

养成每日三问的好习惯 有什么用? 帮助回顾每日工作,不断完善自己: 每天与自己设定的目标对比,敦促自己持续进步: 帮助建立信心 积极与自己的潜意识沟通,发现自己的潜能: 帮助找到目标 知道哪里做的不够好,才会产生改进的动力 怎么做? 每天至少和自己沟通三个问题,问题设定后,在一个阶段周期内(一个月or3个月)就不要在改变: 每日3问的时间最好控制在5分钟,时间太长不容易持续:时间可以选择在早上或是晚上: 对于每日3问的答案,最好有文字记录,这样,可以定期回顾这些答案:发现自己的需求或问题,从而为

百钱买百鸡:公鸡5元一只,母鸡3元一只,小鸡1元3只,问100元买100只鸡,问有多少种买法,输出每种买法的结果!

/** * 百钱买百鸡:公鸡5元一只,母鸡3元一只,小鸡1元3只,问100元买100只鸡,问有多少种买法,输出每种买法的结果! * */ public class Test3 { public static void main(String[] args) { int c = 0; for (int a = 0; a < 100; a++) { for (int b = 0; b < 100; b++) { if ((7 * a + 4 * b) == 100) { c++; System.o

《小团队项目管理》第三问 --- 如何看待客户的需求变更?

作为一名码农,在项目开发过程中经常会涉及到项目的需求变更,变更的理由也是多种多样,总结而来分为外部和内部,从外部讲,例如:为了顺应某行业新的工作操作规范,甲方要求现有项目在工作流程环节上进行局部功能的变更:从内部讲,通过对市场环境的不间断调研和数据分析,公司产品在同类产品竞争中处于不利地位,市场份额日渐缩小,那么我们的产品设计人员会积极行动起来对产品的整个定位和新业务展开新的思考以寻求更加稳健的创新突破口,这就会对项目产生一定的需求变更. 此图是从CSDN社区截取下的,我相信很多看到这个问题的筒

职场三问

一问:我能不能在自己的技术范围里找到细分领域? 目前我的技术领域主要专注于Windows平台,在Windows平台里面广度是够了,但是深度还远远不够.这五六年的技术路线在微软的不同产品线之间来回切换,说实话,自己很累.干的运维的活,累的原因就不多说了,核心问题在于:在运维层面耗费太大的精力值得吗?很显然,精力需要重新分配,分配的前提是要聚焦.专注,从而才能保证做到极致. 很多时候,特别是职业生涯早期,对技术领域的选择都是被动的,是职业选择了我,而不是我选择了职业,早期先活下去的因素要更多一些.后