Linux旅行记——01.命令行

唠个嗑

这是你跟我正式学习Linux的第一堂课,当然我并不知道屏幕那边的你的年龄。所以,在我敲下每一个字的时候,我大脑里出现了很多对你的假设,也许你是一个还在上学的学生,也可能是已经工作的年亲人,又或者你跟我一样也已经三十来岁或者比我大。当然,这些都没有关系。既然你已经看过了前面一篇的介绍,我想你应该是对Linux有学习兴趣的新手。如果你第一眼看得是这篇,还不知道我的这个专题都讲些啥,那我还是建议你先去看看前一篇00.Linux旅行记介绍,判断一下,这个Linux专题的内容是否是你想要学习的内容。

讲Linux我还是第一次,但是,我希望能够把这个新人入门Linux的专题讲得尽量通俗易懂。同时,我也希望你能跟着我的教程一边看,一边练习。我自己学编程的时候也是这么学习的,觉得还是挺管用的。所以这里我也推荐你可以这么来学,我会在知识点的讲解过程中,加入很多实际的例子。为了帮助你更好的理解学习,我在教学的文章中会加入适当的演示视频。这样,每个知识点,你能够看到我的操作过程。我想这个肯定比我在这里干巴巴的讲,效果要好。

另外,我希望这套教程,不是死板的说明书式的教程,而是希望让你学习的时候,像在和我交流。或者是有点看小说的味道。当然,我知道要做到这点,对于现在的我来说,还是有点困难,毕竟我没有写过小说。而且我当年的语文成绩也并不好。但是,为了让你学习的过程不那么枯燥,我愿意尝试这种写作思路和风格。希望你喜欢这种教学风格。

01.命令行.概要

言归正传

上面讲了一些题外话,现在回归正题。这会我打字的时候是晚上的9点49分。如果,你也是晚上时间,在阅读我写的内容,那挺不错。程序员很多都喜欢夜里安静的时候写代码或者思考一些问题。

我想,你在接触Linux之前,应该一直是用的图形界面的系统。其实如果你出生的比我早或者至少和我一样,那你还是会知道一点图形操作系统Windows之前的一些事。在图形界面操作系统出来之前,微软早年退出的操作系统叫DOS操作系统。那个老古董和我们今天要讲的Linux的命令行一样,都是非图形化的。那为何还需要学习这种非图形化的操作?虽然图形界面下的操作十分直观,但是图形界面也有很多不好的地方,灵活性差,不便于自动化,扩展性不高。这些也正是命令行的优势。对于我们日常维护产品,比如写好的网站要发布上线,或者平时有一些需要自动处理的内容。我们如果掌握了Linux下的一些命令工具,我们完全可以自己编写一些自动化处理的脚本,来完成这些日常重复性的工作。

22480acfa94b84075557fa92db78bd84

什么是命令行

上面我们多次提到了命令行,那到底命令行是什么?命令行在英文中叫command line或terminal,他是操作系统中的基于文本的接口。说直白一些,就是你通过键盘输入一些文字命令给操作系统,这些文字操作系统能够认识,并按照你的命令一条条去执行。

屏幕快照 2019-06-02 下午3.38.35

下面我们先直观地看下,命令行终端长啥样:

播放上面的视频,你看到到了bash-3.2$这个是命令提示符,后面跟着一个闪烁的方块,这个方块我们把它称作光标。然后我在键盘上按下date,你会看到date字符一个一个出现在光标位置。输入好date后,我按下回车键(enter键)。然后系统就显示了此刻的系统时间。

bash-3.2$ls -l
total 8
drwxr-xr-x  2 colin  staff  64  5 29 09:50 Doc
-rw-r--r--  1 colin  staff  37  5 27 13:16 README.md
bash-3.2$
1
2
3
4
5

我们把上面的命令分析一下:

  • 第1行的bash-3.2我们之前已经讲过了,是命令提示符。后面的$表示你现在用的是一个普通用户的身份。$后面是我们的ls命令。对于Linux命令行,要让系统给我们干活,我们先要输入一个命令,比如这里的ls,后面输入一个空格,再后面我们输入了-l这是一个命令的选项参数。

    这里需要注意的是命令ls和命令选项参数-l之间要有空格。一般输入一个空格就够了,当然你可以输入多个空格也是一样的。

    一定要记得,命令和参数之间要有空格

    这里的-l参数是一个可选参数,所以你可以这样来用ls -l也可以ls。当然加-l参数和不加参数是有差别的, 你可以在自己的命令行终端上试一试。

    命令行选项参数通常都会修改命令的行为。通常这些选项参数要放到其他参数前面,前面还会加一个短横-

    -l的含义是如果输出到终端中,所有文件以下面的格式输出

    (文件的文件模式,链接数,文件的所有者,所属组,文件的字节大小,月份,文件最后一次修改的时间,文件路径名)

  • 第2-4行是ls -l这条命令的执行结果。绝大多数的Linux命令运行后,都会产生结果。结果会紧跟在上面的命令之后。当然也有一些命令只是执行任务没有结果输出出来。除非它们运行过程中出现了异常情况才会显示异常信息。

  • 第5行,系统帮我们执行完命令后,又会再次出现第1行的命令提示符。后面的光标会继续闪烁,等待你的后续操作。如果你运行一个命令,没有立刻看到第5行的命令提示符。那很有可能是命令还没有执行完成。你可能还需要再等待上一会。

  • 当然,上面的1-5的行号是为了方便给你讲解,我特意显示出来方便你查看用的,实际在命令行下,是没有这个左侧的行号的。

如何打开一个命令行终端

上面给你讲了一些命令行里的基本概念。但是你可能还不知道如何打开一个命令行终端。不同的Linux系统,可能会有一些差异。

屏幕快照 2019-06-02 下午3.54.21

  • 如果你用的是Mac系统,你可以在底部菜单中点击启动台,找到一个叫其他的文件夹,点开后,里面有个黑色的图标,底下写着终端。当然你也可以通过快捷方式,按下command + 空格,输入终端或者输入terminal下面列出的蓝色高亮如果选中了 实用工具/终端,直接按下回车。就可以启动命令行终端了。

    屏幕快照 2019-06-02 下午4.46.37

    image-20190602165113938

  • 如果你就是在一台Linux系统(比如,你安装了Linux的虚拟机)。你可以在应用程序(Application) 下找到 系统 System或者在应用程序(Application) 下的实用工具(Utilities)下找到终端 Terminal。当然,你也可以在桌面上右击,然后看到打开终端 Open in terminal的字样。然后点击启动。

  • 最后,如果你如果是在Windows系统上,有没有虚拟机,但是你有一台远程的Linux机器。你也可以使用SSH的客户端远程登录到那台Linux机器上。比如你可以使用Putty来登录。

上面三种方式,对于Linux的初学者,如果你有Mac电脑最好,如果没有,那我建议你装一台Linux的虚拟机,这样会比较方便你边学边实践。关于如何安装Linux虚拟机,网上有不少教程。你可以找一找安装一下。

Shell和Bash

当你打开终端,你其实已经进入了Shell。这个Shell也是操作系统的一部分。当你在终端中输入命令,Shell会读取到你输出的命令,并让操作系统执行你的命令。当然一个系统上会同时存在几种不同的Shell。比较主流的是Bash,很多Linux系统把Bash作为默认的Shell。我们后面的整个教程都会在Bash下演示。所以这里我假设你用的也是Bash。

如果你想要知道自己运行在哪个Shell环境下,你可以在终端里运行echo $SHELL命令,操作系统会告诉你当前使用的Shell。这里的echo是用来显示消息的命令。

快捷方式

是不是觉得终端有点难,也不用太担心了。Linux系统里有很多快捷方式可以帮助你。在我们整个教程的过程中,我们会一点点讲解这些快捷方式,这些快捷方式会帮助你提高工作效率。

这里我们来讲第一个快捷方式。当你在终端里输入一些命令后,他们实际上都存在系统里的历史记录里。你可以通过上下键,去翻阅这些之前输入过得命令。所以如果你要用到之前用过的一些命令,你不需要重复去一个字一个字得打,只需要按几次向上箭头。你就能知道之前的命令,同时你也能通过左右箭头移动光标,修改命令中的内容,确定后,按下回车就可以执行这条命令了。

课后实践

以后每节课结束后,我都会给你留下一些作业,这样你可以练习巩固一下

  • 准备好你的Linux环境,会打开关闭终端
  • 用上面学过的命令,查看下你的终端的默认Shell是不是Bash
  • 试试ls命令,看看它后面带上-l参数有什么区别
  • 在今天的这堂课里,你都看到过哪些命令,在你的电脑上也动手敲一敲。