Linux的定义
Xshell登陆主机-----ssh[ip]
一、Linux的定义
1、OS(操作系统)概念,定位
操作系统:一款搞"管理"的软件(主要采取树状结构),主要管理:软件 + 硬件
占用:文件 = 文件的内容 + 文件的属性(文件的创建时间,文件的类别…)
Linux是一个操作系统,我们称之为kernel(核心)。但我们一般用户不能直接使用kernel,而是通过kernel的“外壳”程序,shell,来与kernel沟通
2、shell命令及理解
①什么是shell外壳:包裹在操作系统外层的软件层,方便用户和OS进行沟通
shell:接受用户的输入,交给OS执行,得到结果反馈给用户
②shell的作用:a、交互
b、保护操作系统
③bash VS shell
- bash是具体的某个外壳
- shell是所有外壳的总称
3、Linux内核(kernel)
1、广义上的操作系统:shell + kernel + 配套的软件(应用 + 驱动等)
2、狭义上的操作系统:指的就是内核,纯的操作系统部分
4、集成开发工具VS2013
- 编写代码-----vim编辑器
- 编译代码-----gcc/g++编译器
- debug代码-----gdb调试器
- 可以满足多种应用场景
壹、vim-----文件编辑器
//即便是当前目录没有test.c文件,他也会自己创建一个
//但如果vim后,自己创建一个test.c文件后,没给里面放东西,他会自动删除
vim test.c
①vim的特征
- vim是一个多模式的编辑器,处于不同的模式有不同的行为,默认处在命令模式
- vim(命令模式,插入/编辑模式,底行模式)
- 由命令(NORMOL)->插入(INSERT):i(光标不变),a(同行的下一个位置),o(新起一行)
- 由插入->命令,按键盘上的ESC
- 由命令->底行,按键盘上的shift+;,vim可以从底行进行退出(保存退出,按:wq,退出,q!)
- 底行->NORMOL,按ESC
②vim的命令模式:常见的命令(热键)
上下定位:
a、yy-----复制光标所在,当前行
nyy-----n代表个数,nyy就是复制n行
7yy
b、p-----粘贴,光标在哪里,就粘贴到下一行
np-----n代表个数,np就是粘贴n行
//粘贴1000行
1000p
c、u-----撤销上次动作
d、dd-----剪切(删除光标所在行,并复制光标所在行)
ndd-----批量剪切(剪切从光标所在行开始的n行)
e、gg-----将光标定位到文件的最开始位置
n,shift + g-----将光标定位到第n行
shift + g-----将光标定位到文件的最结尾行
左右定位:
a、shift + 4($)-----将光标定位到当前行的最结尾,锚点
b、shift + 6(^)-----将光标定位到当前行的最开始,锚点
c、w-----以单词为单位向后移动1位
nw-----以单词有单位想后移动n位
b-----以单词为单位向前移动1位
nb-----以单词为单位向前移动n位
d、x-----删除光标所在行的1个字符
nx-----删除光标所在行的n个字符
shift + x-----删除文本,但从右往左删
e、shift + ~-----批量化进行大小写转化
f、多文件光标切换(在两个窗口都是命令模式的情况下)
- ctrl + w + h-----切换窗口
- ctrl + w + l-----切换窗口
- ctrl + 快速两次w-----切换窗口(推荐)
上下左右键盘模拟:
a、h-----左移
b、j-----下移
c、k-----上移
d、l-----右移
③底行命令
a、/-----找文本里面的字符串
/hello会将文本中的hello高亮,按n下一个hello
?-----查找文本里面的字符串
?hello会将文本中的hello高亮,按n上一个hello
b、set nu/nonu-----调出行号/取消
c、vs fiil.c-----打开(如果没有就创建一个)file.c文件
二、Linux的符号
三、win VS Linux保存文件类型的方式有差别
- win :通过文件名后缀区分文件类型
- Linux :采用属性信息列的第一个字母区分文件类型(-开头为普通文件)
文件类型和文件后缀没有直接关系!但是我们依旧保留这种做法,为了照顾人的习惯。
四、Linux软件的安装方式
1、源码安装(工作)
2、rpm包安装
3、yum(推荐)
应用市场(客户端) | 应用(具体的app) |
---|---|
软件包管理器 | 软件包 |
centos:yum | 快手,抖音 |
yum:查找,下载,安装,卸载
//在yum中寻找lrzsz文件
sudo yum list | grep 'lrzsz'
//将在yum中寻找到的lrzsz文件下载下来,并安装(免交互版本)
sudo yun install -y lrzsz.x86_64
//卸载软件
查看软件包:
五、Linux的编译过程
1、gcc -E-----预处理:头文件展开,去注释,宏替换,条件编译
- 形成.i文件
2、gcc -S-----编译(文件->a.out)
编译:将c代码翻译形成汇编代码
//gcc编译完成后形成的可执行程序默认为a.out
//用-o选项可以将形成的可执行程序改名为helloworld
gcc helloworld.c -o helloworld
- 形成.s文件
3、gcc-c-----汇编:将汇编形成目标二进制文件
- 形成.o文件
//.o文件一般是一堆乱码,可以以八进制展开
//以八进制展开
od
4、gcc-o-----链接:将目标文件和系统库进行链接形成可执行程序
- 形成可执行文件
六、命令调试-----gdb
- quit-----退出
Linux默认生成的可执行程序是动态链接且是以release方式发布的!(没有调试信息)
gcc -g-----使程序以debug形式发布,debug方式会给程序内部添加调试信息,能够让程序可被调试(若想让程序可被调试,必须gcc -g)
调试hello.c中的文件
gdb hello.c
//将第10行上下十行代码进行显示
gdb hello.c
l 10
breakpoint-----打断点
//将断点打在第17行
breakpoint 17
//第二种
b 17
quit-----退出
七、热键
ctrl + r-----历史命令的搜索
八、Linux的环境变量
1、环境变量(PATH)
想看环境变量里面的值时
//在/usr/bin文件夹中逐个查找ls
echo $PATH
env-----展示环境变量
getenv(“PWD”)-----获取环境变量的路径
2、SHELL
①是什么?
系统中的某些具有一定全局性质的变量,通常是为了满足某些系统需求
②为什么?
系统的全局变量,都是为了方便用户,开发者,系统进行某种最简单化的查找,定位,确定等等问题
③怎么办?
命令行,env,export,PATH,HOME
ls -a -b -c
ls-----可执行程序
-a-----命令行参数
//argc为命令行参数的个数
//argv指针数组中,存放的是命令行参数,从0开始存放,最后一个位置为NULL
//env指针数组中,放的是每个环境变量的起始地址
int main(int argc,char* argv[],char* env[]){
}