linux有两种用户状态,分为管理员用户(root)与普通用户!
su命令用于对用户进行切换
文件的权限:
文件对操作用户的分类分为三种:文件所有者u 文件所属组g 其他用户o
用户对文件进行的操作分类:r可读(read) w可写(write) x可执行
rwx rwx r-x 所有者 所属组 其他用户
二进制表示(在操作系统中进行存储):111 111 101 三个八进制数字进行表示 7 7 5
举个栗子:所有者可读可写可执行 所属组可读可写 其他可执行 rwxrw---x
umask命令
设置文件的默认权限 显示文件权限 显示出来的默认权限是一组掩码
777&~032 终端命令行下给定的权限都是777 所以在给定默认权限是777的情况下 可以用 777-032,但是当我们自己使用函数进行创建时默认权限不一定还是777了,所以使用 777 &~032计算比较保险!
chmod命令
修改文件的权限 chmod 777 filename 第一种利用八进制修改文件的权限
chmod g-w filename chmod o+w fielname 第二种修改权限的方法
chown命令 修改文件所有者 chown username filename
chgrp命令 修改文件所属组 chgrp username filename
粘滞位:常用于设置目录权限,设置了粘滞位权限的目录,其他用户在目录下可以创建文件,但是只能删除自己的文件,不能删除别人的
chmod +t
linux下常用的6个工具:
软件包管理工具:yum
基本程序开发工具:
编辑器:vim
编译器:gcc/g++
调试器:gdb
项目的管理工具:
项目的自动化构建工具:make/makefile
项目的版本管理工具:git
yum:
yum list
yum installl package_name
yum remove package_name
vim一共有12中工作模式 大部分模式并不常用,常用的只有三种:插入模式(向文本中插入数据) 普通模式(对文本内容的指令操作) 底行模式(保存文件内容以及退出编辑)
vim模式间的切换 普通->>插入:i 插入->>普通模式ESC 普通->>底行:冒号
vim底行模式下的操作:
w/保存 q/退出 wq/保存并退出 q!/强制退出(不保存)
vim普通模式下操作:yy复制 nyy从光标所在行向下复制n行 p/P向光标所在行下方/上方粘贴新行 dd剪切 ndd从光标所在开始向下剪切n行数据.x删除光标所在字符,dw删除光标所有单词,D删除当前行以后的数据 撤销命令u ctrl+r撤销的上一步(反向撤销)
vim基本操作也就折磨多了,其他用到比较少!
编译器:gcc/g++
通常我们所写的c语言程序,是一种高级语言程序,这些程序cpu无法直接识别,需要编译器将我们所写的代码解释成为机器语言指令,层能够被识别!
编译过程:
预处理:头文件展开,去掉注释,替换宏! gcc -E 进行到预处理阶段 -O写入到指定文件
编译:进行语法检测,将c语言代码转换成为汇编语言代码 -S 进行到编译阶段就退出
汇编:将汇编代码转换成为二进制机器指令 -c进行到汇编阶段就退出
链接:链接动静态库,生成一个可执行程序!
动态链接:在链接时在可执行程序中记录库中函数符号信息表, 并没有将具体函数的实现 写入到代码
静态链接:执行程序中,在执行这个程序是,需要将函数库也加载到内存中,但是在内存中多个程序可以使用同一个库(节省资源),代码中已经有了函数的具体实现,缺点就是 体积大,
gcc中默认的连接方式就是动态是链接;
调试器:调试程序 gdb工具:
程序调试前提:生成一个debug版本的程序,程序中添加了调试符号信息.linux下的gcc编译器,默认生成的是release 版本,无法调试.
因此在编译程序的时候 需要增加gcc-g选项,表示生成debug版本程序.
开始调试命令:
run:程序直接开始运行
start: 开始逐步调试
调试的流程控制命令:
list:查看指定文件指定行附近的代码 list filename:line
step:下一步 若当前调试位置是一个函数,则会进入函数
next:下一步 直接运行这一行的函数
until:直接运行到指定文件的指定行 until filename:line
断点的相关指令:
break break filename:line 直接给函数打断点 break function_name
info break:查看断点信息
delete:删除断点
watch:变量监控,当变量内容发生变化则停下来 watch barible_name
continue:从当前位置继续运行
其他命令:
backtrace 查看程序运行信息中的函数调用栈,快速定位程序崩溃原因.
quit:退出调试
项目的自动构建工具:make/Makefile
gMakefile:是一个普通的文本文件,在这个文件中可以编写对整个项目的编译流程规则
make:是一个Makefile解释程序,当前命令行下输入make,这个时候解释程序会到当前路径下寻找名字叫做Makefile的文件,对其内部内容进行解释执行.
目标文件:依赖对象
要执行的指令(前方是一个tab键)
$@目标对象
$^所有的依赖对象
$<第一个依赖对象