日常暖暖镇楼
Linux菜鸟级入门宝典2
- Linux权限及基础开发工具
- 1.Linux权限
- 1.1Linux权限的概念
- 1.2Linux权限管理
- 2.1什么是软件包?
- 3.1vim的基本概念
- 4.1gcc(c语言) / g++ (c++)
- 5.1调试
- 6.1make & makefile
Linux权限及基础开发工具
1.Linux权限
1.1Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以在linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
切换用户
su [用户名]:切换到某个用户,当前位置还在之前的路径下
su – [用户名]:切换到某个用户,并且回到切换用户的家目录
exit 回到上一次的用户
1.2Linux权限管理
1.基本权限
- 可读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
- 可写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
- 可执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
- “—”表示不具有该项权限
2.不同用户的简写
用户 | 简写 |
---|---|
文件所有者 | u |
组内用户 | g |
其他用户 | o |
3.文件权限值的表示方法
a) 字符表示方法
Linux表示 | 解释 | Linux表示 | 解释 |
---|---|---|---|
r- – | 可读 | -w- | 可写 |
–x | 可执行 | rw- | 可读可写 |
-wx | 可写可执行 | r-x | 可读可执行 |
rwx | 可读可写可执行 | – – – | 无权限 |
b) 8进制数值表示方法
4.更改文件权限
第一种:用户+/-字符权限的方式
chmod [u/g/o]+/-[r/w/x][文件名或者文件夹名]
第二种:八进制数字更改方式
chmod [八进制数字] [文件名或者文件夹名]
5.权限对于文件或者文件夹的影响
1.对于文件
可读权限: 如果用户针对文件没有可读权限, 则无法查看文件内容
可写权限: 如果用户针对文件没有可写权限, 则无法往文件中写入内容
可执行权限: 如果用户针对文件没有可执行权限,则无法执行文件,执行结果 取决于文件内容
2.对于文件夹
可读权限: 影响用户查看文件夹下的内容
可写权限: 影响用户在文件夹创建文件或文件夹
可执行权限:影响用户写入文件夹
6.文件或者文件夹更改所属用户或者所属用户组
1.更改所属用户
chown [-R] 用户名 文件名
-R 递归修改
2…更改所属用户组
chgrp 新用户名 文件名 [-R]
2.yum包管理器
职责:给linux操作系统安装软件,从linux操作系统中卸载软件
2.1什么是软件包?
在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.
注意事项
关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!
可以通过 ping 指令验证
2.2软件包操作
1.罗列yum源提供的软件 yum list
通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包.
yum list | grep lrzsz
结果如下:
lrzsz.x86_64 0.12.20-36.el7 @base
2.下载安装
yum install [包名称]
3.如何卸载
yum remove [包名称]
//lrzsz:不能直接传递文件夹
rz:从win系统上传文件到linux操作系统
sz [linux中的文件]:将linux中的文件传递到win系统中
xftp:可以直接传递文件夹
3.vim编辑器
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 mac os、windows。
3.1vim的基本概念
关于vim编辑器的模式其实有12种,不过对于初学者来说在此没有必要知道那么多,掌握以下三种即可,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。
使用vim编辑文件:vim[文件名]
例: vim test
3.2vim的基本操作
正常模式:在正常模式下是不能往文件中写内容的,需要进入插入模式,才可以正常写文件
插入模式:i 进入插入模式,就可以正常插入,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
ESC:可以从任何模式回到正常模式
[正常模式]切换至[末行模式]:「shift + ;」, 其实就是输入「:」
退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」底行模式,例如:
:w (保存文件)
:wq (输入「wq」,保存并退出vim)
:q不保存退出
:q! (不保存强制退出vim)
3.3vim命令集
1.在正常模式下的快捷操作
移删复替撤更跳
移动光标
上下左右键(菜鸟级) h:向左 j:向下 k:向上 l:向右
$ :移动到光标所在行的“行尾”
^:移动到光标所在行的“行首”
w:光标跳到下个字的开头
e:光标跳到下个字的字尾
b:光标回到上个字的开头
#l:光标移到该行的第#个位置
ctrl+b:屏幕往“后”移动一页
ctrl+f:屏幕往“前”移动一页
ctrl+u:屏幕往“后”移动半页
ctrl+d:屏幕往“前”移动半页
gg:快速回到第一行
G:快速回到最后一行
[num] G:快速跳到某一行
删除
1.x:向后删除光标所在位置的字符,相当于win系统下的[delete insert]键
[num] x:向后删除num个
2.X:向前删除字符,不包括光标所在字符
[num] X:向前删除num个字符,不包括光标所在位置
3.dd:剪切的功能,相当于win系统中的ctrl+x
[num] dd:多行剪切
复制、粘贴
yy:复制一行
[num] yy:复制多行
小写p:向光标当前行的下一行进行粘贴
大写P:向光标当前行的上一行进行粘贴
替换:
r:替换当前光标所在字符
R:进行到(replace模式)进行替换,esc结束
撤销:
u:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次恢复。
ctrl + r: 撤销的恢复
更改:
cw:替换某个单词,并从正常模式切换到插入模式
跳转至某行
ctrl+g 列出光标所在行的行号。
[num]G:5G表示移动光标至文章的第5行行首。
gg=G:整理当前代码格式
2.常用指令
快速进入插入模式
o : 快速到下一行
O : 快速到上一行
A : 快速回到行尾
I : 快速回到行首
3.底行模式下
搜索
/:向下搜索,配合n使用
?:向上搜索,配合n使用
查找
设置行号:在底行模式下set nu
取消行号:在底行模式下set nonu
在底行模式下:
:%s/[待替换的]/[要替换的]/g" % 全文替换 g:当前行所有目标字符串全部替换
3.4简单vim配置
1.配置文件的位置
- 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
- 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
- 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
- 打开自己目录下的.vimrc文件,执行 vim .vimrc
2.常用配置选项,用来测试
设置语法高亮: syntax on
显示行号: set nu
设置缩进的空格数为4: set shiftwidth=4
4.gcc/g++编译器
4.1gcc(c语言) / g++ (c++)
1.预处理(进行宏替换)
预处理功能主要包括宏定义,文件包含,条件编译,去注释等
gcc/g++ -E 文件 -o 文件.i
2.编译(生成汇编)
语法语义检测
gcc -S 文件.i -o 文件.s 将源代码转换为汇编代码
3.汇编(生成机器可识别代码)
将机器代码转化为机器代码(二进制代码)
gcc -c 文件 -o 文件.o
4.链接
目标文件+库文件 生成一个可执行程序
gcc 文件.o –o 文件
4.2函数库
4.1 静态库
gcc/g++命令行中,需要增加一个参数:-static
gcc 文件 -o 新文件 -static
4.2 动态库
默认的链接为动态链接
gcc 文件 -o 新文件
file命令:查看当前文件的详细信息
ldd命令:查看一个可执行程序依赖的库文件
5.gdb调试器
gcc 文件 -o 新文件 -g (debug版本)
5.1调试
调试的范式:gdb 文件名
list/l 行号:查看文件内容
显示binFile源代码,接着上次的位置往下列,每次列10行。
r或run:运行程序。
b (breakpoint) 行号:在某一行设置断点
i b(info breakpoints) :查看断点信息。
disable 断点序号 (breakpoints):禁用断点,使失效
enable 断点序号 (breakpoints):启用断点,使生效
n(next)逐过程执行,相当于win系统中的F10
s(step) 逐语句执行 win F11
p(print) 变量名:打印变量的值,也可以打印自定义类型
q(quit) 退出
bt(breaktrace)**重要:查看各级函数调用及参数
where 和bt一样,没有区别
coredump文件:内核转储文件,保存的是进程在崩溃的一瞬间内存的映像
6.make/Makefile项目自动化构建工具
6.1make & makefile
1.make 是解释器,用来解释makefile文件
makefile 书写编译规则的文件
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
2.makefile文件书写的规则
目标对象 & 依赖对象 & 编译命令
3.make的解释makefile文件的规则
a.make会在当前目录下找名字叫“Makefile”或“makefile”的文件
b.永远只为生成第一个目标对象而服务
c.若目标对象相对于依赖对象而言, 较新, 则不生成,
d.make在生成第一个目标对象的时候, 如果依赖对象也需要后续生成,则先生成依赖对象之后, 使用依赖对象生成目标对象
4.makefile文件: 内置变量 & 自定义变量
$^: 代表所有依赖对象
$@:代表目标对象
6.2伪目标
.PHONY 目标对象
.PHONY :clean 一般用于工程清理
#注释 crtl+v j/k选中注释行 –> I(shift+i)插入注释符 –>esc
取消注释:crtl+v l
以上就是本篇文章的重点,今天就到此结束了哈,由于作者创作能力有限,可能总结的内容或多或少会有差错,欢迎大家及时帮我指正,本文针对的大众是刚开始学习Linux的初学者,所以有的知识我写的很浅薄很片面,如果大佬们有不同的观点欢迎大家赏光私我哈,本着相互进步的原则,希望大家能多多向我提意见,谢谢~~