首先还是要理清几个概念:终端、控制台、命令行和批处理。
也许大家都知道,很久以前,在同一个计算机往往被多个人复用时,一个机器可以对应着多个屏幕和键盘,每个屏幕都是暗色的底加上白色的文字,通过键盘输入命令来使计算机进行工作。这些设备就被称作终端(Terminal),而每一个计算机有一个直接控制机器的台面并且具备终端的功能,叫作控制台(Console),在终端输入的指令是命令行(Command Line),像这样与在终端输入命令行相似的界面叫作命令行界面(CLI),与之相对的是图形用户界面(GUI),而在Windows系统上的命令行语言就是批处理(Batch),也就是那些后缀名为.bat或.cmd的文件。
而本文的终端,指的是模拟终端的一些软件,此处使用PowerShell,只因其通用于linux的命令语法(bat在一些方面真的很别扭)。推荐下载PowerShell并将其设置为终端的默认应用,win10/win11默认Win+X再按I打开。
在很多地方,就拿我唯一接触过的云服务器上吧,是只有命令行界面的。那性能本就捉襟见肘的服务器根本没有余裕去维持一个美观且令人愉悦的图形界面,因而只会给你一个终端,让你去管理一切。
自然,一开始去面对那黑洞洞的屏幕是很绝望的事情,但要记住GUI可以做到的事情CLI也都能做到,只是需要慢慢熟悉的时间,而适应之后效率自然会得到很大的提升。
双手键盘 > 单手键盘+单手鼠标
自然,现在的图形化界面已经完善到了很少需要终端的程度,但依然难以覆盖到所有方面,尤其是编程相关的领域。例如,在文件夹内安装nodejs的第三方包,用一行命令行代码就可以解决问题,而非在浏览器搜索下载拷贝。再例如,修改测试短小的python代码,也是往往用命令行加记事本解决,而非再大费周章地使用IDE。可以看到,终端以很低的成本能够完成相当灵活的任务。
此外,既然要开发,那就不可能避开linux,而熟练掌握linux的指令更是重中之重。通过PowerShell可以提前熟悉其中一部分指令以及CLI界面。无论如何,系统可以多种多样,但使用CLI进行管理的基本思想永远不会变动。
其实也就是linux命令的基本指南
首先要知道一个概念:工作目录
PowerShell在输入命令的前面会有一个路径,如C:\Users\Zixin
,这就是当前PowerShell的工作目录,所有命令都将基于这个目录进行。
运行命令时往往需要在命令后添加一些参数,如一短横后加一个字母,代表着不同模式,又如目标路径等。
ls
列出当前目录所有文件ls Dir
列出当前目录下Dir文件夹内所有文件cd Dir
工作目录移动到Dir文件夹(相对路径)cd D:/Dog
工作目录移动到D盘Dog文件夹(绝对路径)cd ..
工作目录移动到当前目录父文件夹cd /
移动到根目录cd ~
移动到用户目录(通常为C:\Users\用户名
)mkdir foo
创建foo文件夹rm apple.txt
删除apple.txtrm -r *
递归删除当前目录所有文件(包括文件夹)echo helloworld
输出helloworldcat love.txt
输出love.txt内容cat cap1 cap2 cap3
将cap1、cap2、cap3的文本拼接并输出notepad
打开记事本(直接输入应用名需要添加系统变量)./program
运行当前目录的program程序python test.py
用python运行test.py文件(同样需要python被添加进系统变量)help ls
查阅ls用法,按回车继续阅读,按f退出关于更多的命令,也可以查阅菜鸟教程
如何编辑系统变量此处不再赘叙
何为系统变量?个人理解是,系统变量是一个库,当系统每次需要调用某个东西时便会优先查询该库。
下面给出一个C语言的例子:
c#include <stdio.h>
#include "mybin.h"
......
此处,如果该C语言文件所在目录中没有mybin.h就会报错,因为编译时需要找到该文件进行链接,但目录中没有stdio.h也不会报错,为什么?因为(C语言正确配置后)系统变量中包含了C语言的库所在的目录,于是系统便能正确地找到其中的stdio.h,而不需要再将其拷贝到项目文件夹中。
编程语言的配置往往都需要编辑系统变量,而如果将应用exe文件所在目录添加到系统变量中也能在终端中输入应用名直接运行。