权限&Linux环境基础开发工具使用

目录

1. 权限

a.文件

b.文件夹

c.umask

d.粘滞位 

2. Linux环境基础开发工具

1.yum

2.vim 编辑器

进入插入模式

移动 

删除单个字符

删除某一行

复制行

撤销  u

普通模式跳行

命令行模式下的操作

搜索

3. gcc/g++

a.预处理:展开所有代码

b.编译:将高级语言代码解释成为汇编代码

c.汇编:将高级汇编代码解释成为机器指令

d.链接: 将所有的代码文件以及库文件打包生成可执行程序

4. gdb 调试器

a.基础 (事前)

b. 如果程序运行起来的时候  (事中)

c. 如果进行奔溃了 (事后)

Example

5. 项目版本管理工具:git/svn(服务器集中管理工具)

项目管理工具


1. 权限

a.文件

  • 可读:可以读出文件中的内容
  • 可写:可以修改文件中的内容
  • 可执行:表示这个文件具有可执行权限,但是是否真的能执行,取决于文件的内容

b.文件夹

  • 可读:缺失可读,不能查看文件夹下的内容
  • 可写:缺失可写,不能再文件夹下创建文件或者文件夹
  • 可执行:缺失可执行,不能进入到本文件夹

c.umask

  • a. txt() = 系统默认的权限(0777)  & (~umask)   0777 & 0002 -> 0775===>0775
  • b. umask[八进制的数字]

d.粘滞位 

  • chmod +/ -t [flodername]
  • root 用户可以删除/文件所有者可以删除/目录所有者可以删除

2. Linux环境基础开发工具

  • 包管理器-- yum (centos/redhat)
  • 编辑器--vim
  • 编译器--gcc/g++
  • 调试器--gdb
  • 项目版本管理工具--git

1.yum

  • a.包管理器相当于应用商店的概念
  • b.安装  yum install [需要安装的名称]
  • c.查看当前系统中有哪些包已经安装成功了 yum list
  • d. 卸载/移除 yum remove [需要移除的名称]
  • e. rzsz
  • rz:将win机器上的文件上传到linux机器 
  • sz:将linux机器上的文件下载到win机器
  • xftp 上传下载 适用于文件或者文件夹   

2.vim 编辑器

进入插入模式

  • i:从光标的前一个位置进行插入
  • I:从当前行的行首的前面进行插入
  • A:从当前行的行尾进行插入
  • a:从光标的后一个位置进行插入
  • O:从当前行的上一行另外新起一个空行进行插入
  • o:从当前行的上一行另外新起一个空行进行插入

移动 

  • h:(光标向左移动)
  • j(光标向下一行移动)
  • k(光标向上一行移动)
  • l(光标向右移动)
  • 移动到最后一行   shift +g ==> G
  • 移动到第一行     gg
  • 跳到下一个字的首部 w
  • 跳到上一个字的首部 b
  • 跳到当前字的结尾 e
  • 上下左右箭头可以移动光标

 

删除单个字符

  • x:删除当前光标所在的位置的字符
  • X:删除当前光标所在位置的前一个字符
  • [num] x :从当前光标所在位置的字符开始删除num个字符
  • [num] X:从当前光标所在位置的前一个字符开始删除num个字符

删除某一行

  • dd:删除光标所在行的数据
  • [num] dd :从当前光标所在位置的行开始删除num行

复制行

  •  yy:复制光标所在的当前行数据
  •  [num] yy:从光标所在位置的当前行开始复制num行
  •  yw:从光标所在位置复制一个字的长度数据到缓冲区
  • [num] yw:从光标所在位置复制num个字的长度数据到缓冲区
  • p:针对复制的是行数据,向当前行的下面去粘贴
  • P:针对复制的是行数据,向当前行的上面去粘贴

 R:replace模式下,可以替换多个字符,按esc结束,返回到普通模式

撤销  u

f:更改

  1. cw:从当前光标删除一个字
  2. c[num]w:从当前光标删除num字

普通模式跳行

  1. gg:回到文本的头部
  2. G(shift+g):回到文本的最后一行
  3. [num]+G(shift+g):跳到任意行    gg=G

命令行模式下的操作

  • :set nu : 设置行号
  • :set nonu:取消行号
  • :vs [filename] 同时打开多个文件  ctrl +ww 切换不同的文件

xshell 也有分屏的功能

搜索

  • /[要搜索的字符串]--> 按 enter , n(next): 向下去搜索
  • ?[要搜索的字符串] :向上去搜索
  • :%s/要替换谁/替换成啥/g(区分是否替换行内所有出现的需要替换的单词),加上%表示替换全文,不加表示替换光标所在的当前行

vim

  • 普通用户的:用户的家目录下修改或者创建 .vimrc文件
  • 系统的:/etc/vimrc
  • "inoremap<expr><CR> pumvisible()?"\<C-y>":"\<CR>"注释掉
  • set tabstop=4
  • set softtabstop=4
  • set shiftwidth=4

总结:

  • 操作模式:12种,常用3种:插入模式/普通模式/底行模式
  • 模式切换:切入到普通模式ESC, iaoIAO(进入插入模式),进入底行模式:
  • 底行模式下的操作:w/q/wq/q!

普通模式下的操作:

  1. 光标移动操作:hjkl/wb/ ctrl+f/b /gg/G
  2. 文本内容操作:yy/nyy/p/P/ dd/ndd/ x/dw/D
  3. 其他操作:u撤销/ctrl+返回/  gg=G
     

3. gcc/g++

  • a.预处理:展开所有代码

  •     宏替换,文件展开,去注释
  •     gcc - E [源代码文件] -o [name].i
  • b.编译:将高级语言代码解释成为汇编代码

  •     语法语义的检测,并且生成汇编代码
  •      gcc -S [name].i -o [name].s
  • c.汇编:将高级汇编代码解释成为机器指令

  •     把汇编代码生成机器可识别指令
  •      gcc -C [name].s -o [name].o
  • d.链接: 将所有的代码文件以及库文件打包生成可执行程序

  •     静态链接:-static 将所有的代码包括标准库的实现全部链接到可执行文件当中去;缺点:冗余性大,编译出来的文件特别大
  •     动态链接:在可执行文件当中只保存所需要使用的函数的符号,符号表。优点:可执行文件小,并且各个模块处于解耦状态。代码的复用性高。
  •     gcc默认的链接方式:动态链接
  •     file:查看文件属性
  •     ldd:查看可执行文件的动态链接属性
  • 编译器:将高级语言代码解释成为机器指令

4. gdb 调试器

  • a.基础 (事前)

  •         在编译命令后面加 -g 选项,生成一个debug版本的可执行程序
  •         b(break):  b[行号]:在“行号”这一行打一个断点
  •                         b[filename]:[行号] 在filename 这个文件的“行号”这一行去打一个断点
  •         i b(info breakpoint):查看断点信息
  •         disable[断点编号]:使当前编号的断点失效
  •         enable[断点编号]:使当前编号的断点生效
  •         r(run):让程序跑起来
  •         n(next):逐过程的单步调试(F10)
  •         s(step):逐语句的单步调试(F11)
  •         p(print):打印变量的值
  •         i locals:打印当前作用域中的临时变量的值
  •         c(continue):继续执行
  •         display [变量名称]:跟踪变量的值
  •         bt:查看调用堆栈
  •         where:查看调用堆栈
  •         delete breakpoints [num]:删除某个断点
  •         delete breakpoints :删除所有的断点
  • b. 如果程序运行起来的时候  (事中)

  •         ps aux | grep [可执行程序名称]===>进程号
  •         gdb -p [进程号] ==gdb attach [进程号]
  • c. 如果进行奔溃了 (事后)

  •         gdb 可执行程序 coredump 文件
  •         bt p i locals

Example

  1. 加载可执行程序: gdb./main gdb->file./main
  2. 单步调试:start/step(进入函数)/next/until file:line/continue/list
  3. 断点调试:run /break/watch varname变量监控,变量发生变化就停下来/info berak/delete/print
  4. 调用栈:backtrace快速定位程序奔溃的位置

5. 项目版本管理工具:git/svn(服务器集中管理工具)

  • git clone 远程仓库地址
  • git add./* 添加本地修改
  • git commit -m "备注信息"提交本地版本仓库管理
  • git push origin master 将当前本地版本上传到远程主分支

项目管理工具

  • 项目的自动化构建工具:make/makefile
  • makefile: 文本文件,记录项目的构建流程和规则
  • make:解释程序,解释执行makefile中记录的规则,完成项目的构建
  • makefile的编写规则:
  •     目标对象(要生成的文件名称):依赖对象(用于判断目标对象是否最新是否需要重新生成.c比可执行晚重新生成)
  •     tab 执行命令(生成这个目标对象所要执行的命令,但是有时候这个命令也不一定要生成目标对象)
  • 预定义变量:$^/$@/$<(依赖对象当中的第一个)
  • 声明伪对象:.PHONY:$(target)  伪对象:每次都需要重新生成
  • make的解释执行规则:
  •     1、只生成第一个目标对象,
  •     2、会查看依赖对象是否存在,先生成依赖对象(依赖对象不存在则查找依赖对象的生成规则)/通过两方时间关系,判断目标对象是否需要重新生成。

进度条程序:

  • \r :回车符,让光标移动到行首
  • \n:换行符,让光标移动到下一行,还有一个功能是刷新标准输出的缓冲区(数据并没有立即写入文件,而是先写入到了缓冲区中,等到刷新缓冲区的时候才会将数据写入文件)。

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值