Linux系统命令、终端使用及C语言入门-程序员宅基地

技术标签: C语言学习  

Linux系统命令

文件相关

  1. touch 创建文件
  2. cat 查看文件内容
  3. cp src dest 复制文件
  4. mv src dest 移动文件(重命名可以借助mv命令实现)
  5. rm 删除文件,文件删除后很难恢复,删除时要慎重。

目录相关

  1. mkdir dir 创建目录
    mkdir -p 可以创建多级目录

  2. cd dir 进入目录

  3. pwd 查看当所在的目录

  4. ls 显示当前目录下的文件

    	-l 显示文件的详细信息,缩写ll
    	-a 显示隐藏文件,在Linux、UNIX、		
    	MacOS系统下以.开头文件默认隐藏。
    
  5. Ctrl+h 可以在显示隐藏文件。

  6. rmdir 只能删除非目录

  7. cp -frp 复制目录

  8. rm -rf 删除非空目录

  9. mv 对目录的操作不用任何参数

  10. 特殊目录:

       /  代表最顶级目录,也叫根目录
       ~  用户主目录 在/home目录下有以用户名命名的目录,该用户对它用绝对权限。
       .. 当前目录的上一级
       . 当前目录
    
  11. 注意:目录就是特殊的文件,文件可以使用的命令,目录基本都使用。

网络相关

  1. ifconfig/ipconfig 查看/设置网络参数

  2. ping ip 测试网络是否连通

     ping 127.0.0.1 测试网上是否在正常工作。
     ping 47.101.186.215
     在Linux下会一直执行,Ctrl+c可以结束
     windows下默认只执行4次,/t 可以持续执行。
    
  3. telnet 47.101.186.215 远程登录

  4. ssh 用户名@47.101.186.215

  5. ftp 47.101.186.215

其他

  1. chmod 修改文件权限

     d[文件类型]rwx[文件主人的权限]rwx[同组]rwx[其他]
     chmod + /-r/w/x 文件名
     chmod mmm 文件名
     m=r4/w2/x1
    
  2. tar 压缩文件

     tar -zcvf 压缩文件名 tar.gz 要压缩文件
     tar -zxvf 被解压缩的文件 -C 解压到指定目录
    
  3. ln 创建链接文件(快捷方式)

     ln 源文件名 链接文件名 创建出的是硬链接文件(链接目标被删除,不影响链接文件的访问)
     ln -s 源文件名 链接文件名 创建出软件链接文件(链接目标被删除,链接文件不能再继续使用)
     目录文件只能创建软链接
    
  4. man查看命令、函数的使用方法。

终端的使用技巧:

  1. Ctrl+Alt+T 快速打开终端

  2. Ctrl+Shift+T 新建终端标签页

  3. Tal 可以自动被全命令、文件名、路径

    如果备选有多个,按两下可以下出所有备选方案。
    如果列出的太多,Enter下一个,空格下屏。
    
  4. up/down 调用出命令记录

vim文本编辑器

vim文本编辑器是可以再终端下通过键盘方式进行编写代码的一种文本编辑器。

基本用法

  1. vim file.c 打开或创建.c文件
  2. 输入i进入编辑模式,可以编写或修改代码
  3. Ctrl+x编译执行代码
  4. Ctrl+z保存退出

命令行编译:

  1. gcc code.c -> a.out 编译代码生成可执行程序
  2. ./a.out 执行程序

vim的三大主要模式:

  1. 正常模式(菜单模式):进入vim后的默认模式,可以阅读、修改代码,有很多快捷键。
  2. 插入模式(编辑模式):主要用来编写代码。
  3. 命令模式(行底模式):对vim进行设置、执行命令。

三种模式的切换

  1. 正常模式 -> 插入模式:输入i、a。
  2. 插入模式 -> 正常模式:ESC或Ctrl+c。
  3. 正常模式 -> 行底模式:输入:
  4. 行底模式 -> 正常模式:ESC或Ctrl+c。
  5. 插入模式与行底模式不能直接转换必须经过正常模式中转。

正常模式的操作:

  1. 进入插入模式:

     i 在当前光标前面
     a 在当前光标后面进入插入模式,输入的内存在光标之后。
     I 光标跳转到行首进入插入模式。
     A 光标跳转到行尾进入插入模式。
     o 在当前光标下一行插入一个空白行,然后进入插入模式。
     O 在当前光标上一行插入一个空白行,然后进入插入模式。
    
  2. 删除代码

     x 删除一个字符
     dw 删除一个单词
     dd 删除整行
     ndd 删除n行
    
  3. 复制代码

     yy 复制一行
     nyy 复制多行
     p 粘贴到光标下一行
    
  4. 移动代码

     xp 可以快速颠倒两个字符的位置。
    
  5. 撤销

     u 撤消一次操作
     Ctrl+r 撤消撤消操作,反撤消。
    

插入模式的操作

  1. tab/Ctrl+i 自动缩进4个字符(字符数可配置)。
  2. Ctrl+p/n 自动补齐
  3. Ctrl+c 返回正常模式
  4. Ctrl+z 保存退出
    (Ctrl+x 和Ctrl+z的操作是通过设置的)

行底模式的操作

  1. :%s/old/new 替换

  2. :/key 查找关键字,n向下查找,N向下查找

  3. :>n 从光标当前行开始,n行代码向右缩进

  4. :<n 从光标当前行开始,n行代码向左缩进

  5. :set nonu 不显示行号

  6. :set nu 显示行号

     注意:set开头命令都是对vim进行一些设置,在行底的设置都只是临时有效。如果相持续有效需要把命令写入配置文件。
    

C语言简介

  1. 作者:丹尼斯.里奇 肯.汤普逊 贝尔实验室
  2. 时间:1970~1973
  3. 起因:为了开发一款操作系统 BCPL -》newB -》C
  4. 特点:语法简单、功能强大(对硬件支持)、速度快
  5. 缺点:语法检查不严格,功能库少,代码简洁(不易懂)。
  6. 第一个C程序:
#include<stdio.h>
int main()
{
    
	printf("hello world!\n");
	return 0;
}
  1. gcc编译器

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

     signed 有符号:二进制位的最高位用来表示正(0)负(1)
     signed char		%hhd	
     signed short	%hd	
     signed int		%d	
     signed long		%ld
     signed long long %lld	
     unsigned 无符号:所有的二进制位都用来表示数据,只能表示正数。
     unsigned char		%hhu	
     unsigned short		%hu		
     unsigned int		%u		
     unsigned long		%lu		
     unsigned long		%llu	
    

    浮点型:小数点是浮动的

     单精度 float			%f		4
     双精度 double		%lf		8
     高精度 long double	%llf	12/16
    
  3. 变量:存储数据的容器或盒子。

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

    10 默认是int
    3.14 double
    3.14f float
    "hello"
    1 int
    1u unsigned int
    1lu unsigned long
    

    被保护常量

    const int num;	
    
  5. 运算符
    算术运算符:+ - * / %

    / % 除数不能为零,会出现:浮点数例外,(核心已转储)。
    10/3 = 3
    10%3 = 1
    

    关系运算符:> < >= <= == !=

    计算的结果是0或1,可以转变为逻辑真或假。
    5 < n < 10;
    在C语言中会先计算5和n的关系结果为0或1,然后0或1再与10比较永远为真,注意:C语言中的关系运算与数学中的运算顺序不同。
    == 变量尽量放在右边,为了让出错时有提醒。
    num = 100; 变成了赋值语句
    

    自变运算符:++/–

    对变量的值自动加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不会计算表达,但会推算表达式的结果是什么类型,然后再计算类型的字节数。
    
  6. 类型转换:
            由于各数据类型的存储格式不同,那么运算规则也就不同,只有相同类型的数据才能在一起进行运算。
            自动类型:不同类型的数据必须要先转换成同一类型然后再运算(由计算机自动完成),转换规则(以不丢失数据为基础):

    1、字节少向字节多的转。
    2、整型向浮点型转。
    3、有符号向无符号转。		
    

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

  7. 流程控制:默认情况下,代码从上到下顺序执行,流程控制语句则可以改变这种执行顺序。
    分支:

    if(条件表达式)
    {
    	条件表达式为真时执行。
    }
    
    if(条件表达式)
    {
    	条件表达式为真时执行。
    }
    else
    {
    	条件表达式为假时执行。
    }
    
    if(条件表达式1)
    {
    	条件表达式1为真时执行。
    }
    else if(条件表达式2)
    {
    	条件表达式2为真时执行。
    }
    else
    {
    	条件表达式1、2都为假时执行。
    }
    

    循环:通过反复执行一段来达到解决问题的目的。

    for([1]; [2]; [3])
    {
          
    	[4];
    }
    	```
    1、先执行,只执行一次
    2、判断条件,为真时执行4,为假则退出
    4、循环体,被反复执行的代码
    3、改变循环条件,防止出现死循环
    
  8. 循环嵌套:

    循环语句中包含循环语句。
    外层循环执行一次,内层循环从头到尾执行一遍。
    
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37622246/article/details/89881741

智能推荐

matlab学习笔记-程序员宅基地

文章浏览阅读165次。加入水印,采用lsb%Name: Chris Shoemaker%Course: EER-280 - Digital Watermarking%Project: Least Significant Bit Substitution% Watermark Embedingclear all;% save start timestart_time=cputime;% read in the co..._[cover_object,map]=imread(file_name);

ipv6无网络访问权限可行解决方案_ipv6无internet访问权限怎么办-程序员宅基地

文章浏览阅读1.6w次。原文地址:http://www.xitongtiandi.net/wenzhang/win10/12654.htmlWin10专业版下ipv6无网络访问权限解决方案(只在win10专业版下做了测试,win7和win8.1待测试)1、首先打开 https://support.microsoft.com/en-us/kb/929852 选择Re-enable IPv6 相关的_ipv6无internet访问权限怎么办

【C程序设计】——程序=算法+数据结构_程序等于数据结构+算法-程序员宅基地

文章浏览阅读3.1k次,点赞32次,收藏37次。而且每次都要直接使用上一步骤的具体运算结果(如2,6,24等),也不方便,应当能找到一种通用的表示方法。由于数值运算往往有现成的模型,可以运用数值分析方法,因此对数值运算的算法的研究比较深入,算法比较成熟。从图中可以看出:“其他”这一部分,包括不能被4整除的年份,以及能被4整除,又能被100整除,但不能被400整除的那些年份(如1900年),它们都是非闰年。:若year能被4整除,不能被100整除,则输出year的值和“是闰年”。因此,上述算法不仅是正确的,而且是计算机能方便实现的较好的算法。_程序等于数据结构+算法

Keil : Error-Flash Download failed Cortex-M4错误解决方案整理(J-Flash擦除下载教程)_error: flash download failed - "cortex-m4-程序员宅基地

文章浏览阅读2.6w次,点赞18次,收藏88次。记录一下碰到的问题解决方法第一步:首先最先要确定的是芯片和设置是否对应!!!!!!!!!第二步:确定芯片和设置对应无误后,再考虑下面的方法Keil : Error-Flash Download failed Cortex-M4错误解决方案整理在开发 nRF51822/nRF52832/nRF52840时候出现如下如下问题:问题: Keil电子下载时候出现 Error: Flash Download failed - "Cortex-M4"的错误,如下图根据官方教程解释如下,还是发现不容易解决,另_error: flash download failed - "cortex-m4

SQL字符串分割成若干列-程序员宅基地

文章浏览阅读313次。在数据库编程中,很多朋友会碰到分割字符串的需求,一般都是分割成一列多行模式,但也有时会需要分割成多列一行的模式,下面我们来看下如何实现这种需求。首先创建一个辅助函数,来得到生成多列的SQL语句:create function toArray(@str nvarchar(1000),@sym nvarchar(10))returns nvarchar(3000)asbe..._sqlserver 字符串分割成多列 小提琴

配置MM32微控制器引脚复用功能_mm32f单片机的bootloader串行口引脚-程序员宅基地

文章浏览阅读1.3k次。配置MM32微控制器引脚复用功能文章目录配置MM32微控制器引脚复用功能IntroductionAlgorithmGPIOx_CR寄存器GPIOx_AFR寄存器GPIOx_CR & GPIOx_AFR寄存器TIMUARTSPI_MASTERSPI_SLAVEI2CCANADCFSMCQSPIDACCOMPSDIOUSBPraticeConclusionIntroduction使用过NXP(FSL)微控制器的开发者在配置引脚复用功能时,直接在PORT模块中,对应引脚的的PCR寄存器的MUX字段_mm32f单片机的bootloader串行口引脚

随便推点

存储过程学习总结-程序员宅基地

文章浏览阅读134次。[color=darkred][size=x-large]存储过程学习总结[/size][/color][size=medium]1、存储过程基本语法:[/size]create procedure sp_name()begin ......end;[size=medium]2、如何调用:[/size]call sp_name();[size=medium]..._存储过程repeatuse near 'end repeat; close curgra;

动态script加载数据-程序员宅基地

文章浏览阅读97次。Neil Fraser文章看得糊里糊涂,e文不是很好...一般我们加载数据会生成一个script标签,在onload事件里remove掉,或者在jsonp回调函数中remove掉script标签,取得数据这样其实script占用的内存并没有释放,必须:for (var prop in jsFile) { delete jsFile[prop];}ie下不能d..._script加载的数据在哪里

Javascript存放位置约束-程序员宅基地

文章浏览阅读77次。JavaScript 程序应该尽量放在 .js 的文件中,需要调用的时候在 HTML 中以 &lt;script src="filename.js"&gt; 的形式包含进来。JavaScript 代码若不是该 HTML 文件所专用的,则应尽量避免在 HTML 文件中直接编写 JavaScript 代码。因为这样会大大增加 HTML 文件的大小,无益于代码的压缩和缓存的使用。&lt;scr..._js里的下载路径怎么做约束

程序员真正的价值_程序员价值-程序员宅基地

文章浏览阅读604次。作者:池建强网址:macshuo.com微信:sagacity-mac问:池老师,我是个不爱互动的人,但是您所有的文章我都看了,非常感谢您的引导,我入手了人生第一台 MBP。现在问题来了,但是找不到更合适的人解答,只能求助于您了,如果您有时间的话。问题是这样的:我有个32bit unix file(开启一个服务进程),在 Mac 上执行时错误提示是:exec f_程序员价值

测试工作总体流程图-程序员宅基地

文章浏览阅读143次。测试工作总体流程图_测试的工作流程