Linux_linux常用工具(git,vim ,gcc ,gdb,权限)超详解

git :项目版本控制工具

	项目克隆:git clone项目提交:git add(本地仓库提交)		git  commit  -m “bak msg”(-m  备注信息)同步到服务器:git  push origin  master(提交到主分支)**(提交时需要用户名和密码)**

svn–集中式
git —分布式 自己都有一个git仓库,

vim 编辑器

vim共有12种模式,最常用的是三种:

普通模式:完成编辑一个文件最常见的操作光标移动复制,粘贴,剪切,撤销,恢复撤销
插入模式:插入数据
底行模式:保存/退出  vim设置

vim filename -->普通模式—>插入模式—>返回普通模式–>进入底行模式–>保存退出

模式切换:

	esc回普通模式普通--->插入  i  :  从光标所在位置开始插入I	:光标移动到行首,开始插入a 	:光标移动最后一个字符,开始插入A	:	光标移动到行尾,开始插入o	:	向光标所在行下方添加新行,开始插入O	:	向光标所在行上方添加新行,开始插入插入-->普通   esc普通-->底行	:底行—>普通   esc

普通模式下的操作

光标移动:h  j  k  l			上下左右w/b 				按单词右左移动ctrl+f/b				向下/上翻页gg/G				文档首行/尾行
复制:	yy  复制光标 所在行nyy 从光标所在行开始向下复制n行
粘贴:P(小写)   向光标所在行下方粘贴新行P(大写)		向光标所在行上方粘贴新行
剪切:X		删除光标所在字符dw  		删除光标所在单词dd			删除光标所在行ndd			从光标所在行开始向下删除n行
撤销:u
恢复撤销ctrl+r

底行模式的操作:

:q 	退出
:w		保存
:wq	保存并退出
:q!	退出不保存(强制退出)

gcc编译器

将高级语言程序(c语言)编译成为机器可识别的指令代码
编译过程:

	预处理:去掉注释,展开所有代码编译:语义语法纠错,将代码解释成为汇编代码汇编:将汇编代码解释成机器指令代码链接:链接代码库以及所有的目标文件,生成可执行程序。

去掉了一个分号。
在这里插入图片描述
预处理
在这里插入图片描述
在这里插入图片描述
报错(之前少写的分号问题)
在这里插入图片描述
现在就没有错了
在这里插入图片描述
库文件
大佬们实现一些常用的功能接口,为了防止每次编译耗费时间,因此将这些接口代码进行编译汇编,并且将汇编完成的 代码存储到一个文件中,这个文件就叫库文件

这时候如果大家想用库函数,这时候就需要包含头文件,因为头文件中声明这个函数的存在,这时候编译器再头文件,文件中 检测到这个声明,就知道有这个函数的时间,就不会报错。
最终链接生成可执行程序的时候,因为要具体让cpu处理命令,因此就必须将这些接口的具体实现拿过来

Gcc的链接方式:

静态链接:静态链接库,连接时,将库中代码写入到可执行程序中;
优点:运行时不依赖库的存在,
但是占用资源较多,并且去过大量的程序静态链接,
会再内存中造成代码冗余。动态链接:链接动态库,链接时,只记录接口的位置符号信息,并不拷贝代码;
优点:占用资源少,在内存中大量程序,可以共享使用(共享库),
缺点:运行时原哟依赖库的存在(运行时库)gcc编译器的默认的链接方式:动态链接

gdb调试器

调试一个程序的前提是什么?

		生成debug版本程序,向程序中添加调试符号信息Linux下gcc默认生成的程序是release版本的程序,需要加上-g选项,生成debug版本程序gcc  -g main.c  -0 main

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
生成debug版本程序

在这里插入图片描述
赋予参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Gdb加载程序

gdb  ./main
gdb  ->file./main
获取运行参数,并运行程序r  -a –l  -s  -t  

最常见的调试操作有哪些?

打印内容:P(print)打印变量内容
P  var_name
单步调试:start 	开始逐步调试
l(list)查看调试行附近代码L file;lineN(next)下一步;不进入函数,直接将函数运行S(step)下一步;跟踪进入函	数
Unti   直接运行到指定行
Until  file:line打断点:
b(break):打断点b file:line
b function_name
i(info):查看调试信息
I b 查看断点信息
d(delete)删除断点d b_id(断点编号)
watch   变量监控watch   var_name
c(continue)继续开始运行查看调用栈信息:bt   快速定位程序崩溃位置

在这里插入图片描述
因为main函数起始位置是第13行,所以到第13行停一下

查看附近代码
在这里插入图片描述
n下一步,
until 直接运行到指定行
在这里插入图片描述
s进入到函数里面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
bt
在这里插入图片描述

权限:

用户对操作系统进行操作的权限:管理员root,普通
用户对文件的操作权限:文件操作对用户的分类:所有者u,所属组g,其他o用户对文件的造作分类:可读r,可写w,可执行x
权限表示:rwx rwx r-x	111	  111	101		775
权限命令:umask	给定权限&(~umask)		chmod	chown	chgrp	

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

T20调试札记

最近在调试T20的内存,使用的指令在此记录一下 1. pmap指令查看指定进程中的内存分布。该指令需要在busybox中开启 pmap -x 111 2.应用与so需要执行strip操作,可以减小存储空间的大小 mips-linux-gnu-strip libsysutils.so 3.nm指令和file指令可以查…

samba 2.2.7a 编译

今天在君正T20上编译samba 2.2.7a 遇到了一些问题,特此记录一下 1.自己写一个build.sh脚本,方便后续的再次编译 #!/bin/sh # export CFLAGS"-O2 -muclibc" export CPPFLAGS"-O2 -muclibc" export CXXFLAGS"-O2 -muclibc&qu…

Linux_linux常用工具------进度条程序

缓冲区对文件读写的影响:数据并没有直接写入文件,而是写入到缓冲区(内存)中,等到缓冲区中数据写满或者刷新缓冲区的时候,才会将数据真正的写入文件 fflush(stdout)刷新。 回车与换行…

Ubuntu下QT的安装详细教程

本文转自:http://blog.chinaunix.net/uid-7945126-id-4987195.html 经测试完美解决 ------------------------------------------------------------- 最近需要在Ubuntu下开发桌面软件,想起了QT。书上介绍的方法太老了,网上找了一大堆安装方法…

Linux_linux常用工具---闲杂篇(除了vim, 还有哪些常用的牛逼的编辑器, 并能够横向对比编辑器之间的区别和优缺点.)

vim自行查找资料, 自行配置插件. 借鉴别人的 " 显示相关 “”""""""""""""""""""""""""""""""""&…

ubuntu14.04下安装qt4.8.6 +qt creator

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://248341.blog.51cto.com/238341/1438867以前安装时没太注意,安装qt后发现在qt creator下无法输入中文,或者中文无法…

网络基础一(协议的概念,网络应用程序设计模式)

协议的概念 什么是协议? 从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。 假设,A、B双方欲传输文件。规定: 第一次,传输文件名,接收方接收到文件名,应答OK…

ubuntu修改root密码

sudo passwd root [sudo] password for you :---> 输入你的密码,不会显示 Enter new UNIX password: --- > 设置root 密码 Retype new UNIX password: --> 重复

linux 消息队列机制

现在我们来讨论第三种也是最后一种System V IPV工具:消息队列。在许多方面看来,消息队列类似于有名管道,但是却没有与打开与关闭管道的复杂关联。然而,使用消息队列并没有解决我们使用有名管道所遇到的问题,例如管道上…

堆(概念,数据结构中堆与内存堆区的区别 ,堆的基本操作)

堆的特性: 必须是完全二叉树 用数组实现 任一结点的值是其子树所有结点的最大值或最小值 最大值时,称为“最大堆”,也称大根堆; 在完全二叉树中,任何一个子树的最大值都在这个子树的根结点。最小值时,称为…

makefile中的shell调用---注意事项

在之前一次编写makfile时候,有看到相关的makefile中使用$$来引用变量,而且尝试后发现$$使用居然和${}有类似的功能。当时也没具体追究相关的用法,当然刚才所说的都是错误的观念 $$:在makefile中会被替换成一个$。 相关资料是这么描…

网络基础2(分层模型,通信过程,以太网,ARP协议格式和具体功能详解)

分层模型 OSI七层模型 OSI模型 1 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0&#…

为github帐号添加SSH keys

使用git clone命令从github上同步github上的代码库时,如果使用SSH链接(如我自己的beagleOS项目:gitgithub.com:DamonDeng/beagleOS.git),而你的SSH key没有添加到github帐号设置中,系统会报下面的错误&…

网络基础3(IP段格式,UDP数据报格式,TCP数据报格式)

IP段格式 IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。 对于IPv4,4位版本字段是4。4位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x520字节,也就是不带任何选项的IP首部…

Linux 开发路线

Linux 开发路线: 使用 linux—〉linxu 系统编程开发---〉驱动开发和分析 linux 内核 开始学 linux 内核:最好有三件宝物:《深入理解 linux 内核》《LINUX内核源代码情景分析》和源代码。 《深》是纲,《情》是目。最后深入代码 Linux 内核原理:比较浅显…

堆的应用(堆排序,TopK问题)

堆的应用 1)排序 堆排序 选择排序 既可以找到最大的放在最后 也可以找到最小的方最前 但是,堆排序不能找最小的放在最前 因为把最小数放在最前,会破坏掉堆的原来的顺序,除非重新建堆 1, 2,9&#xff0c…

有名管道和无名管道的区别

1)无名管道:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)。 单独构成一种独立的文件系统:管道…

网络基础4(TCP三次握手,四次握手,TCP流量控制,TCP状态转换 , TCP异常断开,设置TCP属性,端口复用)

TCP协议 TCP通信时序 下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。 TCP通讯时序 在这个例子中,首先客户端主动发起连接、发送请求,然后服务器端响应请求,然后客户端主动关闭连接。 两条竖线表示通讯的…

linux编程手册读书笔记第一章(20140329)

(2)管道、FIFO、套接字、设备(比如终端、伪终端)都支持非阻塞模式。(因为无法通过open()来获取管道和套接字的文件描述符。所以要启用非阻塞标志,就必须使用fcntl(&#…

排序(基本概念及分类,直接插入排序和希尔排序)

排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序&a…