linux系统的命令 C的介绍

Linux系统命令
文件相关
touch 创建文件
cat 查看文件内容
cp src dest 复制文件
mv src dest 移动文件
重命名可以借助mv命令实现
rm 删除文件,文件删除后很难恢复,删除时要慎重。
目录相关
mkdir dir 创建目录
-p 可以创建多级目录
cd dir 进入目录
pwd 查看当所在的目录
ls 显示当前目录下的文件
-l 显示文件的详细信息,缩写ll
-a 显示隐藏文件,在Linux、UNIX、MacOS系统下以.开头文件默认隐藏。
Ctrl+h 可以在显示隐藏文件。
rmdir 只能删除非目录
注意:目录就是特殊的文件,文件可以使用的命令,目录基本都使用。
cp -frp 复制目录
rm -rf 删除非空目录
mv 对目录的操作不用任何参数
特殊目录:
/ 代表最顶级目录,也叫根目录。
~ 用户主目录 在/home目录下有一个以用户名命名的目录,该用户对它用绝对权限。
… 当前目录的上一级
. 当前目录
网络相关
ifconfig/ipconfig 查看/设置网络参数
ping ip 测试网络是否连通
ping 127.0.0.1 测试网上是否在正常工作。
ping 47.101.186.215
在Linux下会一直执行,Ctrl+c可以结束
windows下默认只执行4次,/t 可以持续执行。
telnet 47.101.186.215 远程登录
采用明码传输数据,安全性低。
ssh 用户名@47.101.186.215
ftp 47.101.186.215
other
chmod 修改文件权限
d[文件类型]rwx[文件主人的权限]rwx[同组]r-x[其它]
chmod +/-r/w/x 三种用户时间加减权限
ln 创建链接文件(快捷方式)
ln 源文件名 链接文件名 创建出的是硬链接文件(链接目标被删除,不影响链接文件的访问)。
ln -s 源文件名 链接文件名 创建出软件链接文件(链接目标被删除,链接文件不能再继续使用)。
目录文件只能创建软链接。
man 查看命令、函数的使用方法。
如果函数名与命令命名重复,可以使用 2或3来指定查看是函数。
q键退出

终端的使用技巧:
	Ctrl+Alt+T 快速打开终端
	Ctrl+Shift+T 新建终端标签页
	Tal 可以自动被全命令、文件名、路径
		如果备选有多个,按两下可以下出所有备选方案。
		如果列出的太多,Enter下一个,空格下屏。
	up/down 调用出命令记录

vim文本编程器
可以在终端下通过键盘方式进行编写代码的一种文本编辑器。
基本用法:
1、vim file.c 打开或创建.c文件
2、输入i进入编辑模式,可以编写或修改代码
3、Ctrl+x编译执行代码
4、Ctrl+z保存退出
命令行编译:
gcc code.c -> a.out 编译代码生成可执行程序
./a.out 执行程序
gcc code.c && ./a.out
vim的三大主要模式:
正常模式(菜单模式):进入vim后的默认模式,可以阅读、修改代码,有很多快捷键
插入模式(编辑模式):主要用来编写代码。
命令模式(行底模式):对vim进行设置、执行命令。

三种模式的切换:
	正常模式	输入i、a -》插入模式
	插入模式 ESC或Ctrl+c -》正常模式
	正常模式 输入: -》行底模式
	行底模式 ESC或Ctrl+c -》正常模式、
	注意:插入模式与行底模式不能直接转换必须经过正常模式中转。
	
正常模式的操作:
	进入插入模式:
		i 在当前光标前面进入插入模式,输入的内存在光标之前。
		a 在当前光标后面进入插入模式,输入的内存在光标之后。
		I 光标跳转到行首进入插入模式。
		A 光标跳转到行尾进入插入模式。
		o 在当前光标下一行插入一个空白行,然后进入插入模式。
		O 在当前光标上一行插入一个空白行,然后进入插入模式。
	删除代码:
		x 删除一个字符
		dw 删除一个单词
		dd 删除整行
		ndd 删除n行
	复制代码:
		yy 复制一行
		nyy 复制多行
		p 粘贴到光标下一行
	移动代码:
		删除的代码还存在于缓冲区中,配合p键可以达到移动效果。
		xp 可以快速颠倒两个字符的位置。
	撤消:
		u 撤消一次操作
		Ctrl+r 撤消撤消操作,反撤消。
插入模式的操作:
	tab/Ctrl+i 自动缩进4个字符(字符数可配置)。
	Ctrl+p/n 自动补齐
	Ctrl+c 返回正常模式
	Ctrl+z 保存退出
行底模式的操作:
	:%s/old/new 替换
	:/key 查找关键字,n向下查找,N向下查找
	:>n 从光标当前行开始,n行代码向右缩进
	:<n 从光标当前行开始,n行代码向左缩进
	:set nonu 不显示行号
	:set nu 显示行号
	注意:set开头命令都是对vim进行一些设置,在行底的设置都只是临时有效。
		如果相持续有效需要把命令写入配置文件。
		~/.vimrc
vim手册:vimtutor

C语言简介
作者:丹尼斯.里奇 肯.汤普逊 贝尔实验室
时间:1970~1973
起因:为了开发一款操作系统 BCPL -》newB -》C
特点:语法简单、功能强大(对硬件支持)、速度快
缺点:语法检查不严格,功能库少,代码简洁(不易懂)。

第一个C程序:
/*
程序员所编写的C代码不是标准的C代码,需要一段程序翻译成标准的C代码,负责翻译的程序叫预处理器,翻译的过程叫预处理,被翻译的代码叫预处理指令,以#开头的代码都是预处理指令。
#include的功能就是导入一个辅助文件(头文件)。
.h结尾的文件记录的是辅助代码,大多数都是函数的开头(函数声明),所以叫头文件。
stdio.h 是标准库中的头文件,stdandard in out 缩写
#include <> 从系统指定目录加载头文件。
#include “” 先从当前目录加载,如果没有再从系统指定的目录加载头文件。
操作系统通过设置环境变量来指定头文件的加载目录。
*/
#include <stdio.h>

/*
C语言以函数为单位管理代码,一个函数就一段具有某项功能的代码。
main是程序默认的入口函数,有且只能有一个。
int是一种数据类型,函数执行结束后可以有一个执行结束返回给调用者,int就表示main函数的执行结果是int。
main函数的调用者就是操作系统,main的执行结束会被操作系统获取到记录日志文件中。
echo $?
正数:程序出现异常
负数:程序出现错误
0:一切正常
*/

int main()
{
printf(“hello world!\n”);
/*
printf/scanf是标准库中提供的用输入输出数据的函数,使用时要导入stdio.h
一般用来调试程序,实际做项目时不用。
C语言中以分号作为代码的结尾。

\n 转意字符的一种,通过正常方法不能显示或表达的符号。
	\r 回到行首
	\b 退一个字符
	\a 玲响
	\t 制表符 相当于按一下tab键
	%% 
	\\
*/

return 0;

/*
1、把一个数据返回给函数的调用者
2、提前结束函数的执行,即使下面不有代码也不再执行。
*/

// C语言中使用大括号来划分边界

}

gcc编译器:
把代码翻译成可执行程序,由代码变成可执行程序经过以下步骤:
gcc -E code.c 把预处理的结果显示在屏幕上
gcc -E code.c -o code.i 把预处理的结果保存到文件中。
gcc -S code.i 汇编 生成.s文件(汇编代码)
gcc -c code.s 编译 生成.o目标文件(已经是二进制文件)
gcc 1.o 2.o … 链接 把若干个目标文件合并成可执行程序

数据类型:
整型:只能表示整数
signed 有符号:二进制位的最高位用来表示正(0)负(1)
signed不加就代表
signed char %hhd 1 -128~127
signed short %hd 2 -32768~32767
signed int %d 4 -2000000000~2000000000
signed long %ld 4/8
signed long long %lld 8
unsigned 无符号:所有的二进制位都用来表示数据,只能表示正数。
unsigned char %hhu 1 0~255
unsigned short %hu 2 0~65535
unsigned int %u 4 0~4000000000
unsigned long %lu 4/8
unsigned long %llu 8
浮点型:小数点是浮动的
单精度 float %f 4
双精度 double %lf 8
高精度 long double %llf 12/16
浮点型采用科学计数法:符号位+指数位+尾数位
小数点后六位有效
char 字符就是符号或图案,但在计算机中是以整数形式存储的。
需要显示时会根据ASCII表中的对应关系显示出对应的符号。
‘0’ 48
‘a’ 65
‘A’ 97
‘\0’ 0
bool 布尔类型是1980年才流行于计算机界,而C语言产生于1970年因此C语言中没有真正的布尔类型,使用时需要导入stdboo.h
false<=>0 true<=>1

变量:
存储数据的容器或盒子。
定义:数据类型 名字;
int num;
新定义的变量的默认值是不确定的,为了安全,一定要初始化。
使用:
1、赋值 num = 100;
2、参与运算 num*20-100;
变量的取名:
1、由数字、字母、下划线组成。
2、不能以数字开头
3、不能与关键字重名
--------------
4、长度不要超过30字符
5、见名知意
变量的输出printf函数:
C语言中以占位方式来告知数据的类型。
printf 类型 变量名
变量的输入scanf函数:
scanf 类型 地址=&变量名

常量:
在程序运算过程中不可以修改的数据。
字面值常量:
10 默认是int
3.14 double
3.14f float
“hello” char
1 int
1u unsigned int
1lu unsigned long

被保护常量
	const int num;	

运算符
算术运算符:+ - * / %
/ % 除数不能为零,会出现:浮点数例外,(核心已转储)。
10/3 = 3
10%3 = 1
关系运算符:> < >= <= == !=
计算的结果是0或1,可以转变为逻辑真或假。
5 < n < 10;
在C语言中会先计算5和n的关系结果为0或1,然后0或1再与10比较永远为真,注意:C语言中的关系运算与数学中的运算顺序不同。
== 变量尽量放在右边,为了让出错时有提醒。
num = 100; 变成了赋值语句
100 = num; 会有错误提醒
自变运算符:++/–
对变量的值自动加1或减1,只有变量才能使用。
前自变:++num,对变量立即加1或减
后自变:num++,变量值下一行才会加1或减1
不建议过多使用,不同的编译处理的顺序不同。

逻辑运算符:&& || !
	会先把要运算的对象转换逻辑值,0值转为假,非零值转为真。
	A && B 左右两边都为真,结果才为真。 
	A || B 左右两边都为假,结果才为假。
	!A 对A的值求反。
	它们的运算结果可以当作if、for、while等语句判断条件。
	注意:&&、||具有短路特性,但可以利用短路特性写出精简的分支结构。
	if(num < 10)
	{
		num++;
	}
	num<10 && num++;
	
赋值运算符及扩展:= += -= *= /= %=
	num += 10
	num = num + 10;
	num *= 10;
	num = num * 10;
三目运算符:[1]?[2]:[3];
	判断1的值为真计算2,为假则计算3,相当于简单的if/else语句。
	在三目运算符中不能有流程控制语句,因为它始终是一个运算符,必须要有一个运算结果。
字节数运算符:sizeof
	不是函数,是C语言的32个关键字之一,可以计算出数据类型所占的字节数。
	sizeof不会计算表达,但会推算表达式的结果是什么类型,然后再计算类型的字节数。
位运算符:讲完进制转换、原反补之后再说。

类型转换:
由于各数据类型的存储格式不同,那么运算规则也就不同,只有相同类型的数据才能在一起进行运算。
自动类型:不同类型的数据必须要先转换成同一类型然后再运算(由计算机自动完成),转换规则(以不丢失数据为基础):
1、字节少向字节多的转。
2、整型向浮点型转。
3、有符号向无符号转。

强制类型转换:(类型)数据。
	有数据丢失的风险,慎重使用。

流程控制
默认情况下,代码从上到下顺序执行,流程控制语句则可以改变这种执行顺序。
分支:
if(条件表达式)
{
条件表达式为真时执行。
}

	if(条件表达式)
	{
		条件表达式为真时执行。
	}
	else
	{
		条件表达式为假时执行。
	}
	
	if(条件表达式1)
	{
		条件表达式1为真时执行。
	}
	else if(条件表达式2)
	{
		条件表达式2为真时执行。
	}
	else
	{
		条件表达式1、2都为假时执行。
	}
	
循环
	通过反复执行一段来达到解决问题的目的。
	for([1]; [2]; [3])
	{
		[4];
	}
	1、先执行,只执行一次
	2、判断条件,为真时执行4,为假则退出
	4、循环体,被反复执行的代码
	3、改变循环条件,防止出现死循环
	
	for是一种非常灵活的循环,但也容易出错,因此建议使用一个变量来引导for的运行过程,这样可以精确控制循环的次数,index->i,j
	1、初始化循环变量,只在C99标准中才能定义循环变量,此处定义的变量只能在大括号内使用。
		gcc -std=gnu99 code.c
	2、判断循环变量是否到达边界
	3、循环变量自增或自减1。
循环嵌套:
	循环语句中包含循环语句。
	外层循环执行一次,内层循环从头到尾执行一遍。

代码编译时的常见错误:
1、undefined reference to `main’,main函数拼写错误。
2、程序中有游离的‘\357’,使用了中文字符。
3、expected declaration or statement at end of input,大括号不匹配。
4、出现异常数据,变量未初始化、数据溢出、占位符错误。
5、死循环使用Ctrl+c结束。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值