终端

作者:Windson Yang
更新时间:November 11, 2018
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明 www.enginego.org。

命令行界面

在计算机技术刚发展的时候,并没有像现在手机/计算机那么容易上手的操作界面。大家都需要通过一个黑乎乎的程序输入命令,然后等待计算机执行。

terminal

上面我运行了 ls 这个命令,这个命令的作用是列出当前路径下的所有文件。可以看到里面包含了 10个 文件。

└── 当前目录

    ├── README.md
    ├── config.toml
    ├── data
    ├── layouts
    ├── static
    ├── archetypes
    ├── content
    ├── docs
    ├── public
    ├── themes

运行不同的程序需要使用不同的命令。在我们平时使用的操作系统中,如果需要打开一个叫做 normal.txt 的文本文件,双击文件就能打开文件看到内容了,不过在命令行界面中,需要使用 cat 命令:

cat normal.txt

那么文本的内容会显示出来。其实终端就是一个能够接收输入(键盘,鼠标),能够通过特定指令运行计算机功能的软件。

亲自试试吧

你可以尝试先打开自己计算机的终端:

macOS: 同时按住”control”+“space”键,在搜索框输入termianl,”回车”

Windows 7:打开”开始”菜单,在搜索框里输入cmd,”回车”

Windows 8+:同时按住”win”+“Q”键,然后在弹出的搜索框里输入cmd,”回车”

成功打开之后,光标会停留在某一行。类似:

WindsondeMacBook-Air:~ windson$ |

因为和计算机交互需要遵守一定的指令规则,终端默认会运行一个程序,常见的是 Bash(Bourne Again SHell)或者 sh,你可以尝试输入一个命令,然后让终端执行。

macOS: “ls”+“回车”

Windows: “dir”+“回车”

输入回车之后,你会发现终端显示出了一些文字,仔细观察的话你会发现其实是你电脑中某个目录下的文件。ls/dir 这个命令就是列出当前目录的文件。 当然这个命令还有很多参数,也就是你可以告诉计算机显示什么文件(隐藏/非隐藏),显示文件的详细内容(创建日期,大小),ls/dir 只会调用一个常用的默认配置,假如你想把隐藏文件也显示的话,在终端输入

macOS: “ls -a”+“回车”

Windows: “dir -a”+“回车”

终端还有很多其他命令,例如输出当前路径

macOS: “pwd”+“回车”

Windows: “cc”+“回车”

或者 ping 命令可以用作网络诊断。

ping www.apple.com

64 bytes from 27.148.139.136: icmp_seq=0 ttl=54 time=21.056 ms
64 bytes from 27.148.139.136: icmp_seq=1 ttl=54 time=21.575 ms
64 bytes from 27.148.139.136: icmp_seq=2 ttl=54 time=20.989 ms

为什么要用终端

以前的计算机根本没有图形界面,只能对着这样黑乎乎的界面一行行输入指令,然后祈祷它不会出错。既然现在已经有图形界面了,为什么我们还需要学习用终端呢?

  1. 多功能,一般一个软件只会专注于一个功能,例如 Word 进行文字编辑,PowerPoint 进行幻灯片编辑。你可以通过终端让计算机调用不同的程序完成多种多样的功能。

  2. 方便,对,一开始可能难以置信,但是使用终端确实比图形界面方便。你可能也会曾经遇过某一款软件更新,你找不到原本功能的按钮在哪里了。(例如某段时间Windows系统就把把“开始”菜单隐藏了。)使用命令(例如上面的 ls/dir )的话即使系统如何更新都能显示当前目录的文件。

  3. 速度快,效率高。当你要连接远程的服务器的时候,如果连接的是图形界面,那么由于网络原因以及机器性能的影响,通常都会卡得一塌糊涂。不过如果只连接命令行界面的话,那么对于网络以及机器的性能要求就非常低,能够极大地提高工作效率。

  4. 高效,跨平台,跨机器,假如今天你要清理电脑,要删除一个大型文件夹中(可能包含子文件夹)超过 90天 之前创建的所有文件,一般来说的话你需要一个个文件夹找,然后对每个文件夹里的文件进行时间排序,再手动删除超过 90天 的,如果里面包含了 100个 文件夹那么会费很多时间,同时也容易出错。使用终端的话可以直接运行

    find /path/to/base/dir/* -type f -ctime +90 -delete
    

    而且只要跑同一个系统就不用担心命令会执行出错。

  5. 容易定制,使用指令的好处是很容易根据需求来修改,加入想删除的是所有超过 90天 之前创建的文件夹,只需要修改 ‘-type f’ 为 ‘-type d’ 即可,这里 type 代表的是指令针对什么类型操作,f 是 files,d 则是 directory。

当然,要学会基本的指令也要花时间,例如一个find指令就有超过50个参数(这个命令比较特殊,参数比较多,我也常不记得,想用的时候搜索一下就好)。

如果你使用对的是Windows系统请注意,Windows有自己的一套特殊指令, 我不建议大家使用Windows来学习编程,相对来说macOX与Linux系统对开发者(也就是你)更加友好,使用他们会节约你很多时间。 不过这不代表你需要额外买一台电脑才能学习编程,只需要安装双系统或者虚拟系统就好,如果你没有接触过,没关系。我们会一步步介绍,你可以先在Windows中安装Docker,然后就可以在Windows系统中使用Linux了。