C补习---->第一天,编程环境的介绍、shell命令、vim编辑器、gcc编辑器

第一天:
(1)编程环境的介绍
(2)基于Linux的shell命令
(3)vim编辑器的使用
(4)gcc编译器

-----------------------------------------------------------------------------------


(1)编程环境的介绍

虚拟机:
       虚拟出来的一台电脑。
       通过软件模拟出来的一台电脑(硬件环境),里面支持操作系统,硬盘以及内存,是一个可以运行的操作系统
       共享了真机的一部分硬盘和内存,在真机中运行的程序可以完全由虚拟机来运行。
操作系统:Ubuntu系统(linux操作系统的发行版本)
真机:
操作系统:windows系统

为什么使用Linux系统?-----》便于软件开发
优点:
(1)可以很方便使用shell编程
(2)可以使用网络实现在线安装
(3)免费--->便于大多数人学习
linux的发行版本:RHEL,redhat,Fedora,debian,ubuntu
为什么使用Ubuntu:
                 (1)适合新手学习,支持环境:鼠标点击或者命令
                 (2)完全继承与debian ,但又比debian多了:Tab自动补全,通配符。。。
                 
--------------------------------------------------------------------------------------------


(2)基于Linux的shell命令

目的:如何使用系统
如何打开一个终端?
方式1:直接点击terminal
方式2:通过组合键:ctrl + alt + t
方式3:右击,选择open terminal

命令的三要素:
命令名称  [选项]  [参数]

注意:
1,命令名称一定不能省略,但是选项和参数是可选的
2,选项和参数是可有可无可多个
3,当需要在下一行紧挨着书写命令的时,需要在当前行的末尾加上注意添加空格之后再写注意添加空格之后再写
4,当需要书写多个命令时,命令之间需要以;分号隔开

放大终端:ctrl + shift + '+'
缩小终端:ctrl + '-'

解决Ubuntu输入法英文切换中文-------->命令行输入ibus-daemon -d -r -x

理解:命令行提示符
linux@ubuntu:~$ 
分析:
linux:用户名
@:分隔符
ubuntu:计算机名(linux操作系统的一个发行版本)
处于:和$符号之间的都被称为当前用户的所在位置(路径)
$:代表当前用户身份为普通用户
#:代表用户身份为超级用户

切换用户命令:
su 用户名 :切换用户身份为指定的用户但是位置没有发生改变
su  :默认切换root用户,切换用户身份为指定的用户但是位置没有发生改变
su - 用户名:切换用户名的同时也切换了用户的位置为指定用户下的家目录
su - :默认切换root用户,切换用户名的同时也切换了用户的位置为指定用户下的家目录

注意:
su  等价于  su root 
su - 等价于 su - root  


通过ctrl + d 可以快速返回上一次的用户状态!

注意:
~ 称为家目录(主目录/工作目录)----> ~ 《===》 /home/linux 
home是家目录的上一级目录
HOME才是家目录HOME--> /home/linux 


相对路径:除了从根目录下开始的
绝对路径:从根目录下开始的一条比较完整的路径

(1)ls:用来查看当前位置下的内容信息的命令
用法:
     ls  [选项]  [路径];
     注意:只输入ls时,默认查看当前位置
     选线:
          ls -a :查看所有以.开头的文件(以.开头称为隐藏文件)
                 (.和..分别当前目录和上一级目录)----》为相对路径做好了准备
          ls -l :可以查看文件详细信息的一个命令
eg:    -        rw-           rw-      r--          1           linux        linux            0          May 24 19:49      test.文件属性 用户权限 用户组  其他用户  硬链接数   用户      用户组     大小(字节)    时间     文件名
    r     读
    w    写
    x     执行
          ls -R:递归显示当前目录以及该目录下的子目录的内容信息
          
Linux下有7种文件属性:
1,普通文件  -
2,目录文件  d 
3,链接文件(软链接) l 
4,字符设备文件    c 
5,块设备文件    b 
6,管道文件     p   (适用于进程间通信)
7,套接字文件   s     (适用于进程间网络通信)                

          
(2)创建文件夹:
      mkdir:
      格式: 
           mkdir  文件夹名
           当需要创建多个文件夹时:mkdir 文件夹1  文件夹2.。。。。。
           当需要递归创建多级目录时:mkdir  -p  文件夹1  文件夹2.。。。。。
           
(3)创建文件 :
    方式1: 
          新建不打开:touch 文件名 
    方式2:
          新建并打开:vim  文件名  +p(新建并打开多个文件)
    创建多个文件:touch 文件名1  文件名2 。。。。。。
    
    
(4)vim的三种模式:
模式1:
      命令行模式
模式2:
      插入模式
模式3:
      底行(末行)模式

三种模式之间的切换:
刚进来的模式是命令行模式,
如何从命令行模式转入插入模式?----》a i o A I O 
如何从插入模式转入底行模式?----》先按下ESC(命令行模式),再按下shift + : (底行模式)


分析: 
1,在命令行模式下可以进行的操作?
(1)复制: yy (复制一行)  nyy(复制n行)

(2)粘贴: p 

(3)剪贴:dd(剪贴一行) ndd(剪贴n行)
 
(4)撤销:u  
(5)反撤销:ctrl + r 

2,在底行模式下可以进行的操作?
:w   ---->保存
: q   ---->退出不保存
:wq   ---->退出并保存
:!   ------>强制
:q!   ----->强制退出不保存
:wq!  ----->强制保存并退出
:x   ------>保存并退出

:xa ------->保存多个文件并退出
:set nu ---->设置行号
:set nonu  --->去掉行号
:N     -----》指定光标跳转到第N行(N是一个常数)
:w 文件名  ----》另存为 

在底行模式下还可以进行字符串的替换?
:s/源字符串/目的字符串    ----》默认替换光标在行的第一个源字符串
:s/源字符串/目的字符串/g    ----》默认替换光标在行所有的源字符串为目的字符串
: num1,num2 s/源字符串/目的字符串/g ---->替换指定的第num1行到num2行中的所有源字符串为目的字符串


(5)删除
删除文件: rm 文件名 
删除文件夹: rm -r 文件夹名  (不管空还是非空均可删除)
             rmdir + 文件夹名(适用于删除空文件夹时)
             
注意: 
     -f  ---->强制 
     rm -rf * ----->强制删除所有(毁灭吧)
     删除一定要慎重!!
     
     
(6)复制 
cp  :
复制文件 :
         cp  源文件   目标文件
复制文件夹: 
         cp  -r 源文件夹   目标文件夹
         
(7)移动 
mv: 
移动文件:
        mv  源文件  目标文件 
移动文件夹: 
        mv 源文件夹  目标文件夹 
        注意:当目标文件或者目标文件夹不存在时,mv相当于rename(重命名)
        
        
(8)cat :查看文件的内容
格式:   cat  文件名 
         cat -n  文件名 (带行标进行打印输出文件内容)
         
注意: 
     cat的作用对象一般是文件
     ls的作用作用对象一般是目录
     
     

              
三种颜色:
蓝色:目录(文件夹)
白色:文件 
绿色:可执行文件


 1 //头文件---》函数声明---->函数声明可以帮助编译器进行语法检查
  2 #include <stdio.h>
  3 
  4 //主函数---》程序的入口函数,是唯一的
  5 int main()
  6 {
  7     //实现打印输入 “hello 21051!”
  8     printf("21051 gaga!,hello,hello\n");
  9     printf("21051 hello!,hello,hello\n");
 10     printf("21051 haha!,haha,haha\n");
 11     printf("21051 xixi!,xixi,xixi\n");
 12     printf("21051 xixi!,xixi,xixi\n");
 13     printf("21051 xixi!,xixi,xixi\n");
 14     return 0;//返回值可有可无:注意:一定和返回值类型匹配
 15 }   

(3)gcc编译的流程:

gcc test.c  --->默认生成一个名叫a.out的可执行文件
gcc test.c -o haha ---->指定生成一个名叫haha的可执行文件,作用和a.out一样 


gcc的编译流程:预处理,编译,汇编,链接 
第一步:预处理(借助于预处理器)
               作用:将头文件展开,宏进行替换以及去掉注释,不做正确性检查
                     ---》将C源文件展开成C文件
        gcc -E test.c -o test.i 
第二步:编译(借助于编译器)
             作用:将C文件编译生成汇编文件
        gcc -S test.i -o test.s 
第三步:汇编(借助于汇编器)
             作用:将上一步生成的汇编文件编译生成机器文件(OBJ格式的文件)
        gcc -c  test.s -o test.o 
第四步:链接 (借助于链接器)
             作用:将所有的.o文件共同参与链接生成一个可执行文件
        gcc test.o test1.o  -o myApp
最终去执行该可执行文件即可:
./myApp

单独编译不链接指的是gcc编译流程的第几步?------->gcc -c test.c -o test.o
前三步!
————————————————
版权声明:本文为优快云博主「旅人520」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_59476403/article/details/118068635

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值