命令行工具

本节介绍 Linux 常用命令行工具。

命令行工具

我们做数据处理的时候,有两个地方会用到命令行工具。一是对数据,特别是文本数据进行处理时,二是使用各种大数据系统时。

命令行方式用起来效率特别高,因为我们就可以直接给系统发“命令”了。

下面我们就介绍一些基本的一些命令。我们下面介绍 Linux 的命令,但用 Windows 系统演示。注意,数据科学常用 Linux 系统,而 Linux 的命令和 Windows 的命令稍微有一点差别。此外,大家现在也常用 MacOS。很高兴的是,Linux 命令和 MacOS 命令是一样的,所以它们两是可以通用的。

文件系统命令

第一个 Linux 命令是 ls,它能显示目录下的子目录和文件。ls 相当于 Windows 里的 dir。我们看,dir 是 directory 的首字母。运行它之后,我们就能看到这个目录下的子目录和文件。注意 ls 在 Windows 里不支持。Windows 里就是 dir。到了 Linux 下,你就用 ls 这个命令。

如果光敲一个 ls 的话,只会显示目录下子目录和文件的名字。我们如果输入 ls -l,看到的东西就多一些了。我们来看看 ls -l 给出的内容。

首先,第一个字母,如果是 D 的话, 就代表这是一个目录:directory。

然后,紧跟的三个字母,r 代表 read,w 代表 write,x 代表 execute 执行。它们表示这个文件或者子目录的主人,能够对它进行什么操作。这就是所谓的“权限”;再后面三个字母,就是跟你一个组的人对这个子目录或者文件的操作权限;再后面是系统中的其他人的权限。

然后,是文件的大小和文件修改时间。

第二个命令是 cd。Linux 和 Windows 下都用 cd 这个命令。cd,就是进去一个目录。大家看,这个 contacts,就是联系人,是一个目录。我现在想要进去这个目录。我们原来是在资源管理器里面双击这个目录,对不对?但是我们现在用命令。我们在这个命令行界面里敲 cd contacts,然后回车。大家看,我原来是在这个 user yf 目录下。一旦我 cd contacts 了,这个显示的路径就变长了,说明我在 contacts 这个目录下了。这就是 cd 的功能。

命令行特别好用。为什么呢?比如说,大家看,cd 空格后,你就敲一个c,然后按 tab 键,这个命令行工具就会自动帮你补全。所以命令行其实很方便的。

大家注意到没有,在这个目录下,ls -a 以后,它显示的目录下的子目录和文件的列表里,第一个目录是一个点,第二个目录是两个点。它们是有意义的。这一个点就代表着自己,两个点就代表上一级目录。所以,大家看我现在已经进入了 contacts 目录了,没错吧。我现在cd ..,它就回到上一级目录了。你看,我就从 contacts 这个目录下,回到了 user yf目录下了。

你要回到刚才那个目录去,怎么办呢?你可以 cd - 就回到前面的目录了,再 cd - 就又回来。

第三个命令是 pwd:如果想看现在在哪个目录下,就用 pwd。

第四个是 find。如果想遍历看一下目录下所有的文件,用 find . 就可以了。

第五个是 grep。它可以搜索输入文件中,找出带有特定关键字的行。

第六个命令是 cp。cp 就是 copy,复制。

第七个命令是 rm。rm 就是 remove,删除。这个 rm 大家要小心点用啊,因为它不进回收站的,它真的就删了,所以要特别小心。

第八个命令是 unzip。它能够解压 zip 文件。

第九个命令是 clear。如果你觉得屏幕上的东西特别多,特别乱,你就 clear 就行了。

第 10 个是 cat。它会把一个文件的内容打印到屏幕上。

语法

下面讲命令的语法。命令的语法是首先敲命令的名字,比如 ls,然后呢,敲一个减号,后面带一些字母。这些字母就是 option(选项)。最后,是这个命令的参数(parameter)。

这个 option 就很有讲究了。比如说,rm -rf 后面跟一个目录,比如这个 contacts 目录,它就会把这个目录删掉。具体怎么做的呢?我们来看它的两个 options。

首先是 f 这个 option。它的意思是 force,就是说:它不会再提示你了,就直接删。为什么要加这个 option 呢?因为如果不加的话,它会问你:真的要删吗?你要回答一个 yes,它才真删。所以,你加一个 f option,就是说:你别问我了,你就删吧。它就会安静地全删掉了啊。就恢复不了了啊!所以要慎重!

其次是 r 这个 option。它的意思是“递归地”(recursive),意思是它会从这个目录的最底层的子目录开始,递归地,一级级往上,依次删除,直到把整个目录都删干净。为什么要从最底层的子目录开始删呢?因为如果一个文件夹里面有东西的话,它是不删的啊。所以,必须得先进入最底层的目录,把里面的文件删掉,才能删掉这个目录,然后一级级地往上删。

在哪里找到这些 options 的使用说明呢?在 Linux 下,有一个命令 man。这个 man 是 manual(手册)。你敲这个man,然后后面跟上一个命令的名字,它就会给你这个命令的详细解释,告诉你这个命令是干啥的,里面有些什么 option。

大家就说了:哎,老师,我用鼠标点一点不挺好的吗?多么开心啊!为什么还要我敲这么多字母啊,这黑咕隆咚的,虽然确实比较保护眼睛。

为什么呢?由两个原因。首先,这是因为,我们可以用这个终端,远程登录到各种数据处理的高性能服务器上去工作。那么,在这个终端上,你就没有鼠标可以点,你只能敲这些东西,对吧?所以得准备这些知识才行。其次,利用这些基本的命令,你就可以编写脚本,让电脑按照你的脚本,自动执行一系列工作啦。这样能给你很大的灵活性,不用一路点鼠标,点无数次。这就是 Shell 编程。数据科学的很多工作,就是这样完成的啊。

这是数据科学的工程师,不管是分析师,还是系统工程师,都是要学会的。

其它命令

其它一些有用的命令包括 wc、du、head、file,请大家自学。

然后请大家查看这个 Linux命令参考表,熟悉一下这些命令。

参考


Index Previous Next