一文读懂命令行和C程序运行 - 指南
引言
你的代码运行需要输入命令吗?
在集成开发环境(Visual Studio等)中
1.点击“新建项目” 2.写代码 3.按F5运行 4.在控制台窗口交互而在文本编辑器(Visual Studio Code等)中
1.在文本编辑器/记事本中写代码 2.在CMD中输入命令,从而运行你是否会疑惑:到底要输入什么命令?为什么非要输入命令?
本文将带你一步步理解命令行的世界,解答这些疑问。
一、命令、命令行、命令行环境
1.什么是命令
一个命令是由字符组成的文本指令,用于告诉计算机执行特定任务
一个完整的命令结构:基础命令+命令行参数
基础命令:要执行的操作:如dir(列出当前目录)
命令行参数:放在基础命令后,用于修改命令的行为或为命令提供额外信息
Windows中的命令行参数形式:
选项/标志:
/或-(例:dir -a显示所有文件)参数/参数值:提供命令操作的具体对象(例:
copy file.txt,copy为基础命令,file.txt为参数,意为“复制file文件”)
所以一个完整的命令结构可表示为基础命令 [选项] [参数]
例子:(REM起到注释的作用,相当于//)
REM 基础命令
dir
REM 带参数的命令
dir /a REM 显示所有文件(包括隐藏和系统文件)
dir /w REM 宽列表格式
dir /s REM 包括子目录
dir C:\\Windows REM 列出指定目录的内容
REM 更复杂的例子
xcopy source destination /s /e /i
REM 命令:xcopy
REM 参数:source (源), destination (目标)
REM 选项:/s (复制非空目录和子目录)
REM 选项:/e (包括空目录和子目录)
REM 选项:/i (如果目标是目录或包含多个文件则假定为目标目录)
REM 文件操作
copy file1.txt file2.txt
del /q *.tmp
核心问题:
命令有了,我们如何发出命令呢
2.命令行:发出命令的地方
命令行是一个基于文本的输入/输出界面
用户与计算机的交互方式
- 用户图形界面(GUI):通过鼠标点击、拖拽等动作
- 命令行界面(CLI):通过键盘输入文本命令
总结:
- 是一个界面,有一个闪烁的光标和命令提示符(如:
C:\Users\You> - 你在这里输入命令,然后按回车来执行它
- 它负责接收你的输入和显示计算机的输出
- 是一个界面,有一个闪烁的光标和命令提示符(如:
核心问题:
命令行负责接收输入和显示输出,那么谁来理解解释这个命令并去执行呢
3.命令行环境
命令行环境是一个软件环境,包含理解、解释和执行你在命令行中输入的命令 所需的全部组件
核心组件:
1.Shell(命令行解释器):
接收你输入的文本,理解你的意图,调用相应的程序来执行(例如Windows系统上的cmd和powershell)
如何打开shell呢?
按住键盘win+R,输入cmd

点击“确定”

同理,输入PowerShell

2.终端:是一个图形化应用程序,为shell提供运行窗口。负责显示命令行界面,并将你的按键传递给shell,再讲shell返回的结果显示在屏幕上(例:Windows Terminal)
3.系统工具和命令集:是shell可以调用的实际程序文件。当你输入ls时,shell会为它找到名为ls的程序文件并运行它(例:操作系统自带的cp,mv,你安装的Git,node等)
4.总结:命令执行流程
命令行环境=终端+Shell+系统工具+它们之间的协作关系

通俗的讲:
- 终端是那个黑框框窗口
- 命令行是窗口里那个让你打字和显示文字的地方
- Shell是藏在背后的“大脑”,负责理解你的命令
- 系统工具是真正动手干活的“工人”
- 命令行环境是这个有窗口、有界面、有大脑、有工人的“整个工作室”
平常所说的“我正在用命令行”,实际上指的是我正在一个命令行环境中工作。命令行指的是这个环境的外观,Shell是这个环境核心工作的部分
二、命令行的演变历史
1970年代:
物理终端(只有键盘和显示器)
↓
通过串线连接到大型机
↓
输入命令操作计算机
1980-1990年代:
个人电脑 + DOS/Unix
↓
命令行界面是主要交互方式
2000年代:
图形界面操作系统(即通过鼠标点击)
↓
IDE成为主流,但命令行仍在后台
三、藏在C语言中的命令行
1.IDE与命令行的比较运行
在IDE中交互式运行
#include <stdio.h>
int main() {
printf("请输入你的名字: ");
char name[100];
scanf("%s", name);
printf("你好, %s!\n", name);
return 0;
}
步骤:1.按F5或 绿色的运行箭头
2.在控制台窗口中输入内容
3.看到输出

在命令行中编译并运行
#include <stdio.h>
int main(int argc, char *argv[]) {
if(argc < 2) {
printf("用法: %s 名字\n", argv[0]);
return 1;
}
printf("你好, %s!\n", argv[1]);
return 0;
}
步骤:1.将代码保存为hello.c

2.打开命令行,进入代码所在目录
3.编译运行


我们在上方见到的argc与argv便是main函数中的命令行参数
2.main函数中的命令行参数
我们常见的库函数和自定义函数的括号里是参数类型,而我们main函数后的括号也有参数
在标准C中,主函数仅支持两种参数形式,argc与argv
int main(int argc,char*argv[]){
return 0;
}
argc:(Argument Count) ,意为“参数计数“表示程序启动时接收到的命令行参数的总个数(包含程序本身的名称)
argv:(Argument Vector),意为“参数向量”本质是一个字符串数组,用于存储程序启动时接收到的所有命令行参数。
argv[0]:程序本身的路径或名称。
argv[1]及以后:依次存储用户输入的其他命令行参数
举例:
C:\>repeat Rsistance is futile
argc=4
argv[0]=“repeat”
argv[1]=“Rsistance”
argv[2]=“is”
argv[3]=“futile”现在我们回过来看上方代码:argc=2,argv[0]=“hello”,argv[1]=“张三”
四、为什么要学习命令行
1.可以批量处理重复文件:比如一口气给1000个文件改名
2.找东西效率高:图形界面中可能要点开好几个文件夹,在命令行中一句find指令就解决了
3.命令行占用内存少:不卡顿
4.说白了就是你真正理解电脑是怎么工作的,不会被花里胡哨的界面迷惑,能直接给电脑下命令。当别人只会重启解决问题时,你已经能通过几条命令找到问题的根结了。
五、常用命令示例(Windows)
| 命令 | 说明 |
|---|---|
| dir | 列出当前目录文件 |
| cd 目录名 | 切换目录 |
| cls | 清屏 |
| gcc hello.c -o hello | 编译c程序 |
| md 新目录名 | 创建新目录 |
| del 文件名 | 删除文件 |
总结与下一步
1.总结
1.命令、命令行、命令行环境的基本概念
2.命令行在C语言编程中的应用
3.命令行学习的必要性
4.如何在Windows中使用基本命令
2.下一步建议
1.尝试在命令行中编译和运行你的C程序
2.探索更多命令行工具,如Git
快来尝试吧!

浙公网安备 33010602011771号