01
—
Liunx相关命令
1.1 mv:移动,剪切命令
命令格式:
mv 源文件 目标文件 作用:剪切成新文件
mv 源文件 目标目录下 作用:剪切到制定目录里面去
mv 源目录 目标目录 作用:剪切成新目录
mv 源目录 目标目录下作用:剪切到制定目录下
小案例:演练mv
mdir -p /home/tarena/mvtest
cd /home/tarena/mvtest
mkdir -p hello 在当前目录下创建hello目录
touch hello.txt 在当前目录下创建空文件
ls -lh 查看当前目录下所有文件和目录的详细信息
mv hello.txt hellol.txt 重命名
ls -lh
mv hellol.txt hello 把hello.txt 剪切到hello目录里面去
ls -lh
ls -lh hello/
mkdir -p hello2
mv hello2 hellol/ 把hello2目录移动到hello1目录里面去
ls -lh
ls -lh hello2
1.2 whoami
查看当前登录linux系统的用户名
格式:whoami
1.3 cat
快速查看文件内容
格式:cat 文件名
例如:
cat home/tarena/hello.txt
cd /usr/include
cat stdio.h
1.4 echo
打印命令,向显示屏打印信息
格式:echo 打印信息
例如:echo 我是大神
注意:echo
命令一般会配合’>‘或者’>>'一起使用
格式:echo 打印信息 > 文件名
功能: 将打印信息保存到文件中,如果文件有内容,会将原先的内容清楚,把新内容保存里面
echo 打印信息 >> 文件名
功能: 将打印信息保存到文件中,把新内容添加到文件的尾部,文件原来内容保持不变
echo:sudo /home/tarena/hello.txt
echo 我是大神 > hello.txt
cat hello.txt
echo 我是小森 > hello.txt
cat hello.txt
echo 我是大神 >> hello.txt
car hello.txt
echo 你是谁啊 >> hello.ttx
cat hello.txt
1.5 find
查找文件命令
格式:find 路径 -name 文件名
语义:到指定的路径下找一个名称为name的文件
例如: find /usr/include -name stdio.h
cd /home/tarena
find . -name hello.txt
1.6 grep
在文件中搜索关键字
格式:grep -Rn "关键字" 文件名
例如:
touch /home/tarena/hello.txt
echo 我是大神 > hello.txt
echo 我是大神 >> hello.txt
echo 我是大神 >> hello.txt
echo abcdefg >> hello.txt
cat hello.txt
grep -Rn "cde" hello.txt 在hello.txt 中搜索关键字cde
1.7 tar
linux系统制作压缩包和解压缩命令
记住以下三条终极命令:
// 制作压缩包两条命令:
tar -jcvf 压缩包名.tar.bz2 目录或者文件
作用:把目录或者文件制作成bz2格式的压缩包
tar -zcvf 压缩包名.tar.gz 目录或者文件
作用:把目录或者文件制作成gz格式的压缩包
// 解压缩命令一条:
tar -xvf 压缩包名.tar.bz2或者压缩包名.tar.gz 结果:生成目录或者文件
小案例:演练打包和解包
mkdir -p /tarena/tartest/
cd /tarena/tartest/
touch hello.txt
echo 123456 > hello.txt
cd .. 进入上一级目录
tar -jcvf tartest.tar.bz2 tartest
tar -zcvf tartest.tar.gz tartest
ls -lh tartest.tar.bz2
ls -lh tartest.tar.gz
rm -rf tartest
tar -xvf tartest.tar.bz2 tartest
ls -lh tartest
cat tartest/hello.txt
rm -rf tartest
tar -xvf tartest.tar.gz tartest
ls -lh
02
—
Vim编辑器
2.1 创建的编辑器
vim, vscode, sublime, eclipe等等
2.2 vim编辑器对应的命令:vim
格式:vim 文件名
语义:打开新建文件
2.3 vim三种模式:可视模式,编辑模式,命令行模式
vim 默认模式是可视模式
编辑模式: 可以修改
命令行模式:可以给vim发送控制命令
2.4 三种模式的切换
可视模式------->按i键------>编辑模式
编辑模式------->按ESC------>可视模式
如果现在是可视模式------>按shift加:------->命令行模式
命令行模式------>ESC------->可视模式
2.5 vim命令行模式下的相关命令:
w:保存文件
q:不保存退出
wq:保存退出vim命令
q!:强制退出
%s/老信息/新信息/g: 字符串替换,将文件中所有的老信息用新信息替换
例如:
%s/我是大神/whoani/g 将文件中所有的我是大神这四个字替换成whoami
直接输入行号:让光标直接跳转到制定行号
vs 文件名:左右分屏,这样可以同时编辑两个文件
sp 文件名:上下分屏,这样可以同时编辑两个文件
注意:屏幕之间切换的快捷键:ctrl+ww
2.6 vim可视模式下的相关快捷键
1)光标移动快捷键:h(左移), j(下移), k(上移), l(右移)
2)行选中:shift+v然后移动光标选中那个
3)列选中:ctrl+v 然后移动光标
4)复制:Y
5)粘贴:P
6)剪切:X
7)取消:U
8)跳转到文件的尾部:G
9)跳转到文件的开头:gg
10)保存并且退出vim:ZZ
11)自动补全:ctrl+n(注意:前提是先进入编辑模式,然后怓某个单词的开头字母,然后发现有多个相同开头的单词,根据需求选中一个即可
03
—
C语言编程基础
3.1. c语言功能:类似英语
3.2.编写第一个C语言程序
具体实施步骤:
mkdir -p /home/tarena/stdc/day02
cd /home/tarena/stdc/day02
vim helloworld.c 添加如下内容
/*
这是我的第一个C语言程序
我很激动
*/
// 这个仅仅作为一个测试
#include <stdio.h>
int main(void)
{
printf(“你好,世界”)
printf(“hello,world\n”);
return 0;
}
保存退出
继续执行一下命令
gcc helloworld.c 作用:编译程序
ls -lh 此时多了一个a.out文件
./a.out 作用:运行a.out程序
3.3.总结C程序基本编程规范
a) C程序对应的文件有两种形式:
1.源文件:以.c结尾,例如:helloworld.c
2.头文件:以.h结尾,例如:stdio.h
任何C程序都必须有一个源文件,头文件可以有,可以没有
b) C程序的注释有两种形式
(就是程序代码的解释说明,给程序员看,不参与程序的编译和运行)有两种:
/*中间就是要解释说明的*/
优点:可以注释多行
缺点:不能嵌套注释,例如:/*我是大神/*我是小神*/*/(这种是错误的)
// 后面跟要注释的内容
优点:可以嵌套注释
缺点:不能多行注释
c) C程序要包含一个别人写好的头文件(就是将头文件的内容全部拷贝过来),包含头文件的方法有两种:
1. 语法:#include <头文件名>
例如: #include <stdio.h>
语义:告诉gcc编译器将来默认到linux系统的/usr/include目录下找stdio.h头文件找到后将头文件内容全部拷贝过来
2. 语法:#include "头文件名"
列如: #include "stdio.h"
语义: 告诉gcc编译器先在当前目录下找stdio.h头文件,如果
找到了,那就包含拷贝;如果没有找到,再去/usr/include目录下找头文件
stdio.h,如果找到那就拷贝, 如果还没找到,就报错
d) C程序必须包含一个唯一的主函数,名称必须叫main
并且main函数的原型必须如下:
{
里面就是将来要执行的语句
}
或者:
int main(void){
里面就是将来要执行的语句
}
结论:将来运行C程序时,linux操作系统,只认main函数,必须从main
函数开始执行 ,从main函数开始,从上往下挨个执行
e) C程序的主函数main中能够(花括号里面的内容)编写规范:
1. 每条语句后面都要跟";"
2. 执行顺序:从上往下挨个执行
3. 只要遇到或者执行return,C程序立马结束
return后面可以跟一个数字,例如:
return 0; 表示告诉操作系统,此程序执行结束了并且执行的很正常
return -1; 表示告诉操作系统,此程序执行结束了但是执行的时候优点问题
例如:main函数的形式如下
int main(void)
{
printf(“你好,世界”)
printf(“hello,world\n”);
return 0;
}
f) 第一个认识的标准C库函数printf()
1. 标准C库函数使用,调用语法: 函数名(信息);
2. printf函数的功能:向显示器上打印输出信息
3. 例如:printf("输出打印的信息\n");
注意: '\n': 表示回车换行,如果没有\n,光标继续显示在本行
4. 注意:要想调用大神的printf,必须开头包含头文件stdio.h
5. printf利用占位符可以打印输出制定的数字信息
%d占位符功能:按照整数形式打印输出一个数字
例如:printf("1+1 = %d\n", 2);
语义:将来2这个数字会放到%d这个位置上,然后将1+1 = 2这个信息打印到显示器
printf("1+1 = %d\n", 1+1);
语义:先算1+1,然后将1+1 = 2这个信息打印到显示器
3.4. gcc编译源文件的三种方式
3.3.1 gcc编译的三种方式
a) 流氓法
gcc helloworld.c 默认都会生成a.out(这个名字做不到见名知意)
b) 分步编译
gcc -E -o helloworld.i helloworld.c // 先预处理
gcc -c -o helloworld.o helloworld.i // 然后只编译,不链接
gcc -o helloworld helloworld.o // 最后链接大神的printf,最终何时能成helloworld可执行程序
.helloworld //运行程序
c) 一步到位
gcc -o hellowprld helloworld.c //直接对源文件进行编译生成可执行文件
//心里要明白:gcc还要做三件事,只是看不到而已
04
—
C语言(C程序)的变量
-
务必掌握计算机内存相关的概念
1.内存的特点
暂存CPU运算之前的数据和运算之后的数据,还有暂存程序,任何程
序都是在内存中存储,所以 势必要消耗 内存,速度快,掉电数据丢失
结论:程序最终玩内存
字节(Byte):
计算机将内存分成一格一格,每一个用来存储一个数字,每一个的专业术语叫字节
注意Byte的简称:B
换算公式: 1KB=1024B 1MB=1024KB=10241024 1GB=1024MB=10241024KB=102410241024B
地址(address):
计算机给内存的每个字节指定一个固定的唯一的编号,此编号从0开
始,后续字节地址加1即可
此编号的专业术语叫地址
切记:只要知道了内存的某个字节的地址,将来就可以中国地址对没
存进行访问(读或者写)
存储区(Buffer):
计算机将1个字节或者多个连续的字节形成一个存储单元用来存储数
字
例如:300亿这个数字如果用1个字节来存储显然这个数字太大了,
1个字节存不下,可用4个字节的连续内存来存储这个数字
首地址(base address):
存储区中能够第一个字节的地址又称首地址
问:C程序如何分配内存空间来存储数字呢?
答:切记:任何程序要想访问内训,必须先分配获取到内存才能访问
如果·没有分配内存,直接去访问,操作系统直接将程序干掉,杀死(操作系统心里骂街)
C程序通过定义变量来实现分配的内存;
2. 变量的功能:
就是C程序分配内存空间,一旦分配成功,程序就可以对内存进行存
储数字还可以修改存储的数字
3. 定义变量(又称分配内存)语法格式:
数据类型 变量名 = 初始值(可以有,可以没有)
例如:int a = 250;
说明:
int:它是一个关键字,它对应一种数据类型,表示将来分配4字节的内存空间
a:变量名
250:就是给分配的内存放一个数字250
结论:这条语句的结果是分配了4字节的内存空间并且这块内存空间放了250数字
例如:修改变量的值(也就是修改内存存储的数字)
int a = 250;
a = 520; // 修改变量a的值为520,也就是将内存中原先的250数字修改为520,其中“=”就是重新赋值的意思
打印变量的值(打印内训中存储的数据值):printf("%d\n",a); //将变量a的值打印输出
4. 定义变量的四种形式:
1. 只定义(分配内存)不初始化(不赋初值)
int a; //此时变量a的值或者对应的内存存储的数字是一个随机乱七八糟的数字
2. 定义并且初始化
int a = 250;
3. 连续只定义不初始化多个变量(逗号分割)
int a, b, c; // 同样变量的值是乱七八糟的随机数
4. 连续定义斌那个企鹅初始化多个变量
int a = 100, b = 200, c = 300;
小案例:演练变量的使用
/*var.c:变量演示*/
/*编译运行命令:gcc -o var var.c 然后 ./var*/
#include <stdio.h>
int main(void)
{
//1.形式1
int a; //只定义不初始化
printf("a = %d\n", a); // 打印a的值(打印分配的内存里面的数字)
//修改变量的值也及时重新给内存放置一个新的数字
a = 520;
printf("a = %d\n", a);
//2. 形式2:定义并且初始化
int b = 250;
printf("b = %d\n", b);
//修改变量的值,也就是重新给内存放置一个新的数字
b = 520;
printf("b = %d\n", a);
printf("a + b = %d\n", a+ b);
printf("a - b = %d\n", a- b);
printf("a * b = %d\n", a* b);
printf("a / b = %d\n", a/ b);
//3.形式3:连续定义但不初始化(随机数)
int c, d, e;
printf("c = %d, d = %d, e = 5%d\n", c, d, e);
//4.形式4:连续定义但不初始化
int i = 100, j = 200;
printf("i = %d, j = %d\n", i, j);
return 0;
}
cd tarena/stdc/day02
vim var.c
gcc -o var var.c
./var
5.标识符命名规则
a) 标识符:就是变量名(例如:a,b,c,d)或者函数名(例如:main,
printf等)
b) 标识符命名规则:
1. 第一个字母不能是数字,只能是字母或者下划线,区分大小写
例如:int 2var; //gcc报错
int v2ar; // 可以
int _2var; //可以
2. 尽量做到见名知意
int a = 18; //你能知道a代表什么意思嘛?
int age = 18;//age就是年龄的意思
3. 驼峰和下划线
驼峰:int nAge = 19;
int CreateWindows = 250;
下划线:int create_windows = 250;
4. C语言的关键字不能使用
例如:int, return, void等不能用
6.C语言的编程风格:(不强求,其他风格都要根据公司来定)
a)各种该
该有空格加空格
该独占一行的独占一行
该有TAB键的添加TAB键
例如:
int main(void) {printf("hello,world\n");return 0;} // 读起来太费劲了
应该:
int main(void)
{ //独占一行
printf("abc\n");
printf("cbd\n");
} //独占一行
b)代码尽量写在屏幕左侧2/3区域,右侧1/3建议留白,如果超
过换行
例如:
printf("aaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbb cccccccccccccccccccc\n");
建议:
printf("aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb
cccccccccccccccc\n");
关注公众号获取更多精彩内容