2.26.2019
相对路径:从当前目录开始(不以斜杠开始)
绝对路径:从根目录开始的路径
Linux是多用户操作系统,多个用户可以同时登陆不同用户权限不同(root用户权限最大)
Linux还有用户组(一个组包含多个用户)
Linux每个文件都有权属标志(共3种:读r、写w、可执行x没有用-表示),每个文件都有三组权限标志(所属用户u、所属组g、其他用户o)
文件的权属标志可以用ls -l来查看:
结果第1列表示文件类型,2-4列表示3种权限,第5列表示引用计数(当前有几人在用),6-7各表示所属用户和所属组,8列表示文件大小,9表示修改日期,10表示文件名
Linux常用命令:
Man查阅linux上的手册页,用法:man[n]item n为1-8 (3表示函数调用)之后用q键退出
Chgrp[组的名称][目录、文件](后面的改到前面中) chown[用户名][文件、目录](后面的改到前面中)
Chmod(用来修改权限) 方法一:chmod[-R]4位数字(o***表示权限)[要修改的文件、目录] 方法二:chmod[u/g/o/a][+/-/=][x/r/w][要修改的文件、目录]
目录处理命令:
Cd: 改变当前目录 如cd /etc
Pwd:显示当前工作目录
mkdir: 创建目录 如:mkdir a 、mkdir -p a/b/c
rmdir: 删除空目录 rm -rf[文件、目录](删除文件中所有内容)
文件目录管理命令:
ls:列表方式显示当前目录及字目录 加了-l详细显示 加-a显示隐藏文件
cp:[-f(同名替换) -i(同名询问) -r(递归方式) -u(更新)][源文件][目标]复制
mv (移动或者改名)
rm(删除)
查看文件内容:
Cat(一次性从头开始显示) tac(一次性从后往前显示)
More(按页显示空格往后一页 回车下一行) less(可以往前翻)
:/字符串(往后查找字符串)
Head:[-n] 文件名 tail[-n]文件名 head -n20 tem|tail -n10 tem显示tem10-20行内容
Find 路径 -name 文件(文件可以用文件开头名加*)
Tar
Clear 清屏
ifconfig查看网络及设置
文本编辑器Vim
vim编辑器
三种工作模式:
命令行模式(一般模式),插入模式(编辑模式),底行模式(命令列模式)
1.vim hello.c
2.命令模式到编辑模式 i
3.编辑
4.编辑模式到命令模式 esc
5.命令模式到底行模式 : 编辑模式到底行模式 shift+:
6.在底行模式下键入w:保存 q:退出
在命令行模式下功能键
yy:复制光标所在行
[n]yy:复制当前光标开始的n行
p:粘贴复制到所在光标行
dd:剪切当前光标所在行
[n]dd:剪切当前光标开始的n行
/name:查找光标之后名为name的字符串 x往后查找下一个 X往前查找下一个
G:光标移动到文件尾
u:取消前一个动作
d1g:删除光标所在行到第一行的所有数据
dg:删除光标所在行到末行的所有数据
n1,n2 s/word1|word2/g 在n1和n2行间查找word1并替换为word2,也可以把”/”换成”#”
gc 询问是否删除
1,$ 全文替换
%
底行模式功能键
:w 保存
:q 退出(系统提示是否保存)
:q! 强行退出
:wq 保存后退出
:w[filename] 另存为filename的文件
:set nu 显示行号
:set nonu 取消行号
:!命令 不退出vim编辑器,继续执行命令
可同时打开多个文件,显示第一个文件
:n 切换到第二个文件
:N 往前切换文件
:files 显示打开的所有文件名
:sp+文件名 分屏显示
ctrl+w+w 上下切换
ctrl+w+j 向下切换
ctrl+w+k 向上切换
v 从光标往后选择
V 选择光标整行
ctrl+v 块选择
gcc编译器
GNU cc(简称gcc)
gcc能够检测出语法错误,功能性错误是难题
C语言从源代码到可执行程序的过程:
预处理、编译、汇编、链接
四个步骤做什么?
预处理:1.头文件展开 2.宏定义处理(+#的标识符都是在预处理阶段做的)3.条件编译 预处理阶段只写简单宏,因为编译器预处理阶段宏定义处理,宏定义处理不检查语法错误,但有些函数可定义在宏中,减少内存占用
gcc 文件名 -D[条件表达式]外部定义宏
gcc [-wall][-01....3][-o name][>](重定向保存,功能等同于-o) file
gcc -E hello.c -o hello.i
-E 控制预处理
-S 编译生成汇编文件,会检查语法错误
-o 输出的文件名,不设置,gcc给出预设的可执行文件a.out
gcc -c hello.c ls hello.c hello.i hello.s
-c 只编译,不连接成为可执行文件
-g 产生调试工具(GNU的gdb)所必要的符号信息,要想对编译出的程序进行调试,就必须要加入这个选项
gcc -g hello.c -o hello.out
-O 对程序进行优化编译,链接。可执行文件的执行效率可以提高,但是,编译连接的速度就要相应减慢
-O2 比-O更好的优化编译、连接,但速度慢。
-Idirname 将dirname所指出的目录加入到程序头文件目录列表中
-Ldirname 将dirname所指出的目录加入到库文件目录列表中
-lname 在连接时装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下
例:-lm表示连接名为libm.a的库
.a 静态库 库和文件拼在一起,文件会变大
.so 动态库 建立与库的映射关系
静态库的创建
1.gcc -c 源文件.c
2.ar rcs 静态库名(libmycal.a) 目标文件1 目标文件2
3.gcc main.c -o main -L. -lmycal
搜索路径:gcc main.c -ladd -L.
-L/root/0228
动态库的创建
gcc -shared -fPIC -o 库名.so 源文件.c
动态库的使用
gcc 源文件 ./库名.so -o 可执行文件名
gcc警告和出错选项:
-ansi 强制gcc生成标准语法所要求的警告信息,不提示数据类型错误
-pedantic 打印ANSIC 标准列出的全部警告信息,能查出无效数据类型错误
-Wall 打印gcc能够提供的所有有用的警报信息,能找出未使用变量,但不能找出无效数据类型的错误