现在开始准备运行我们的第一条命令了,在屏幕上打印'hello'。(字符打印的地方被称为'标准输出',通常指的是屏幕,很少指真的物理打印机设备)。这条命令就是echo
,这条命令的参数是想要输出的字符串或简单的字符串简写。运行echo
命令,在提示(prompt)后键入'echo hello',然后按回车键(也叫Enter):
$ echo hello
hello
$
(我建议始终自己手动输入命令,因为这可以让你比复制粘贴学到更多) 这里我们发现echo hello
输出'hello',接着返回另一个提示(prompt)。备注:为了简洁,我把提示(prompt)所有字符都省略了,只剩美元符$
。
为了让模式清晰明了,我们再尝试一条echo
命令:
$ echo "goodbye"
goodbye
$ echo 'goodbye'
goodbye
$
注意这里我们用引号将 “goodbye”包起来了,同时我们也可以注意到我们既可以使用双引号"goodbye"
也可以使用单引号'goodbye'
,这些引号可以直观的为字符串分组,但echo
在大多数的场景都不需要这样做。(如Listing1)
Listing 1: Printing “hello, goodbye” two different ways.
$ echo hello, goodbye
hello, goodbye
$ echo "hello, goodbye"
hello, goodbye
$
但是使用引号时偶尔会忘了写配对的引号,就像下面这样:
$ echo "hello, goodbye
在这种情况下,程序好像卡住了。解决这个窘境也有特定的方法(事实上,这种情况下只需要再加个关闭引号再按回车键就可以解决),但是有个解决所有情况的策略会更好(图9),那就是按“Ctrl-C”。(Box4).
Box 4 逃离窘境
当使用命令行,有太多让你轻易陷入窘境,我指的窘境是终端将挂起或以其他方式最终进入难以或不可能进入下一步命令的状态。以下是会导致窘境的命令:
$ echo "hello
$ grep foobar
$ yes
$ tail
$ cat
每个这样的窘境,都可以用同样的解决方法:按Ctrl-C
(宣称“control-see”)。Ctrl
指键盘上的'control'键,C
指键盘上被标记为'C'的键。因此Ctrl-C
的意思是"当按住control键的同时按下C键。特别注意的是:C
不是指大写字母C,因此除了Ctrl外不需要再按Shift键了。(Ctrl-C
为终端发送一条控制命令,与打印普通文本时输入的大写字母没有关系)。输入Ctrl-C
的结果有时写做⌃C
,像这样:
$ tail
^C
Ctrl-C
的起源有些模糊,但是作为助记符我更喜欢把它当作'取消'来用。无论如何牢牢记住: 当你在命令行中陷入困境,你最好的选择通常是按Ctrl-C
.
备注:当使用Ctrl-C
失败,按ESC(退出)90%都能解决。
练习
1.写一条命令输出'hello, world'。额外要求:像上面Listing1中那样,使用都有引号和没有引号两种不同的方法来做。
2.输入命令echo ’hello
(只有一个未匹配单引号),然后使用Box4中的方法解决困境。