1、Vim 代码编辑器
2、sudo apt-get update 更新最新资源库
3、sudo 应用管理员权限
4、sudo apt-get install vim 应用管理员权限安装vim软件
5、cc-v 显示当前使用的cc编译器的版本信息
6、gcc-v 显示当前使用的gcc编译器的版本信息,gcc是完全兼容cc的一款开源、流行的编译器。
7、clear 清洁屏幕
8、cd+空格 进入某个目录
9、cd ~进入当前目录的家目录(根目录)
10、pwd 查看当前所在的位置(显示路径)
11、ls 查看当前目录中包含哪些目录(文件夹)或文件
12、ls –l以详细信息的形式查看目录(文件夹)或文件
如果此列表中一行的第一个字母为“d”,说明这是一个目录(文件夹)
如是一个“-”,说明这是一个普通类型的文件
13、touch 文件名 在当前目录中新建一个文件
14、rm 文件名 删除文件
15、mkdir 目录名 新建目录(文件夹)
16、vi(或vim) 文件名.c 用vim编辑一个vim文件
17、在vim中
在命令模式时:
按“i” 进入插入(insert)模式 在当前光标前插入
按“a” 进入插入模式 在当前光标后插入
按“shift+a”(大写A)在当前行尾插入
按“shift+i”(大写I) 在当前行首插入
按“o” 在当前光标所在行下起新建一行插入
按“shift+o”(大写O) 在当前光标所在行上起新建一行插入
按“ESC” 返回命令模式
按“x” 删除当前光标的字符
按“dd” 删除当前光标所在行所有字符
“:”+“w” 保存文件
“:”+“q” 退出vim编辑器
“:”+“q!” 不保存退出
查看全部
cp 拷贝语法:cp 源文件 新文件
在main的完整形式里面,printf("argv is %d \n",argv);可以知道有多少个参数。
#include
int main(int argv,char* argc[ ])
{
printf("argv is %d \n",argv);
int i;
for(i=0;i
printf("argc[%d] is %s\n",i,argc[i]);
}
return 0;
}
查看全部
Make工具(Makefile文件)
意义
make无论是在Linux和Unix中都是非常重要的编译
make工具可以将大型的开发项目分成若干个模块
make工具可以很清晰很快捷的整理源文件
make工具在内部也是用的gcc
操作
apt-get update +apt-get install 安装软件
打开 vi Makefile
"#"注释
文件名+‘’:‘’的话就是这个文件是有什么组成的
Makfile文件里的文件都是编译好的,顺序都是从上往下
修改后的Makefile文件如果不影响源代码的话是不重新编译的
源文件编译的时候注意缩进,最好用Tab ,不然就是八个空格的空间
查看全部
程序和操作系统之间是相互交互的
C语言main函数的完整形式int main(int argv,char* argc[ ])
{
printf(''hello word \n'');
return 0;
}
Nuix是由C语言的作者发明的,所以他们的沟通是非常的方便的
‘’&&‘’是由Linux提供的链接命令的方式
输入 ‘’echo $?‘’可以判断程序是否正确执行,如果输出的是0就是正确的,1则是错误的
return 0的意义是返回命令执行成功,否则无法用“&&”连接命令
查看全部
1. sudo apt-get install
2. sudo apt-get update
3. clear
4. pwd:显示当前路径
5. ls:显示当前路径下所有文件
6. ls -l:显示文件类型和创建时间
7. touch abc:create new file abc
8. rm abc:delete abc file
10. mkdir workspace:创建
11. vim a.c:编辑(创建或编辑)
12. gcc a.c:编译
13. ./a.out:执行
14. gcc a.c max.c -o main.out:编译两个文件,生成一个main.out文件1. i:当前光标前插入
2. a:当前光标后插入
3. SHIFT+a—行尾插入
4. SHIFT+i—行首插入
5. o—>下一行插入
6. SHIFT+o--上一行插入
7. x—>删除当前光标前的字符
8. dd—>删除当前行
9. gg=G—>auto format
10. CONTROL+W—>切换
11. 9+dd—>剪切
12.
————————————
1. :w—>save
2. :q—>exit
3. :wq—>保存并退出
4. :wqa—>保存所有文件并退出
5. :sp max.c—>分屏,创建另一个文件
查看全部
<>在系统库里查找
""在当前的目录查找
cd ~/workspace/
在vim中 可以同时打开多个文件 :sp max.c
返回命令模式 esc
跳转到下一个文件 Ctrl+W+下箭头
跳转到上一个文件 Ctrl+W+上箭头
打开行号 :set nu
剪切本行以及下面的若干行 数字+dd
粘贴 p
把打开的文件同时保存并退出 :wqa
编译两个文件 gcc max.c hello.c -o main.out
写一个输出数据名称 -o main.out
查看全部
用C语言写一些小工具然后结合起来。💪
查看全部
0
采集
收起
2021-02-20
1.“水龙头”-“管道”-“水壶”
“管道”即为起连通作用的小工具:将一个工具的输出流作为下一个工具的输入流!
2.Linux系统自带的小工具如何使用,其实这些小工具就是一个应用程序,比方说ls /查看根目录,比方我们要查找某个目录下有多少个文件名包含“ab”,我们可以写ls /etc/ | grep ab,其中这个竖线就是管道的意思,grep是从文本文档中查找指定的行(其实可用于文本搜索)。grep是个小工具,需要输入流输入。这里就是把ls/etc/目录输出当作了输入流。
将我们前一个程序执行输出流,通过管道得到我们需要的内容。通过管道我们就可以使用很多自动化的方法,管道的应用还有很多。
例如,ps可以查看当前的进程,我们想查看我们当前操作系统是否开启ssh进程,我们可以使用命令ps -e | grep ssh,查看所有进程中是否包含ssh服务的,若有我们便可以进行连接。
3.ls /:查看根目录
ls /etc/:查看根目录下etc目录(etc:linux默认的文件)
ls /etc/ | grep ab:要查找某个目录下有多少个文件名包含"ab"
grep:从文本文档中查找指定的行(其实可用于文本搜索)
ps:在linux系统下查看进程的工具。
ps -e:可以查看当前运行的的进行进程。
ps -e/ | grep ssh:要查找某个目录下有多少个文件名包含"ssh"
查看全部
linux是对IO设备抽象成文件进行操作,默认的输入就是键盘,而输出是显示器,重定向机制就是把输入流重定向到其他文件
查看全部
其实,这三个流就是把某个数据连接到或指定到这三个流,就会自动输出到指定位置。不指定位置,就输出到默认位置
执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
查看全部
gcc -c 文件名 -o 命名.o
编译文件,生成.o文件
gcc 文件1.o 文件2.o ... 文件n.c
合并生成.out文件
cat 文件名
查看该文件
rm *.文件格式
删除目录下该格式的所有文件
如:rm *.out //删除所有.out文件
rm *.o 删除所有的.o文件
make把大型的开发项目分成若干个易于管理的模块
检查系统有没有装make >> make -v
若没有安装,则 >> sudo apt-get install make
创建make文件 >> vi makefile
make文件注释用 “#”
hello.out:max.o min.o hello.c //max.o和min.o hello.c一起生成hello.out文件
gcc max.o min.o hello.c(8个空格或代表8个空格的tab键)
max.o:max.c
gcc -c max.c
min.o:min.c
gcc -c min.c
执行make
hello.out:max.o min.o hello.c -o hello.out
查看全部
gcc - c max.c -o max.o
//#include
gcc max.o hello.c
编译之后生成 .o文件
拷贝文件 cp
把不常改动的函数,类和框架提前编译好生成静态库
查看源代码 cat hello.c
.o文件不可读
.h文件放声明 int max(int a,int b);
#include"max.h" 便于让没有编写max函数的人使用max函数
gcc max.o min.o hello.c 3个文件一起写,否则找不到max,min函数
查看全部
gcc -c max.c -o max.o
部分文件编译,先翻译成不可执行的机器码//#include "max.c"
在主函数文件中注释掉编译已完成的文件,不然会重复出现max()gcc max.o hello.c
完成编译
目的:节约时间(使编译可以碎片化,不然单次编译时间可能过长)
使用头文件声明函数,放入主函数文件预处理,方便查看函数返回值类型及参数类型。
查看全部
gcc -c max.c -o max.o
部分文件编译,先翻译成不可执行的机器码//#include "max.c"
在主函数文件中注释掉编译已完成的文件,不然会重复出现max()gcc max.o hello.c
完成编译
目的:节约时间(使编译可以碎片化,不然单次编译时间可能过长)
使用头文件声明函数,放入主函数文件预处理,方便查看函数返回值类型及参数类型。
查看全部
我们现在写一个程序avg.c,求任意个数的平均值:
#include
int main()
{
int s,n;
scanf("%d,%d",&s,&n);
float v=s/n;
printf("v=%f\n",v);
return 0;
}
退出vim进行编译cc avg.c -o avg.out,我们得到avg.out,我们输入3000,3。
我们再写一个统计输入的程序input.c:
#include
int main()
{
int flag=1;
int i;
int count=0;
int s=0;
while(flag){
scanf("%d",&i);
if(0==i) break;
count++;
s+=i;
}
printf("%d,%d",s,count);
return 0;
}
我们对这个函数进行编译cc input.c -o input.out,我们输入3000 3000 0,输出总工资6000和人数2人
我们使用以上两个程序结合起来,将所有数据进行统计input.out,之后通过管道经过avg.out计算平均值,命令可以写为./input.out | ./avg.out,然后进行输入,输入完成我们便得到了对应的平均工资。
以上就是通过管道,将两个小程序连接起来得到更复杂的程序的过程
查看全部
ls 表示查看磁盘目录结构,ls /表示查看根目录;ls /etc/表示文件配置目录;| 表示管道,grep为查询包含指定字符的行,例如ls /etc/ | grep ab,那么会输出etc中包含ab的程序,管道相当于grep的输入流;
ps -e 查看进程;ps -e | grep ssh;
查看全部
重定向机制:把输出流定向输出到某个位置,例如文件中,./a.out 1>>a.txt则输出不再显示在屏幕上,而是显示在a.txt中,但输入仍然在键盘,且输入显示在屏幕上;2代表错误流,1代表输出流,0代表输入流,不写默认为1;读取a.txt命令为cat a.txt;>为覆盖更新整个文件的重定向命令(如最新数据),>>为顺序写入文件的重定向命令,不会覆盖原本的内容(如日志文件);把某个文件作为输入流,例子命令为./a.out < input.txt 1 >t.txt 2>f.txt
默认情况下,标准输入流为键盘输入,标准输出流为终端输出,标准错误流为错误输出,重定向机制可以改变默认情况,将流输入或输出到特定文件或位置;
查看全部
linux系统将外设当成一个个文件,程序处理后输出到某个外设(文件夹),再由外设去处理;stdio.h 包括stdin、stdout、stderr三个文件,把默认键盘当做stdin文件,把默认显示器当做stdout文件;
也可以向指定的文件输出:fprintf(stdout,"please input the value a:\n")
//printf("please input the value a:\n"),向显示器输出
fscanf(stdin,"%d",&a);//scanf("%d",&a)=本质是从键盘文件stdin读入a
fprintf(stderr,"the value must>0");return1;
查看全部
【main函数中的参数】
我们使用命令cp main.c main2,c,复制并创建一个main2.c文件:
#include
int main(int argv, char* argv[])
{
print("argv is %d \n", argv);
return 0;
}
我们在使用命令cc main2.c -o m2.out进行编译,执行./m2.out命令,有“argv is 1”
对于ls我们可以在此命令上加参数,例如:
显示更多的文件信息:ls -l
显示隐藏的文件信息:ls -a
那么,同理,我们也可以对./m2.out这个可执行文件加参数。分别执行如下命令并观察输出:
./m2.out,输出为“argv is 1”
./m2.out -l,输出为“argv is 2”
./m2.out -l -a,输出为“argv is 3”
我们可以观察到,加不同个数的参数,argv返回对应参数的值,我们不仅要知道几个参数,我们还可以知道每个参数是什么,我们将程序进行修改,加上如下一段代码:
int i;
for(i=0; i
printf("argc[%d] is %s\n", i, argc[i]);
}
这时,我们再编译gcc main2.c -o m3.out,运行./m3.out -l -a asadf sdfd有如下显示:
argv is 5
argc[0] is ./m2.out
argc[1] is -l
argc[2] is -a
argc[3] is asadf
argc[4] is sdfd
以上内容和linux,unix联系非常紧密,尤其是在linu嵌入式,linux小工具的开发,以及linux的网络编程,都是很重要的内容。
查看全部
main函数的完整形式:int main(int argv,char* argc[])
C语言程序在Linux运行的时候,可以跟操作系统进行交互,可以完美兼容
将两个命令一起执行:命令一 && 命令二(带命令一成功执行后进行命令2)
程序执行后判断程序是否正常执行:echo $?-----返回0为正常----所以main函数中return必须为0,才能让系统判断为正常执行
查看全部
1、Linux=unix like,unix是有发明C语言的人写的
main()函数实际的形式是main(int argv,char* argc)
2、Linux里面有一个命令连接符:命令1 &&命令2
会在命令1(执行成功)返回0之后执行命令2
截图里面 第二个main.c文件return为110,所以命令gcc main.c -o main2.out执行后返回的是110,所以 ./main2.out不会被执行
查看全部
1、rm *.o // 移除所有.o文件;
2、make 工具可以将大型的开发项目分成若干个模块,清晰快捷整理源文件;约定写一个文件:vi Makefile#M大写;在大项目中 如果每次编译都需要将全部小文件编译一次可能需要很久很久。make工具让我们每次输入make,只会自动处理需要修改的地方;
3、Makefile文件注释用 “#”;
hello.out:max.o min.o hello.c //max.o和min.o hello.c一起生成a.out文件
gcc max.o min.o hello.c(行代码前8个空格或代表8个空格的tab键)
max.o:max.c
gcc -c max.c
min.o:min.c
gcc -c min.c
执行make
hello.out:max.o min.o hello.c -o hello.out
4、gcc -c 文件名 -o 命名.o //编译文件,生成.o文件
gcc -c 文件名 -o 命名.out //编译文件,生成.out执行文件
查看全部
一、函数可以先编译成.o文件,然后再和主函数文件一起编译成可执行文件。在源代码多的时候可以提高效率。例如:1、gcc-c min.c -o min.o 2、gcc min.o hello.c
二、cat+文件名 命令可以查看源代码。
三、.o文件为机器码,可以编写一个.h文件,然后在主文件中进行预处理声明 #include".h"。 通过cat +.h文件别人就可以知道你编写的函数的类型及参数。
四、.c C语言源代码
.o编译过的二进制机器码文件
.h函数说明文件(没有源代码时,看.h就知道函数使用方法)PS:.h没有实际代码作用,仅供查看。
五、把不常改动的函数,类和框架提前编译好生成静态库(.o文件,减少主函数编译时间)
查看全部
一、函数可以先编译成.o文件,然后再和主文件一起编译成可执行文件。在源代码多的时候可以提高效率。例如:1、gcc-c min.c -o min.o 2、gcc min.o hello.c
二、cat命令可以查看源代码。
三、.o文件不能被其他人查看,可以编写一个.h文件,然后在主文件中进行预处理声明 #include".h"。 通过.h文件别人就可以知道你编写的函数的类型了。
.c C语言源代码
.o编译过的二进制机器码文件
.h函数说明文件(没有源代码时,看.h就知道函数使用方法)PS:.h没有实际代码作用,仅供查看。
gcc编译流程分为4步
预处理(Pre-Processing) -> 编译(Compling) -> 汇编(Assembling) -> 连接(Linking)
预处理:处理#include、#define、#ifdef 等宏命令
编译:把预处理完的文件编译为汇编程序.s
汇编:把汇编程序.s编译为.o二进制文件
链接:把多个二进制文件.o集合(链接)成一个可执行文件
cp A B ----将A文件中的内容复制到B文件
cat A -----显示A 文件中的内容
查看全部