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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C语言编程中遇到的问题
下一篇:Linux常见问题一

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月09日 05时44分24秒