Linux笔记整理
发布日期:2021-11-20 10:17:31
浏览次数:11
分类:技术文章
本文共 3785 字,大约阅读时间需要 12 分钟。
1、查阅手册
man n item(n表示节号) 如 查阅write手册页:man write 查阅系统调用write手册页:man 2 write n向下查找 N向上查找 p退出 2、find -name item 如 find -name hello*(作为通配符,在最前表示以hello结尾,在最后表示以hello开头, 没有表示包含hello) 在根目录下查找:find / -name hello 3、.s 汇编文件 .out输出文件 4、chgrp 新组组名 文件名 (修改文件所属群组) chown (-R连同子目录及文件一起改变) 账号名称(可以加:群组名称) 文件/目录 (改变文件拥有者) chmod -R 650 tmp(改变权限)用数值方式 chmod u+,g-,o=,a+(增加 剥夺 设置) 文件名/目录 如chmod u=rwx,og=rx hello.c 5、 目录操作: cd 路径名(改变当前目录) 路径有两种表示形式(相对,绝对) cd null 返回当前目录的家目录 ~当前用户家目录 -前一个工作目录 .当前目录 …父目录 /根目录 pwd (-P链接文件)(显示当前工作目录,没有参数) mkdir (-p递归创建)(-m设置权限)(-pm只能是这个顺序,m在p后,如-pm711)(创建目录,缺点:不加-p只能创建一层空目录) rmdir (-p递归移除)(移除目录,只能删除空目录,即目录下不能有文件) rm -rf(强制删除文件) PATH(查环境变量) echo P A T H ( 回 写 命 令 所 处 目 录 ) 搜 索 路 径 P A T H = " PATH (回写命令所处目录)搜索路径 PATH=" PATH(回写命令所处目录)搜索路径PATH="PATH":/root(修改搜索路径环境变量,增加搜索路径) 6、ctrl+c 终止程序运行,回到操作系统提示符 ctrl+d 退出当前终端 ctrl+z 进程停止 ctrl+l 清除屏幕 tab 填充路径名 7、 文件类: ls (-a显示隐藏文件)(-l显示长格式)(-S按照文件或目录的大小排序) (-t按时间排序) (–color=never或always或autu 查看文件目录时用颜色来区分)(列表查看当前目录或子目录下的文件) cp(文件拷贝) -i询问是否覆盖,当有同名文件时询问,默认 -f强制 -d连文件属性一起复制,没有时只复制文件,不复制属性 -p连同文件属性一起复制 -r递归,连目录带文件一起复制 -u比较更新,创建+修改属性+读取(文件的时间属性)时间戳 -a(相当于同时-pdr) source 目标目录/文件 删除文件:rm -f(强制) -i(询问) -r(目录) 移动/重命名:mv -f -i -u 8、 查看文件内容: cat(从头往后显示,停留在最后一屏) -A -E -n(显示行号) tac(从后往前显示,同上) more(一页一页显示,只可以往后翻) 按空格键往下翻一页,按回车往下翻一行 ./字符串(在文件里查找字符串,相当于搜索) :f(显示当前文件名) q(退出) 如:ls -al|more(查询的结果一屏一屏显示)(|为管道命令符,用前面的执行结果作为后面的输入) less(同上,既可以往后也可以往前) page up ,page dpwn ./字符串(往后找) .?字符串(往前找) n(向后搜索) N(向前搜索) q(退出) head(指定显示头上的几行) -n(显示文件的前多少行) 如head -n 20 hello |tail -n 10 hello tail(显示尾巴上的几行) 创建空文件: touch (-a取用) 文件名(可以带路径) -c(属性) -d (取日期) -m(数据内容) -t(设定时间) 切换用户:su 9、 压缩解压: tar -cvzf(压缩) -xvzf(解压) 清屏: clear 显示当前机器与网卡相关的信息: ifconfig ifconfig etho 192.168.1.2(修改网卡地址) 127.0.0.1 本机IP地址一、vi编辑器:文本编辑器,改进版vim,有三种模式:
1、命令(行)模式:启动vim后进入的叫做~,一般做大范围的复制移动删除等操作 dd删除光标所在行 ndd删除多行 dG d1G yy复制光标所在行 u撤销 2、插入模式:输代码 3、底行模式: shift+: 保存退出:w(+文件名,表示另存为)q 强制退出: q! 退出并询问: q :/字符串,表示光标所在位置往下找 :?字符串,表示光标所在位置往上找 :n表示往后切换 :N表示往前切换 : n1,n2(%全文找) S/ word1/ word2. g(直接替换)c(询问替换)查找替换 :setnu设置行号 :setnonu取消行号 n1,n2 w文件名,n1~n2行号另存为 :!+ls等linux命令 v:选择单个字母 V:选一行 ctrl+v:区块选择 : files:查看几个文件 :sp:多窗口 ctrl+ wk上窗口 ctrl+ wj下窗口 ctrl+ ww滚动 vim / etc/ vimrc vim配置文件 二、gcc编译器 .a 编译后的静态库文件 .so 动态(共享)库 静态库的创建: gcc -c 源文件.c ar rsc(选项) 静态库名(libname.a) 目标文件1.o 目标文件2.o ar -t(查看当前库有哪些文件) libname.a ar -d(删除) libname.a 目标文件.o ar -dv(询问是否删除) ar -x(提取目标文件) s:更新库文件 静态库的使用: gcc -o file file.c -L. -lname 动态库的创建: gcc -shared -fPIC -o 源文件.c 动态库的使用: gcc 源文件.c ./库名.so -o 可执行文件名gcc [options] [filenames]
-o:输出文件文件名,最终的可执行文件 -E:生成预处理 如gcc -E hello.c>hello.i(>为重定向符号) -c:只编译,不链接,自动生成与文件名同名的.o文件 gcc add.c hello.c -o hello.out 多文件编译 gcc -lm使用库 -W 生成警告 -w 不生成任何警告信息 -W error把所有警告当成error -S 生成汇编代码,生成.s文件 -g 生成调试信息,必须要和gdb配合使用 -O 对程序编译进行优化 -O0~O3(级别越高,优化更好) -D 宏定义 -U 取消宏定义 -I 将所指目录加入到程序头文件目录列表中 -L 将所指目录加入到库文件的目录列表中 -lname 指定哪个库,name指库名 libname.a 三、make和makefile工程管理器 通过时间戳自动发现更新过的文件而减少编译的工作量,同时,通过读入makefile文件的内容来执行大量的编译工作。makefile是make读入的唯一配置文件。 make -f文件名 如果同时存在Makefile 和makefile,默认执行makefile在一个makefile规则中,通常包含如下内容:
a.目标:通常是目标文件或可执行文件(称可执行文件为终极目标,只有一个,第一个规则的目标) b.依赖文件 如add.c是依赖文件 add.o是目标文件 c.命令:必须以制表符(tab键)开头 格式: target:dependency_files command?伪目标的声明:(如果没有声明,同时存在一个同名的可执行文件,会执行可执行文件,不执行伪目标)
.PHONY:clean 伪目标 make+命令clean 伪目标没有依赖 在makefile中,系统默认自动化变量: $^ 代表所有依赖文件 $@ 代表目标 $< 代表第一个依赖文件 "#"字符后的内容被视作注释 @ 取消回显四、gdb调试工具
1、启动被调试程序 gcc -g test.c -o test gdb test 2、让被调试的程序在指定位置停住,在怀疑有问题的地方设置断点 break(b) 函数名/行号 breakpoint 断点编号 infor break 查看断点 删除断点 delete 断点编号 清除所有断点 clear 行号 disable 失效 enable 生效 3、当程序停住时,可以检查程序状态-变量值 运行程序 run 单步运行 next 不进入子函数 继续运行 continue 到下一个断点,如果后面无断点,则运行到程序结束 结束当前函数的运行 finish 回到linux提示,退出gdb quit 对指定变量进行监控 watch p result 输出结果 list(l) 每次查十行五、shell使用
1、语句→函数→文件→程序 ↑ 预处理命令 2、gcc编译时以文件为单位进行编译,生成相应的目标文件,将若干个目标文件链接在一起,生成一个可执行文件。 3、make每次只编译修改过的文件,并存入makefile转载地址:https://blog.csdn.net/weixin_43218555/article/details/86670047 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月09日 05时44分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
隐马尔可夫模型的样本生成&模型训练&预测_CodingPark编程公园
2019-04-26
SpringBoot快速入门_CodingPark编程公园
2019-04-26
命名实体识别_CodingPark编程公园
2019-04-26
Ajax+SpringBoot注册登录实战_CodingPark编程公园
2019-04-26
光纤猫连接路由器_CodingPark编程公园
2019-04-26
信息抽取_CodingPark编程公园
2019-04-26
如何理解输入流输出流?_CodingPark编程公园
2019-04-26
Python类|实例|方法|继承_专题_CodingPark编程公园
2019-04-26
机器学习心得_CodingPark编程公园
2019-04-26
自然语言工程师心得概述_CodingPark编程公园
2019-04-26
for循环那点事儿_CodingPark编程公园
2019-04-26
Int -> List | List -> Int _ CodingPark编程公园
2019-04-26
如何在junit中使用SpringFramework的Ioc容器
2019-04-26
一个案例教你理解Spring面向切面编程(Spring Aop)
2019-04-26
手把手教你整合SSM框架
2019-04-26
自己造个简单数据校验的注解@Value和@Mail
2019-04-26
Poj百练 4148:生理周期 (分类:枚举)
2019-04-26
Java如何读写注册表
2019-04-26
java如何利用模板文件生成word文档
2019-04-26
java读写xlsx格式的MS Excel文件
2019-04-26