文章目录

  • linux缩写
  • Linux man快捷键
  • Linux vi/vim快捷键
  • linux终端操作(shell:bash、sh)
  • linux快捷键
  • linux集成命令
  • 查看所有用户列表
  • 查看指定用户家目录路径
  • apt-get 命令大全
  • xshell操作
  • visual studio
  • Linux VSCode快捷键
  • windows vscode快捷键
  • c语言缩写
  • c++缩写
  • 计算机相关
  • 其他缩写
  • Clion快捷键(设置成VS效果)
  • 浏览器快捷键
  • Windows终端操作
  • Qt Creator快捷键
  • C语言动静态 存储区
  • rockchip
  • datagrip快捷键
  • docker相关操作
  • 从镜像tar包获取镜像名和镜像tag(检查镜像tar包image_name:image_tag)
  • Windows cmd命令
  • 递归创建目录

linux缩写

cal:calendar
cat:concatenate
cd:change directory
chgrp:change group(修改文件或文件夹所属组)
chmod:change file mode bit(更改文件模式位)
chown:change owner(改变文件或文件夹所有者)
cp:copy
df:disk free(显示磁盘的相关信息【为什么叫这个?】)
du:Disk Usage(显示目录或文件的大小)
fg:ForeGround(前景、前台)
grep:Global Regular Expression Print
ifconfig:network interfaces configuring(网络接口配置)
ln:link
mv:move
ping:Packet Internet Grope(因特网包探索器)
pwd:print working directory
ps:Process Status(查看进程状态)
RPM:Redhat Package Manager
su:Switch users
sudo:super do
tar:tape archive
rm:remove

GCC:GNU Compiler Collection(GNU 编译器套件)
GNU:GNU is Not Unix 的递归缩写(GNU:对Unix向上兼容的完整的自由软件系统)
GDB:The GNU Project Debugger(GNU项目调试器)

cli:命令行界面(Command-Line Interface,CLI)

参考文章:Linux里常见术语的缩写

(20221206)另外这里还有一个:linux命令是哪些英文单词的缩写?

Linux man快捷键

一般只需直接man [所查命令],但有相同命令时,man出来的结果很可能不是想要的,可以先用man -f [命令名]查询,然后用man 数字 [命令名]查询。

程序函数一般可以用man 2 [函数名]查到,如直接man open出来的并不是open()函数的帮助,发现有俩open,第二个是找开文件,这时就可用man 2 open了

sudoer命令_sudoer命令


参考文章:ubuntu下man查询函数

Linux vi/vim快捷键

撤销:(esc) r
重做:(esc) ctrl+r
全选代码:先gg跳到第一行,然后按shift+v(显示可视行),再按shift+g,就会跳转到最后一样并且全部代码被选中(ggVG)
从外界粘贴代码:先按i进入编辑模式,鼠标右键粘贴–>粘贴到终端
显示行号::set nu 保存退出::wq

另起一行:ESC+o(但是老是把最后一个字符也切换下去怎么回事,不行啊!)

从上至下搜索字符串:/字符串

清空文件:按Esc输入:%denter 临时显示行号:按Esc输入:set numberenter

linux终端操作(shell:bash、sh)

ubuntu终端复制文本:鼠标按住左键滑动选中要复制的内容即可,无需再右键点击复制

CTRL+A 光标最前
CTRL+E 光标最后
CTRL+U 剪切、删除此行
CTRL+Y 粘贴、恢复此行
CTRL+K 剪切、删除光标后的内容
CTRL+D 退出终端(准确来说是退出当前shell)
CTRL+S 暂停屏幕输出
CTRL+D 恢复屏幕输出

向上翻页:Shift + Page Up
向下翻页:Shift + Page Down

重命名文件:mv fileA fileB
返回上次目录:cd -
终端清除本行输入:ctrl + shift + - ll:显示文件详细信息,
查看历史命令:history [选项] [历史命令保存文件] 查看系统当前用户执行的所有历史命令操作:cat ~/.bash_history(如要查看其他用户的操作,请改成cat /home/<username>/.bash_history,查看root用户操作:cat /root/.bash_history

暂停滚屏(锁定屏幕):ctrl + s 解锁屏幕:ctrl + q

递归 test 目录下所有文件加 777 权限:chmod 777 test/ -R

复制文件夹:cp -r 源文件夹路径 目标文件夹路径

解压tgz:tar -zxvf 压缩包
压缩tgz:tar cvzf 压缩包包名.tar 文件1 文件2 文件3…
解压tar.xz:tar xvf + 压缩包
解压rar:参考文章:linux ubuntu如何解压rar文件?unrar

解压zip:unzip file.zip

查找文件(查找目录下包含子目录的所有文件名带xx的文件):find . -name '*xx*'

查看命令位置:type 命令(如:type nginx 结果:nginx is /usr/sbin/nginx)

查看编译器版本如:

[root@ubuntu /arnold_test/20211219_ftpCrossCompile/netkit-ftp-0.17]13# arm-linux-gnueabihf-gcc --version
arm-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

查看系统版本:
cat /proc/version

查阅正在改变的日志文件:tail -f 文件名 批量动态跟踪某目录下日志文件:tail -f *.log (来源于进程间通信视频教程)

ubuntu查看某段时间系统日志并过滤:grep 'Aug 23 15:' /var/log/syslog

批量搜索文件内容:grep -rn "{填写关键字}" *

-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
-l 只列出匹配的文件名
-L 列出不匹配的文件名
-w 只匹配整个单词,而不是字符串的一部分(匹配 hello,不匹配helloo)

如:grep -rn "app" *,递归查找路径下所有文件中带app字符串的内容

grep查找内容输出到文件:
1、覆盖:grep -rn "app" * > ./arnold.log 1、追加:grep -rn "app" * >> ./arnold.log

实时显示系统中各个进程的资源占用情况:top
进入后再按P,可以以cpu占用作进程排名

查看进程信息:
ps -auxf | grep [process name](加f可显示进程树)
ps -ef | grep [process name] 快速找进程号:
pgrep [process name](我ubuntu和arm摄像头都没这个命令)

杀死进程:
linux ubuntu kill指令和killall指令的区别(killall会终止所有与该名字匹配的进程) 杀死包含指定关键字的所有进程:
ps aux | grep 关键字 |awk '{print $2}'|xargs kill -9 如:ps aux | grep a.out |awk '{print $2}'|xargs kill -9

给指定进程名发送特定信号:killall -[信号值] [进程名](进程名要写全,比如ky_ai_camera_engine_origin,不能只写ky_ai_camera_en)
给指定进程名发送特定信号:kill -[信号值] [进程号](信号值可以是数字也可以是标志:如10或USR1)

查看系统信号列表:kill -l

递归删除目录下含有xxx关键字的文件:find . -name "*xxx*" | xargs rm

查看端口占用情况:netstat -anp | grep 端口号

查看使用中的端口号:cat /etc/services 如:海康摄像头

# cat /etc/services
# cat services
# Here is a simple services file.
#
ftp-data                20/tcp
ftp                     21/tcp
telnet                  23/tcp
uptime                  24/tcp
bootps                  67/udp
bootpc                  68/udp
tftp                    69/tcp
http                    80/tcp
sftp                   115/tcp
snmp                   161/udp

系统版本:
查看系统位数:getconf LONG_BIT 查看系统信息:lsb_release -a 查看系统架构:uname -a

显示容量/内存(显示当前路径下每个文件夹及文件大小):du -sh * 查看目录下文件夹文件大小:du -h --max-depth=1

后台运行:命令最后加个&

修改用户组,修改所属用户:linux修改用户组,修改所属用户

查看磁盘用量(查看存储空间):df -h(disk free -human)
查看当前目录树下文件大小:du -h(小心,这个可能会打印非常多)
统计当前目录各文件夹大小:du -sh ./* 查看内存使用情况:free -h

立即关机:shutdown -h now
延迟关机:shutdown

清空文件:cat /dev/null > /path/to/file (注意不要用echo “” > /path/to/file,文件不会完全清空,会有一个字节)

查看系统日志:tail -n 3000 /var/log/syslog

查找文件或目录是否被创建软链接:find / -type l -ls | grep "/path/to/your/file"

显示上一次开机时间点:uptime -s

linux快捷键

回到桌面:ctrl + win +D
退出全屏:F11
打开终端:ctrl+alt+t
终端创建新标签:ctrl+shift+t
★终端放大字体:ctrl + shift + + ★终端缩小字体:ctrl + -

文件或文件夹的复制命令

1.cp命令

命令:cp dir1/a.doc dir2 表示将dir1下的a.doc文件复制到dir2目录下

cp -r dir1 dir2 表示将dir1及其dir1下所包含的文件复制到dir2下

cp -r dir1/. dir2 表示将dir1下的文件复制到dir2,不包括dir1目录

说明:cp参数 -i:询问,如果目标文件已经存在,则会询问是否覆盖;

linux集成命令

查看所有用户列表

cat /etc/passwd | cut -d: -f1

查看指定用户家目录路径

grep "用户名" /etc/passwd | cut -d: -f6

apt-get 命令大全

apt-get命令大全

xshell操作

垂直分屏:选项卡 --> 排列 --> 垂直排列

visual studio

打开代码标签窗口:视图–> 书签窗口(ctrl + k, ctrl + w)
创建书签,创建文件夹,将书签添加到文件夹:自己在书签窗口看

Linux VSCode快捷键

移动代码:选中代码按住alt按上下方向键
打开命令面板:ctrl + shift + p 或 F1
打开文件搜索面板:ctrl + p
全屏显示:F11
打断点(内联断点?):F9
打开终端:ctrl + `
关闭当前文件:ctrl + w
变量批量重命名:F2
隐藏侧边栏:ctrl + b

转到定义:ctrl+鼠标左键点击或F12
速览定义:按住ctrl鼠标放在函数上

代码左缩进:ctrl + [ 或 shift + Tab
代码右缩进:ctrl + ]

格式化代码:ctrl + shift + i

向上插入一行:ctrl + shift + enter
向下插入一行:ctrl + enter

返回上次光标处:ctrl + alt + -

扩展选择:shift + alt + →
缩小选择:shift + alt + ←

左右括号跳转:ctrl + shift + \

非常全的VSCode快捷键(中英文对照版)

(以下来自vscode帮助)

sudoer命令_快捷键_02

windows vscode快捷键

格式化C++代码:shift+alt+f(前提是已安装c++插件并且代码文件存在)
折叠和反折叠代码块:ctrl + shift + [ctrl + shift + ] 返回前一次光标:alt + ← 返回后一次光标:alt + → 返回上次编辑位置:ctrl + k, ctrl + q 重启vscode:打开:“命令面板” CTRL + SHITF + P 输入: 1 > Reload Window
删除一行(删除某行):ctrl + shift + k

c语言缩写

std:standard
%d:decimal system(十进制)
%hd:short int(短整型,因为%s代表字符串,所以用short的第二个字母)
%lf:double float(双精度,因为d、o、u、b 都被占用了,所以用 l 表示double)
malloc:memory allocate(内存分配)
ptr:pointer

c++缩写

if:input file
of:output file
endl:end line
EOF:end of file

计算机相关

CPU:central processing unit(中央处理单元、中央处理器)
ALU:Arithmetic&logical Unit(算数逻辑单元)
DW:double word(四个字节)

其他缩写

kits:套件(就是个英文单词,不是缩写)
MinGW:Minimalist GNU for Windows
MFC:Microsoft Foundation Classes(微软基础类库)
DLL:Dynamic Link Library(动态库、动态链接库)
AST:abstract syntax code(抽象语法树)
LOC:Lines of Code(代码行数)

Clion快捷键(设置成VS效果)

alt + ↑ / ↓ :切换函数块
ctrl+g:跳转到行

浏览器快捷键

chrome清除缓存:ctrl + shift + delete

Windows终端操作

切换到其他盘:盘符: 如:

D:\1_Softwares\15_Qt\Qt5.9.9\5.9.9\mingw53_32>F:

F:\KYSL_Projects\1_cy335c_product_tools\test>

Qt Creator快捷键

注释代码:ctrl + /
运行代码:ctrl + r(run)
编译代码:ctrl + b(build)
字体缩放:ctrl + 鼠标滚轮
向上、向下复制:ctrl + alt + ↑ 或 ↓
竖向选择:alt + shift + 方向键
上下交换行:ctrl + shift + ↑ 或 ↓
打开帮助文档:F1
对齐代码:ctrl + i
同名.cpp文件和.h文件之间的切换:F4
帮助文档路径:D:\1_Softwares\15_Qt\Qt5.9.9\5.9.9\mingw53_32\bin

C语言动静态 存储区

sudoer命令_sudoer命令_03

  • 普通全局变量能被其他文件访问,static全局变量不行;
  • static局部变量不能被包含它的{}外访问(这点与auto普通变量相同,但static局部变量的生命周期较auto普通变量长);
  • 外部函数或变量使用前必须要声明;
  • extern关键字可以在函数或变量定义时加上(定义时加不加都行),也可在声明时加上(在需要导入的头文件或直接在调用文件中)(但我测试过,外部函数不加extern也能被调用,变量不加extern就不行,原因:变量声明如果不加extern则无法区分是定义还是声明,所以声明一定要加extern)(要清楚包含头文件的目的,本质就是个文本复制)
  • 普通函数定义或声明时加上extern就能被外部文件,但加了static就只能本文件访问

如果一个函数要被其他文件中函数使用,定义时加extern关键字,在没有加extern和static关键字时,一般有的编译器会默认是extern类型的,因此你在其他函数里调用也可以使用。
但是有些编译器以及在一些大型项目里,使用时一般的会将函数的定义放在源文件中不加extern,而将函数的声明放在头文件中,并且显示的声明成extern类型,使用此函数的源文件包含此头文件即可。
参考文章:全局函数就可以被另一个文件中的程序调用,声明函数时不管写没写extern都默认为全局函数吗

  • 存储区
//main.cpp  
int a = 0; //全局初始化区  
char *p1; //全局未初始化区  
main()  
{  
	int b; //栈  
	char s[] = "abc";// 栈  
	char *p2;// 栈  
	char *p3 = "123456";// 123456\0在常量区,p3在栈上。  
	static int c =0; //全局(静态)初始化区  
	p1 = (char *)malloc(10);  
	p2 = (char *)malloc(20);  
	//分配得来得10和20字节的区域就在堆区。  
strcpy(p1, "123456"); //123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。  
}

参考文章:【c语言】字符串常量到底存放在哪个存储区

rockchip

RKAIQ:Rockchip Automatical Image Quality(瑞芯微自动图像质量)(图像处理算法模块)

其他具体详细缩写:KYSL_瑞芯微AI芯片入门 RockChip(RV1126_RV1109)

MPP:(Media Process Platform)媒体处理平台
MPI:MppApi(MPI)媒体处理平台应用程序接口

DRM(Direct Rendering Manager)(直接渲染管理器)
DRI(Direct Rendering Infrastructure)(直接渲染基件)
DMA (Direct Memory Access)(直接存储器访问)

gop:Group Of Picture(即两个 I 帧之间的间隔)(源自:Multimedia/Rockchip_Developer_Guide_MPP_CN.pdf

OSD(On Screen Display)是屏幕显示技术的一种,用于在显示终端上显示字符、图形和图像。参考文章:OSD的原理

3A,指自动聚焦(AF),自动曝光(AE)和自动白平衡(AEB)算法,或者算法.so 库
Async Sub Device,特指在 Media Controller 结构下的 V4L2 子设备
Bayer Raw,或者 Raw Bayer,表示设备(Sensor 或 ISP)输出的 RGGB,BGGR,GBRG,GRBG 等格式,或该格式的数据帧
Buildroot, 特指 Rockchip 基于 Buildroot发布的一系列 Linux SDK
CIF,Camera Interface, 即 Camera 接口, 用以接收 Sensor 数据并保存到 Memory 中
DVP,一种并行接口,即 Digital Video Port
Entity, 本文指 Media Controller 框架下的各节点
FCC 或 FourCC,即 Four Character(FCC) codes,指 Linux Kernel 中用 4 个字符表示的图
像格式,详见 FourCC 介绍
HSYNC,行同步信号
ISP,Image Signal Processing,用以接收并处理图像
IOMMU,Input-Output Memory Management Unit,本文指 Rockchip 系列芯片中的
iommu 模块,用于将物理上分散的内存页映射成 cif、isp 可见的连续内存
Media Controller,Linux kernel 的一种媒体框架
MIPI,本文指 MIPI 协议
MIPI-DPHY,本文指 MIPI-DPHY 协议,或 Rockchip 芯片中符合 MIPI-DPHY 协议的控制器
MP,即 Main Path,指 Rockchip ISP 的一个输出节点,可输出全分辨率图像,一般用来拍照,抓取 Raw 图
PCLK,即 Pixel clock
Pipeline,本文指 media controller 下各个 entity 相互连接形成的链路
SP,即 Self Path,指 Rockchip ISP 的一个输出节点,最高只能输出 1080p 分辨率,一般用
作预览
Userspace,即 Linux 用户空间(相对于 Linux 内核空间),本文特指用户层或在用户层执行
的程序
V4L2,即 Video4Linux2,Linux kernel 的视视频处理模块
VIP,在 Rockchip 芯片中,即 Video Input Processor, 曾作为 CIF 的别名,已不再使用
VSYNC,场同步信号

datagrip快捷键

执行sql语句:ctrl + enter
格式化sql代码:ctrl + alt + L
创建数据库:创建数据库不能直接通过ui界面操作,我们需要连接上数据库,然后打开一个新的查询控制台(Query Console),执行CREATE DATABASE new_database;

docker相关操作

从镜像tar包获取镜像名和镜像tag(检查镜像tar包image_name:image_tag)

语法:

tar xf xxx.tar manifest.json -O | /ky_static/ky_upgrade/tools/jq/jq-linux64 '.[0].RepoTags'

示例:

tar xf ascendhub.huawei.com_public-ascendhub_pytorch-modelzoo_23.0.RC2-1.11.0.tar manifest.json -O | /ky_static/ky_upgrade/tools/jq/jq-linux64 '.[0].RepoTags'

sudoer命令_其他_04


注意,结果可能会有多个,如:

REPOSITORY          TAG                 IMAGE ID
myimage             1.0                 d123f4e55e12
myimage             latest              d123f4e55e12

当导出一个镜像为tar文件时,如果该镜像有多个标签,那么这些标签都会被保存在tar文件中。然后,当在另一个Docker环境中导入这个tar文件时,将会看到这个镜像仍然拥有这些标签。

所以,如果一个镜像有多个标签,用docker images命令查看的时候,会显示同一个镜像ID和镜像名,但是会有多个不同的镜像tag。每个tag都会作为一个单独的条目列出,尽管它们指向的是同一镜像。

例如:

REPOSITORY          TAG                 IMAGE ID
myimage             1.0                 d123f4e55e12
myimage             latest              d123f4e55e12

上面的输出表明,myimage这个镜像有两个标签:1.0latest,它们都指向同一个镜像ID d123f4e55e12

Windows cmd命令

递归创建目录

在Windows命令提示符(CMD)中,你可以使用 mkdir 命令来创建目录。如果你需要递归地创建目录,即使父级目录不存在,也可以直接创建子目录,你只需要在 mkdir 命令后面添加所需的完整路径。

例如,如果你想要创建目录 C:\Users\altnod\Documents\Tencent Files\1260738020\FileRecv\,你可以在CMD中运行以下命令:

mkdir "D:\Users\altnod\Documents\Tencent Files\1260738020\FileRecv\"

这个命令将会创建完整的路径中的所有必要的父目录,如果它们还没有被创建。

注意:由于目录路径中有空格,所以我们需要把整个路径放在双引号中。

sudoer命令_快捷键_05