用户管理
-
who有几个用户登录pts使用的终端
-
用户类型
#root$普通用户
-
sudoersudo临时变成root,执行命令
-
su切换用户 -
passwdpasswd修改自己的密码passwd 用户
-
查看已存在的用户个数
cat /etc/passwd- 密码存放在
/etc/shadow
-
useradd- 直接使用此命令,不会产生/home下的家目录
- 直接使用此命令,shell为
sh useradd -m -s /bin/bash-m创建家目录-s指定shell版本
-
userdel- 同时删除家目录为
-r
- 同时删除家目录为
-
man-

-
1 命令
-
2/3 系统调用和库函数
-
文件和文件系统相关的命令
-
分层
- Linux一般使用
ext4 - windows一般使用
NTFS 
- Linux一般使用
-
ls

-a隐藏文件也显示-l
-
ln
-s- 软链接
- 硬连接
- 刚创建的文件因为有.和…从而硬链接数显示为2
-
cd
cd ~cd -- 回到上一个目录,只能保存一个位置
- 实际上是存储在
OLDPWD变量中,在环境变量env中 


-
mkdir
-
rmdir 删除空目录
-
cp-i如果发生覆盖则提示-f和-i相反-r拷贝目录
-
chmod -
rm- 删除一个文件,看的是
.目录的权限
-
- 删除一个文件,看的是
文件查找
-
find
-

-
-name
-name 模糊查找通配符*任何字符,包括空字符?一个字符[][0-9] [a-f] 集合内的任何字符
-user-uid-group-gid-perm按照权限查找。-size按照大小查找 默认单位是 512字节+表示大于-表示小于不加表示等于
empty找到空目录time- a access 访问时间 atime amin
- c status change 状态改变
- m modify 内容修改



-
查询条件
-a与-o或!补集
-
-
truncate
磁盘相关
-
df
-h
-
du
- 查看指定目录占用的空间
-d查看的深度-d 0查看本文件的大小-d 1查看本目录下的各个文件的大小
文件查看和处理
-
cat
-n所有行都编号-b空行不编号-s空行压缩
-
file
- 查看文件的类型
-
echo
- 直接使用,会带换行
-n去掉换行
-
创建空文件
touch fil1echo -n fil1cat > fil1在Ctrl+D 输入EOF终止符
-
系统日志文件
/var/log/syslog
-
wc
- word count

- word count
-
iconv
文件内容查找
- grep
- 正则表达式 : 高级版本的通配符
-n显示行哈-E使用最新版本的正则表达式


\<aa出现在单词的开头
命令的组合
-
;
-
管道
-
xargs
- 将标准输入的内容转换为命令的参数
xargs ls -al
- 将标准输入的内容转换为命令的参数
-
命令替换
打包和压缩
-
tar
-
tar cfv file.tar f1 f2 f3打包 打包之后可以追加包 -
tar xfv file.tar解开包 -
tar cfvz file.tar.gz f1 f2 f3压缩包 压缩之后不能追加 -
tar xfvz file.tar.gz f1 f2 f3解包
远程拷贝
- scp
- 基于ssh的cp

身份认证
- 密码
- 密钥
Vim
- vim分为三种模式:普通(命令)模式,编辑状态和视觉模式。
a 从光标后面开始添加文本(表示新增 append)
A 从光标所在行的末尾开始添加文本
i 从光标前面开始插入文本(表示插入 insert)
I 从光标所在行的开始处插入文本
光标移动
^ 光标移动到行首 -------------- -------------- -------------- --------------
$ 光标移动到行尾 -------------- -------------- -------------- --------------
ctrl+d 向下翻半页(down)
ctrl+f 向下翻一页(forward)
ctrl+u 向上翻半页(up)
ctrl+b 向上翻一页(backward)
gg 光标定位到文档头 -------------- -------------- -------------- --------------
G 光标定位到文档尾 -------------- -------------- -------------- --------------
H 光标定位到当前页首(head)
L 光标定位到当前页的最后一行的行首(lastline)
w 光标往后移一个字 (word)
b 光标往前移一个字 (block)
[n]+ 光标向后移动n行,[n]表示一个整数 10+
[n]- 光标向前移动n行,[n]表示一个整数 10-
[n]G 光标定位到第n行行首, [n]表示一个整数 20G -------------- -------------- -------------- --------------
:[n] 第n行
命令模式
删除和修改
d就行剪切,p就是粘贴
x 删除光标处的字符
dd 删除光标所在的整行
3dd 删除光标所在行以及下面的两行(删除3行)
d$ 删除光标到行尾的文本,常用语删除注释语句 (等价于d$)
d^ 删除光标到行首的文本 dt"删除到双引号位置
1,19d删除1到19行
dw 删除一个字
d3w 删除三个字
yy 复制光标所在的整行 yank复制
[n]yy 从光标开始往下复制n行,[n]表示一个整数
p 将复制后的文本粘贴到光标处
u 撤销上次操作
取消撤销:Ctrrl+r
查找与替换
/[str] 查找字符串str,[str]表示要查找的字符串
回车后会加亮显示所有找到的字符串,接着输入n移动到下一个找到的字符串,输入N移动到上一个找到
的字符串
: s/[src]/[dst]/[i忽略大小写][g处理本行中所有的匹配项] 用dst替换字符串src
: s/hello/world/ig 替换一行
:x,y s/[src]/[dst]/ig(x-y行中找)
:3,6 s/hello/world 将3-6行里面,找到第一个hello替换为world
:%s/[src]/[dst]/g 将文档中所有src的字符串替换为dst字符串
:%s/^ //g 将文档每一行的行首的空格去掉
:%s/^\t//g 将文档每一行的行首的制表符去掉
提问:如何使用替换命令注释所有块内代码?
提问:如何使用替换命令转换实现制表符和4个空格之间的转换?
shift+% 可以进行括号的匹配
可视模式

选中之后,按=,代码对齐
gg=G全文代码对齐



-
vimdiff
-
多标签的切换
-
n下一个
-
N上一个
-
bd关闭当前标签
编译工具链
gcc
-
三种主流的编译工具链
- gcc
- MinGW(gcc移植到Windows的)
- clang
- msvc
- windows
- gcc
-
<>在/usr/include目录中查找 -
""在本目录下进行查找 -
生成可执行程序的流程
- 预处理
a.igcc -E#include文件包含#define宏定义
- 编译
a.s汇编语言代码gcc -s- 变量名/数组名都变成地址
- 类型信息变成指令的长度
- 函数调用 压栈/弹栈
- 调用其他函数 call指令
- 汇编
a.o机器语言gcc -cas命令 汇编语言(.s) -> 机器语言(.o)- 在vim中输入
:!xxd将.o翻译为十六进制,:!xxd -r十六进制恢复到原来的 或者od -h test.o nm列出目标文件的所使用的函数
- 链接
ld链接器ldd可以看到用到那些库
- 预处理


-D定义一个宏-Wall开启所有警告-I设置头文件搜索路径,默认是当前目录
gdb
-
gcc -c的时候需要加上-g选项 ,补充符号信息 -
gcc -o编译优化 o0, o1,o2,o3。调试的时候不要开启编译优化
-
启动gdb的两种方式
gdb然后file testgdb test
-
listlist列出10行代码 按一下list列出下一个10行代码,回到第一个10行list 1list可以简写为llist print列出print函数的代码list test.c:10列出test程序的第10行
-
run/r执行 -
断点操作
break\b print打断点info\i break\b展示断点信息disable 1取消断点1enable 1断点1恢复delete 1删除 断点1
-
监视
print arr[1]看一次display arr[1]一直看- 关闭
display
-
next/n逐过程 -
step/s逐语句 会进入函数 -
continue运行到下一个断点 -
看内存
x
-
查看栈的情况
backtrace/bt
-
ulimit -a是 Unix/Linux 系统中用于 显示当前用户进程的资源限制 的命令。这些限制决定了进程可以使用的系统资源(如内存、文件句柄、CPU 时间等)。 -
使用gdb处理系统报错
-
调试core文件
man core
- 如果没有core文件,可能的原因
-
使用gdb调试
-
-
添加命令行参数
库文件
- 头文件在编译阶段起作用,库文件在链接阶段起作用。
静态库


动态库


产品更新
- 升级库
- 通过软链接



Makefile
-
代码构架工具
-
增量编译
-
文件名
- Makefile
- makefile
-

-
命令什么时候会执行
- 目标没有产生时—伪目标就是利用这种规则
- 依赖的文件的日期发生改变时
-
伪目标
- 什么是伪目标,看是否可以生成目标
- 文件不存在,但是一直生成不了 ,就会
一直执行 

- 全量编译

-
变量
- 只能操作字符串
- 自定义变量
- 自动变量
- 预定义变量

- 可以更改预定义变量的值
-
%匹配符
-
makefile提供的函数
SRCS:=$(wildcard *.c)找出当前目录下的.c文件OBJS:=$(patsubst %.c %.o $(SRCS))将变量SRCS中的.c变成.o




















3万+

被折叠的 条评论
为什么被折叠?



