codex resume –last

AI

命令 解释
codex resume –last 打开最后一个历史

linux–系统命令

命令 解释
sha1sun file 查看文件的哈希值,如果不同说明文件修改过
touch 创建普通文件
==netstat -tunl | grep 端口号== 查看端口号状态
==ps -ef | grep /oem/napp/bin/== 查看进程状态
==sudo -S arp-scan -l== 查询IP
==sudo -S arp-scan -I enp59s0 -l== 查询指定网口下的IP
==sudo arp-scan -I wlp60s0 -l | grep -i == 按mac地址查询指定网口下的IP
arp -a 显示与你的PC连接的所有设备的IP和MAC地址信息,查询前先ping一下你需要的IP
sudo nautilus /usr/share/applications 在里面找到要删除的文件进行删除就可以拉==ubuntu打开菜单删除文件==
cp -rf -rf是强制递归复制目录下的所有文件
mv -f * 目标目录 移动指定目录文件到目标目录,重复则覆盖
cat /proc/version 查看版本信息
strings OA1000 | grep A20 公司::查看当前固件版本号
cat /etc/AnvizSeriesNumber 查看序列号
uname -a ^^
uname -m 查看系统的位数
==df | df -h== 查看文件系统的磁盘空间占用情况
free -h 查看系统内存的占用情况
mount 查看文件系统挂载状态 ro为只读,rw为读写
sudo update-alternatives –config moudel 查看并选择模块的版本优先级
sudo update-alternatives –config gcc 查看并选择使用的gcc版本
sudo adduser username 创建用户
sudo tail -f /var/log/syslog 查看系统日志
rpcinfo -p 显示正在运行的 RPC 服务及其使用的端口
chown -R : 更改指定目录的拥有者为指定用户
  • RPC(Remote Procedure Call,远程过程调用)是一种协议,用于让程序能够调用另一台计算机上的程序或服务,就像调用本地程序一样。RPC 使得网络上的程序能够通过网络相互通信,执行远程操作。
  • 工作原理
    1. 客户端和服务器:
      • RPC 有两个主要组件:客户端和服务器。客户端发起请求,服务器处理请求并返回结果。
    2. 调用过程:
      • 客户端调用一个代理或存根(stub),这个存根负责将调用转换为网络请求。
      • 存根将参数序列化并通过网络发送到服务器。
      • 服务器接收请求,调用相应的服务或函数,处理请求,然后将结果返回给客户端。
      • 客户端的存根接收结果并将其反序列化,返回给原始调用者。
  • 应用场景
    • 分布式系统:在分布式应用中,RPC 常用于不同服务之间的通信。
    • 网络服务:许多网络服务(如 NFS、LDAP 等)使用 RPC 作为通信机制。
    • 微服务架构:在微服务架构中,各个服务之间的调用通常通过 RPC 进行。

Linux cmd 快速跳转

命令 解释
Ctrl + A 将光标移动到当前行的开头。
Ctrl + E 将光标移动到当前行的末尾。
Ctrl + U 从光标位置删除光标之前的所有内容。
Ctrl + K 从光标位置删除光标之后的所有内容。
Ctrl + W 删除光标之前的一个单词。

Linux other

  • USB中
    • 480M 表示 USB 2.0 设备。
    • 5000M 或 10000M 表示 USB 3.0 设备
      | 命令 | 解释 |

    | :——- | :——————————— |
    | sudo dmidecode -t system | 输出中应该会显示更详细的系统信息,包括具体的产品名称和型号。 |
    | lsusb -t | 输出将显示 USB 设备的层次结构及其速度, |

system cmd

ufw

命令 解释
sudo ufw allow 6004 打开指定端口
sudo ufw allow from 允许此IP访问所有的本机端口
sudo ufw allow proto tcp from /24 to any port 22 允许指定的IP段访问特定端口
sudo ufw delete allow 6004 删除指定端口

top

命令 解释
p 按cpu使用率排序
M 按内存使用率排序
T 按时间排序
c 显示详细信息
s 修改刷新时间,默认3秒刷新一次,按空格立即刷新
1 显示每个内核的cpu使用率
u/U 显示指定的用户
h 帮助
H 切换到线程图
top -p PID 进程ip,查看某个进程状态

mount

cmd 说明
sudo mount | column -t 查看当前挂载的文件信息
sudo umount /media/you_directory 卸载当前挂载点
sudo mkdir /media/new_disk 创建新的目录,用于挂载硬盘
sudo mv /media/old_directory /media/new_directory 如果目录存在重命名
sudo mount /dev/sdb1 /media/new_directory 重新挂载设备
自启动后硬盘重新挂载到指定目录
sudo blkid 确定硬盘的 UUID 或设备名称
UUID=XXXX-YYYY /media/my_mount_point ext4 defaults 0 2 编辑 /etc/fstab 文件 没有则添加
^^ - -将 XXXX-YYYY 替换为您在步骤 1 中找到的 UUID。
^^ - -将 /media/my_mount_point 替换为您创建的挂载点目录。
^^ - -ext4 是分区的文件系统类型,您可以根据实际情况替换为 ntfs、vfat 等。
^^ - -defaults 是挂载选项,表示使用默认值。
^^ - -0 和 2 是用于备份和检查文件系统的选项。

df

cmd 说明
df -h 显示磁盘空间使用情况,包括已挂载的文件系统
df -hT 挂载的文件系统及其类型

free

cmd 说明
free -h 查看内存和交换区的信息

blkid

cmd 说明
sudo blkid 列出所有块设备及其 UUID 和文件系统类型

free

lsblk 说明
lsblk 列出所有块设备及其挂载点,这将显示一个树状结构,展示所有的存储设备及其挂载情况

mem

cmd 说明
ipcs -m 查看当前的共享内存段
ipcs -m | grep /dev/shm 查看当前系统的共享内存段(POSIX类型)
pmap PID pmap 用于显示进程的内存映射

kill

cmd 说明
kill -9 PID 杀掉进程
killall name 杀掉所有与name相符合的进程

pkill

cmd 说明
pkill -f <name/path> 杀掉指定路径下面的所有进程

file cmd

ls

cmd 说明
统计当前目录下有多少个文件
ls -l 表示查找当前目录下
ls -lh 查看文件大小
ls -lR 表示查找当前目录及子目录下
ls -l dir 表示在指定目录下查找
'^-' 表示查找所有文件,可以指定文件查找
'^d' 表示查找所有目录
wc -l 表示统计输出信息的行数,经过前面的过滤就剩下个数了
==ls -lR dir*/ | grep ‘^-‘ | wc -l== 查询当前目录及子目录下的所有文件

du

cmd 说明
du -sh dir 查看目录大小
du -h –max-depth=1 | sort -hr | head -n 10 查看当前目录下最大的前 10 个目录
-h -h 选项以人类可读的格式显示大小
–max-depth=1 –max-depth=1 限制只显示当前目录的直接子目录
sort -hr 按大小进行排序,-h 选项表示按人类可读的格式排序,-r 表示逆序排列
head -n 10 只显示前 10 个结果

strings

cmd 说明
strings 命令::在指定文件(包括二进制文件)中查找可打印的字符串
==strings /root/tmp | grep -i libc== 在tmp文件中查找小写(-i)的libc字符串

fonts

cmd 说明
ls ~/.local/share/fonts/Unknown\ Vendor/TrueType/ 自定义字体安装的位置

mkdir

cmd 说明
mkdir -p /root 在指定路径创建目录,没有该目录就进行补全

log

cmd 说明
logcat 查看日志

diff

命令 解释
diff以逐行的方式,比较文本文件的异同处。如果指定比较目录,则会比较目录中相同的文件名的文件,但不会比较子目录
diff file_name1 file_name2 参数 使用的语法示例
-<行数> 如-5,即指定要显示多少行的文本。此参数必须与-c或-u参数一并使用
-a/-test diff预设只会逐行比较文本文件
-b 不检查空格子符的不同
-B 不检查空白行
-c 显示全部文本,不标出不同之处
-H 比较大文件时,可加快速度
-i 不检查大小写的不同
-p 若比较的文件为c语言的程序文件时,显示差异所在的函数名称
-q 仅显示有无差异,不显示详细的信息
-r 比较子目录中的文件
-s 若没有差异,仍然显示信息
-S file_name 在比较目录时,从指定的文件开始比较
-t 在输出时,将tab字符展开
-T 在每行前面加上tab字符以便对齐
-u 以合并的方式来显示文件内容的不同
-v 显示版本信息
-w 忽略全部的空格字符
-W<宽度> 在使用-y参数时,指定栏宽
-x<file/dir> 不比较选项中所指定的文件或目录
-y 以并列的方式显示文件的异同之处
–lieft-column 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏显示该行内容
–suppress-common-lines 在使用-y参数时,仅显示不同之处

vim

命令 解释
在vim里面使用ctrl+s 表示停止向终端输出
在vim里面使用ctrl+q 表示恢复向终端输出
w !sudo tee % 给予权限并保存文件 !后面的命令表示在文件外部执行命令

so cmd

lib

| — | — |
| g++ -shared -o test.so -fPIC test.cpp | 把test.cpp文件编译为test.so共享库 |

ln

命令 解释
==ln== 用来为文件进行链接(文件链接<动态库,静态库>)
ln file1.txt file2.txt 将file1.txt链接到file2.txt。file2.txt -> file1.txt 硬链接
-s 对源文件建立符号链接(软链接),而非硬链接

rm

命令 解释
rm name 删除以存在的软连接

network cmd

port

| — | — |
| telnet ip port | 测试指定ip的指定端口是否可以连接 |

nmap

| — | — |
| nmap -sP /24 | 使用 nmap 扫描局域网: 假设你的网络是 /24 |
| nmap -sn /24 -oG - | awk ‘/Up$/{print $2}’ | -sn:执行 ping 扫描,检查哪些主机在线 |
| ^^ | -oG -:输出结果为 grepable 格式,并将结果发送到标准输出 |
| ^^ | awk ‘/Up$/{print $2}’:使用 awk 命令过滤输出,只打印状态为 “Up” 的行的第二列(即 IP 地址) |


ssh

命令 解释
ssh -p port user@ip 指定端口连接
sshpass -p 密码 scp -r file/dir root@dev_ip:dev_save_dir 传文件到dev
ssh -i ~/ -p 9566 @ 使用密钥连接到指定端口

scp

命令 解释
scp -i /path/to/private_key -P port_number /path/to/local_file username@hostname:/path/to/remote_directory 发送文件到指定的ip服务器, 使用密钥和指定端口
scp -i /path/to/private_key -P port_number -r /path/to/local_file username@hostname:/path/to/remote_directory 发送目录到指定的ip服务器, 使用密钥和指定端口

rsync

命令 解释
rsync 同步文件到远程
-av 归档模式(保留文件属性)并显示详细输出
-e 指定远程 Shell 命令,用于自定义 SSH 连接
ssh -p 5099 通过 -p 指定 SSH 端口(默认为 22)
-i wt_ssh.key 通过 -i 指定私钥文件路径(如 .pem 或 id_rsa)。
源路径 本地需同步的目录或文件
目标路径 远程服务器的目录
  • example

    rsync -av -e “ssh -p 9566 -i ~/ @:/


MDNS avahi

| — | — |
| avahi-browse -a -r| 查看mdns自发现协议名称和详细信息 |
| avahi-browse -rt _matter._tcp| 查看mdns _matter._tcp |


DNS

| — | — |
| dig google.com | 测试 DNS 解析时间(转换 IP 时间) |


telnet

| — | — |
| telnet ip | 连接到指定ip地址后台 |


nmcli

| — | — |
| nmcli device status | 快速查看所有网络接口的==物理状态==和连接概况 |
| nmcli device show | 显示指定网络设备的==详细底层信息== |
| nmcli connection show | 列出所有已保存的==网络配置方案== |
| nmcli networking connectivity | 网络管理功能状态 |


route

| — | — |
| sudo ip route replace default via dev enp59s0 | 设置路由为enp59s0网卡,地址为.1 |

tcpdump

| — | — |
| tcpdump -i ethsta0 -s 0 -w wlan0.pcap | 抓取无线网卡 wlan0 上的全部数据包,并把完整包内容保存到文件 waln0.pcap 里 |

other

grep

cmd 说明
-i 忽略大小写进行匹配
-v 反向查找,只打印不匹配的行
-n 显示匹配行的行号
-r 递归查找子目录中的文件
-l 只打印匹配的文件名
-c 只打印匹配的行数
> ==awk==
awk ‘{print $n,$m}’ 只打印第n和m列的数据,默认空格和tab为分割符
awk -F “/“ ‘{print $n,$m}’ 以/为分割符,只打印第n和m列的数据
grep -rn “name” . 递归查找当前目录中是否有name存在则输出行号

find

  • -path路径不能加入结尾的/
  • -path路径和find路径保持一致
    cmd 说明
    sudo find / -path “/home” -prune -o -name “win*” -print 跳过指定路径
    sudo find / ( -path “/home” -o -path “/media” ) -prune -o -name “win*” -print 跳过多个路径
    -path 指定要跳过的目录
    -prune 表示不进入该目录
    -o 表示逻辑“或”
    -name “*.txt”: 查找以 .txt 结尾的文件
    -print 打印找到的文件

linux–压缩

zip

cmd 说明
命令 解释
zip temp.zip text.txt 将text.txt文件压缩到temp.zip
zip -r name.zip 将当前目录下的所有文件和文件夹全部压缩成name.zip文件
zip -r name.zip youdir 将youdir目录下的所有文件压缩到name.zip中
zip -r name.zip dir1 dir2 … 将dir1 dir2 … 目录下的所有文件压缩到name.zip中
zip -d name.zip name.txt 删除name.zip压缩文件中的name.txt文件
zip -m name.zip name.cpp 向压缩文件name.zip添加name.cpp文件,并删除原始文件
zip -u name.zip name.cpp 向压缩文件name.zip添加name.cpp文件
zip -P password name.zip . 以加密的方式进行压缩
zip -r -P password name.zip . 以递归且加密的方式进行压缩
-q 在压缩的时候不显示命令的执行过程

dpkg

cmd 说明
-i 安装dpkg包
-deb -b dir1 dir2 将解压到dir1下面的所有内容重新打包为deb包,放在dir2

linux–解压

unzip

cmd 说明
命令 解释
unzip name.zip -d dir 解压zip类型文件到指定目录
-t 测试压缩包有无损坏,但不解压
-n 解压时并不覆盖已经存在的文件
-o 解压时覆盖已存在的文件,并且不需要用户确认
-x 文件列表 解压文件,但不包括文件列表中指定的文件
-v 查看压缩文件的详细信息,并不解压压缩包

dpkg

cmd 说明
-r 删除deb包
-X pack dir 将deb包解压到指定目录下

tar.xz

cmd 说明
-x 解压缩(extract)
-f 指定要解压的文件名
-v 显示详细输出(verbose),列出解压的文件
-z 通过 gzip 解压(用于 .tar.gz 或 .tgz 文件)
-j 通过 bzip2 解压(用于 .tar.bz2 文件)
-J 通过 xz 解压(用于 .tar.xz 文件)
-C 指定解压目标目录
tar -xf archive.tar 基本解压
tar -xzf archive.tar.gz 解压 gzip 压缩的 tar 文件
tar -xjf archive.tar.bz2 解压 bzip2 压缩的 tar 文件
tar -xJf archive.tar.xz 解压 xz 压缩的 tar 文件
tar -xf archive.tar -C /path/to/directory 解压到指定目录


linux–WIFI

!!! question 1. wpa_supplicant是什么?
是一个项目开源源码,被谷歌修改后加入了Andriod移动平台,它实现了station对无线网络进行管理和控制的功能,wpa_supplicant是linux系统下一个非常强大的无线网卡管理程序。
!!!

!!! question 2. wpa_supplicant有什么用?
主要用来加密的,主要支持OPEN,WEP,WPA(TKIP),WPA2(AES)等类型的无线协议与加密认证
!!!

!!! question 3. wpa_supplicant工作内容?
通过socket(不管是wpa_supplicant与上层还是wpa_supplicant与驱动都采用socket通讯)与驱动交互上报数据给用户,而用户可以通过socket发送命令给wpa_supplicant调用驱动来对WIFI芯片操作。
!!!

!!! question 4. wpa_supplicant三个成果。

  1. 是WIFI驱动和用户的中转站
  2. 对协议的支持
  3. 加密认证的支持
    !!!

!!! question 5. wpa_cli与wpa_supplicant关系
经过编译后的wpa_supplicant源程序可以看到两个主要的可执行工具:wpa_supplicant和wpa_cli。
wpa_supplicant是核心程序,它和wpa_cli的关系就是服务端和客户端的关系:后台运行wpa_supplicant,使用wpa_cli来搜索,设置和连接网络。
换句话说:
wpa_supplicant工具包含wpa_supplicant和wpa_cli这两个程序,其中wpa_supplicant程序作为服务端在后台运行,服务wpa_cli客户端的请求,从而实现WIFI的配置连接。
!!!

cmd 说明
==iwlist <wifi?>==
命令 解释
sudo iwlist wlan0 scan 通过你的wifi网卡名来扫描附近开启的wifi,必须以root身份运行
cd etc/NetworkManager/system-connections/
这个目录下就是linux系统连接成功的wifi,打开你想查看的wifi文件其中psk即为该wifi的密码
==wpa<wpa是一个linux自带的wifi管理工具>==
==wpa_supplicant 服务器?==
pgrep -af wpa_supplicant 查看wpa_supplicant服务器是否启动
wpa_supplicant -B -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -d 启动wpa_supplicant服务器
-B 在后台运行守护进程
-D 驱动程序的名称
-i 指定网络接口名称
-c 指定配置文件
-d 增加调试信息
/etc/wpa_supplicant.conf 配置文件内容 例:ctrl_interface=/var/run/wpa_supplicant update_config=1 机器的wifi密码也在里面
==wpa_cli 客户端?==
wlan0 wlan0是无线接口名字,要写入自己的无线接口名字,要拥有root权限
ifconfig wlan0 down 关闭WIFI接口
ifconfig wlan0 up 打开WIFI接口
wpa_cli -i wlan0 -p /var/run/wpa_supplicant 使得客户端连接服务端
-p 指定与wpa_supplicant通讯的文件
wpa_cli -i wlan0 terminate 终止wpa_supplicant后台服务程序
wpa_cli -i wlan0 status 查看当前无线网卡的状态
wpa_cli -i wlan0 scan 搜索附近wifi网络
wpa_cli -i wlan0 scan_results 打印搜索wifi网络结果
wpa_cli -i wlan0 add_network 添加一个网络连接
==wifi加密模式为wpa加密==
wpa_cli -i wlan0 set_network n ssid ‘“name”‘ 写入要连接的wifi的名字,n为第n个网络连接
wpa_cli -i wlan0 set_network n psk ‘“password”‘ 写入要连接的wifi的密码,n为第n个网络连接
==wifi加密模式为wep加密==
wpa_cli -i wlan0 set_network n ssid ‘“name”‘ 写入要连接的wifi的名字,n为第n个网络连接
wpa_cli -i wlan0 set_network n key_mgmt NONE 设置密码管理方式
wpa_cli -i wlan0 set_network n wep_key0 ‘“password”‘ 写入要连接的wifi的密码,n为第n个网络连接
==wifi加密模式为ess无加密==
wpa_cli -i wlan0 set_network n ssid ‘“name”‘ 写入要连接的wifi的名字,n为第n个网络连接
wpa_cli wlan0 set_network n key_mgmt NONE 设置密码管理方式
wpa_cli -i wlan0 list_network 查看所有保存的连接
wpa_cli -i wlan0 enable_network n 连接第n个wifi网络
wpa_cli -i wlan0 reconnect 重新连接
wpa_cli -i wlan0 disable_network n 断开第n个连接的wifi网络
wpa_cli -i wlan0 remove_network n 移除第n个wifi
==DHCP==


audio/video

FFmpeg

命令 解释
ffmpeg -i input.mp4 -pix_fmt yuv420p -c:a copy -movflags +faststart output.mp4 把input.mp4转换为yuv420p格式输出到output.mp4 <linux转windows>
ffmpeg -i input.mp4 获取完整音视频信息
ffprobe -v error -show_streams -select_streams a -of json input.mp4 使用ffprobe获取结构化信息


FFplay

命令 解释
ffplay -f v4l2 -i /dev/video0 播放摄像头画面
ffplay -f s16le -ar 48000 -ac 1 test.pcm 播放pcm音频文件
ffplay -ar 48000 -ac 1 test.ogg 播放ogg音频文件


opusenc

命令 解释
opusenc –raw –raw-rate 48000 –raw-chan 1 test.opus out1.ogg opus to ogg


aplay

命令 解释
aplay -v audio.wav 输出 PCM 配置详情
aplay -c 1 -r 8000 -f S16_LE -D hw:0,0 test.pcm 使用hw设备播放,单通道, 采样率8000,16位小端格式


build

make

命令 解释
make VERBOSE=1 详细输出

GDB

!!! warning 注意

1
2
3
4
5
6
7
8
9
在程序有参数时调试如下:
先 gdb 文件名
进入后在set args 参数;
然后正常操作就好啦!

gdb -args ./文件名 所需运行参数
watch //观测点指令
watch a //当变量a的值发生变化时,中断程序执行
rwatch a //当a的值被读取时,中断表达式的执行

!!!

GDB命令

命令 解释
h help:查看命令帮助,在gdb中输入help+命令
b 设置断点 b num
r 开始运行程序,程序会在遇到断点的地方停下来,如果没有断点,程序会一直运行下去
n 执行当前语句,如果该语句为函数调用,不会进入函数内部
s 进入有源码的函数内部执行第一条语句
c 继续程序的运行,直到遇到下一个断点
p 显示变量的值,如p name 表示显示name当前的值
l 查看源代码(list-n,从第n行开始查看代码,list+函数名:查看具体函数)
q 退出GDB环境
d 删除第num个断点, d num
set 设置变量的值
start 单步执行,运行程序,停在第一行执行代码
finish 结束当前函数,返回函数调用点
watch 被设置观察点的变量发生修改时,打印显示
i watch 显示观察点
display 追踪查看具体变量值
undisplay 取消追踪观察变量
info breakpoints 查看当前设置的所有断点
run argv[1] argv[2] 调试时命令行传参

打印内存的值
==x/“nfu” “addr”==

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
n:输出单元的个数
f:是输出格式。
x:按 16 进制形式输出,
a:按 16 进制格式显示变量
o:按 8 进制形式输出,
t:按 2 进制形式输出,
u:按 无符号10 进制的形式输出。
i:指令地址格式
c:按 字符 格式表示变量
f:按 浮点数 格式显示变量
u:表明一个地址单元的长度。
b:表示单字节,
h:表示双字节,
w:表示四字节,
g:表示八字节

addr:要查看的对象的地址 如:&name

!!! example 使用示例
例:

  1. x/8xb &name
  2. x/8oh &name
  3. x/8tw &name

解:

  1. 以16进制的形式查看name,共打印8个大小为b的信息
  2. 以8进制的形式查看name,共打印8个大小为h的信息
  3. 以2进制的形式查看name,共打印8个大小为w的信息
    !!!

Scrcpy 手机镜像

| 命令 | 解释 |
| :— | : —|
| sudo apt install scrcpy | 安装 |
| scrcpy | 运行|
| | 添加到同一个组内 |

C++ & C

!!! tip 16进制数只是10进制数的一种表现方式,其存储的实际还是10进制数。所以,定义变量就是整形!

1
2
3
4
5
6
7
8
9
10
在头文件声明即可
#ifdef __cplusplus
extern "C" {
#endif

c函数的声明

#ifdef __cplusplus
}
#endif

解释::cpp对函数的重载处理。在c++中,为了支持重载机制,在编译生成的汇编码中,要对函数书的名字进行一些处理。而在c中,只是简单的函数书名字,不会加入其它信息。也就是说:C++和C对产生的函数名字的处理是不一样的。

c为了在C++代码中调用用C写好的库文件,就需要用extern”C”来告诉编译器:这是一个用C写好的库文件,请用C的方式来链接它们。
!!!

C++

cmd 说明
cout << hex << val hex::以16进制输出结果
cout << oct << val oct::以8进制输出结果

C

cmd 说明
%x 按16进制输入数据
%0 按8进制输出数据
%.*s *用来指定宽度,对应一个整数。.(点)与后面的数结合起来是指定必须输出这个宽度