Missing Semester 学习笔记 - Shell
Contents
《The Missing Semester of Your CS Education》(中文:《计算机教育中缺失的一课》)是 MIT 给 CS 专业的学生开设的一门「如何使用计算机工具」的一门课程。正如课程介绍所说的那样:本门课程主要讲述命令行、强大的文本编辑器的使用、版本控制的特性等 。我觉得这门课比较实用,而且比较有意思,所以就学习了这门课。
需要注意的是:在学习这门课的过程中,并不会将每个知识点都记录下来,而仅记录我平时没有注意到的、很少使用到的、没有见过的命令或知识点。这是因为之前看过《鸟哥的 Linux 私房菜》,对 Linux 已经有了一些了解。因此,该系列的学习对我来说更像是查漏补缺。
目录如下:
- Course overview + the shell
- Shell Tools and Scripting
- Editors (Vim)
- Data Wrangling(数据整理)
- Command-line Environment
- Version Control (Git)
- Debugging and Profiling
- Metaprogramming
- Security and Cryptography(安全和密码学)
- Potpourri(大杂烩)
- Q&A
本文是对 Shell 的介绍,下面将一些需要注意的地方记录下来。
如何在 Linux 下的终端进行清屏操作?以前我经常使用clear
,而现在可以使用 Ctrl+l。(注意:是小写字母 L)
它俩的区别在于:使用clear
则不能通过滚动条查看以往的命令操作历史,而 Ctrl+l 可以。
对于重定向命令:>
和<
。前者可以将一个命令的输出重定向到一个文件中,后者可以将输入重定向到一个文件中。
例如:使用echo
输出hello
,然后使用>
将hello
存储到hello.txt
文件中,最后再输出hello.txt
文件中的内容。
|
|
例如:将hello.txt
文件中的内容重定向给cat
命令,然后再直接重定向到hello2.txt
文件中。
|
|
使用>>
以追加的方式,将指定的内容重定向到文件中。
|
|
使用管道命令|
,将管道命令之前的输出作为管道命令之后的输入。
tail 命令的意思是:从输出内容的最后一行往前几行看,默认输出最后 10 行的内容。但这里指定要输出最后一行的内容。
|
|
当然,我们也可以将输出的内容重定向到一个文件中,如下所示:
|
|
管道命令还可以这么使用。
这里使用 grep 中的 -i 来忽略字符串 content-length 的大小写,以便匹配到 content-length 这一行,从而进行输出。
|
|
如果想要获得Content-Length: 277
中的277
,则如下所示:
这里使用 cut 中的 delimiter 指明分隔符为空格。分隔之后,原始的
Content-Length: 277
就变成了两部分:Content-Length:
和277
,然后使用 -f 指明我想要获取第二个部分,即227
。
|
|
值得一提的是:可以看到,在上面的命令行中,对于当前的用户carol
来说,它的终端总是以$
结尾。而如果我们使用root
作为登录用户的话,则终端会变成以#
结尾。如下所示:
这里的确是使用
root
登录了,但是由于我使用了 oh-my-zsh,因此,最终的效果在显示时会有所不同。
|
|
下图是在不安装 oh-my-zsh 的情况下,正常显示的结果。可以看到,用户名从jon
变成了root
,同时符号从$
变成了#
。
tee
命令的作用是从标准输入中读取内容并写到标准输出中或文件中。你会看到,在使用tee
后,对于想要写入到number.txt
中的内容1060
来说,它被打印了出来。因此,使用该命名相对其它写入命令来说更加安全一些,因为你可以看见其输出的内容。
|
|
对于xdg-open
命令,在用户的首选应用程序中打开文件或 URL。例如,使用默认的浏览器打开index.html
文件。
|
|
至于其它的如cd
、ls
、echo
等基础命令,这里就不涉及了。