本文转载自公众号“读芯术”(ID:AI_Discovery)
熟悉终端是一种提高效率的好办法。别再用鼠标在GUI中点来点去了,你可以使用效率更高的命令行来完成相同的工作。如果想让命令行用得顺手,那么有些命令是必须了解的。这些命令很基本,且很重要。要为命令行的使用打下坚实的基础,就必须掌握这些命令。
本文适用于想更好地使用Linux命令行的读者。没有丰富的命令行经验也是完全可以读懂本文的,已经习惯使用Linux命令行的读者也不必担心从本文中学不到东西。那么我们开始吧!
1. tail -f
cat命令可以用来查看文件内容。但是在查看时会有更多的选项。cat命令输出整个文件,这有时是没必要的。如果只想输出第一行或最后某行,则可以使用tail或head命令来实现。默认情况下,head命令输出前10行,tail命令输出后10行。
tail命令通常用于查看日志文件,这是因为tail命令有一个-f选项,代表“follow”,可以用来查看文件。此选项将在文件内容增多时输出追加的数据,就可以立即显示附加到文件中的日志项。
2. scp
scp表示安全复制(secure copy),可以在互联网的主机间复制文件。使用scp的一种方法是将文件从个人计算机复制到远程服务器,反之亦然。scp与安全外壳协议(SSH)相互协作。
这个命令非常简单,工作原理与cp命令类似。唯一的区别是,可以用scp将文件复制到其他主机,而普通的cp命令不可能做到这一点。
-
scp [target] [destination]
scp看起来就像熟悉的cp命令。要将文件从服务器复制到个人计算机,必须执行以下操作:
-
scp derk@127.0.0.1:/target/file.txt ~/destination
本例中,用户为“derk”,主机为127.0.0.1。主机地址后跟冒号。冒号后指定需要复制的文件的路径。第二个参数是destination,在本例中是个人计算机的一个文件夹。该命令的结果是将file.txt从服务器复制到本地计算机的~/destination文件夹。
例如,这很适用于从服务器下载数据库备份。如果想从个人计算机上传文件到远程主机,则需要切换参数。
-
scp ~/target/file.txt derk@127.0.0.1:/destination
这个命令将file.txt从个人计算机复制到远程主机上的destination文件夹。
3. cd -
cd是Linux命令行中使用最频繁的命令之一。然而,许多开发人员还不知道cd命令附带的一个很好的选项——连字符。
-
cd -
在cd命令后添加连字符可以返回到先前选择的目录。下面是实际操作的示例:
4. diff
如果曾经使用过版本控制,那么很可能使用过diff命令。例如,在使用Git时,这个命令可以查看对某个文件所做的更改。
diff命令代表差异(difference),可以逐行比较文件。假设有两个文件都包含大陆的列表,这些文件之间唯一的区别是大陆的排列顺序。
对这两个文件使用diff命令,将得到以下输出。同时一定要添加-c选项,它可以输出上下文模式中的差异,从而使输出更具有可读性。
5. locate
locate命令是在计算机上搜索文件的一个非常强大的工具。与find命令相比,locate命令要快得多。之所以这么快,是因为它不读取文件系统来搜索文件或目录名,而是引用一个数据库来查找用户正在查找的内容,并基于搜索生成相应输出。
locate命令的语法非常简单:
-
locate [filename]
这个命令的输出将列出包含指定术语的所有文件,在下面的示例中,搜索的术语是“xml”。
还可以使用正则表达式来搜索完全匹配。用-r选项指定正则表达式。
-
locate -r /filename$
6. lsof
lsof命令可以列出所有打开的文件。它的语法很简单,只需键入lsof即可。这个命令无其它选项,列出所有处于活动进程中的打开文件。
这个命令适用于多种情况,其中一种情况是查看哪些进程正在某个端口上运行。为此,必须指定-i选项。下例中,我们要查看哪些进程正在端口22上运行,即SSH的端口。
-
lsof -i TCP:22
也可以列出一系列端口。下例列出了端口范围为20-30中运行的所有进程。
-
lsof -i TCP:20-30
最后,lsof命令的输出可用于终止特定用户的所有进程——在本例中为derk。
-
kill -9 `lsof -t -u derk`
7. history
history命令存储了从当前终端会话运行的所有其他命令的列表。下图是history命令输出的示例:
可以将history命令与grep结合起来,使搜索更加精准。
-
history | grep npm
不仅可以使用history命令查看所有已运行的命令。还可以使用history命令再次快速执行其中一个先前执行过的命令。
每当执行history命令时,在每行前面都会显示一个数字。用感叹号后跟行号可以再次执行相同的命令。
-
!488
回顾之前的例子,上面的命令将再次执行ls -al命令。
8. wget
Wget可以从Web下载文件。下文展示了wget命令的语法,只需要指定要下载的资源即可。在本例中,我们将下载一个随机图像。
-
wget https://picsum.photos/200
wget采用最简单的形式,没有任何选项,它把URL中指定的资源下载到当前目录中。默认情况下会发现wget命令输出下载相关的大量细节,例如下载速度和进度条。要关闭输出,可以使用-q选项。如果想用不同的名称保存下载的文件,可以使用-0选项,后跟文件的名称。
-
wget -O my-image.jpg https://picsum.photos/200
希望本文介绍的这些命令,可以让开发人员的生活变得简单一些。