第一天————linux命令,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 + ‘-’

理解:命令行提示符
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.c
文件属性 用户权限 用户组 其他用户 硬链接数 用户 用户组 大小(字节) 时间 文件名
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 文件名
创建多个文件: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
(6)查找:/ 从当前光标位置向下查找(n,N查找内容切换)

2,在底行模式下可以进行的操作?
:w ---->保存
: q ---->退出不保存
:wq ---->退出并保存
:! ------>强制
:q! ----->强制退出不保存
:wq! ----->强制保存并退出
:x ------>保存并退出
: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的作用作用对象一般是目录
(9)ibus-daemon -d -r -x 召唤键盘图标
ubuntu进入后默认是英文输入,切换方法ctrl+空格按
在输完ctrl+空格按键后,可以直接用shift来切换中英文。

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

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 }

编译的流程:
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编译流程的第几步?
前三步!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值