vim
行号
- 当前行号
:nu - 所有行号
:set nu - 配置文件:
vim ~/.vimrc
set nu - 取消行号
:set nonu
删除整行
终端删除整行 Ctrl+u
vi删除整行 dd
光标
w 光标移动到下一个单词的开头
e 光标移动到下一个单词的结尾
fa 移动到本行下一个为 a 的字符处,fb 移动到下一个为 b 的字符处
nG 光标定位到第 n 行的行首
gg 光标定位到第一行的行首
G 光标定位到最后一行的行首
H 光标定位到当前屏幕的第一行行首
M 光标移动到当前屏幕的中间
L 光标移动到当前屏幕的尾部
文件系统结构和基本操作
find
https://blog.csdn.net/weixin_34766991/article/details/116622214
for lookup reference:
find . -name “*.c” -type f | xargs grep “function_name”
添加grep颜色:
export GREP_OPTIONS=“–color=auto”
alias grep=‘grep --color=auto’
通常find命令显示文件不如ls的直观。下面命令可以通过exec与ls结合。
find ./ -name “*02-26.bz2” -exec ls -lh {} ;
grep
grep -nr “key_word”
等效于 find . -type f | xargs grep “key_word”
chown
chown -R -v root:root test
chmod
https://blog.csdn.net/qq_42289214/article/details/87996211
chmod a=rwx 1.txt 等价于 chmod 777 1.txt
chmod -R a=rwx folder
Source insight 提示: it is not currently available for write access
在windows下使用sourceinsight的你没有权限去对文件进行写操作。
less
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
du 查看文件夹大小,并按照从大到小排列
du -sh * | sort -rh
windows文档格式转换
在window下,文件回车换行符号末尾是’\r\n’;
而在linux中,文件回车换行符号末尾是’\n’;
当在window环境下面编辑的文件,拷贝到或者上传都linux文件中时,就会产生^M+’\n’。
这就是linux文件中会出现^M的原因。
解决方法:使用dos2unix去掉每行末尾的^M
apt-get install dos2unix
dos2unix demo.txt
压缩
zip -r test.zip *.jpg
unzip test.zip
tar压缩:
主要命令:
-c 创建包
-x 解包
-t 列出包中的内容
-r 增加文件到指定包中
-u 更新包中的文件
可选命令:
-j 创建或解开包时 使用bzip2 进行压缩或解压;
-J 使用xz压缩
-z 创建或解开包时 使用gzip 进行压缩或解压;
-Z 创建或解开包时 使用compress 进行压缩或解压;
-f 后面跟指定的包文件名;
-v 显示打包/解包过程
示例:
tar -czvf lib //使用gzip压缩lib文件夹;对应解压为:tar -xzvf lib.tar.gz
tar -cjvf lib //使用bz压缩;对应解压为:tar -xjvf lib.tar.bz
tar -cJvf //使用xz压缩,压缩比最高,但耗时较长;对应解压为:tar -xJvf lib.tar.xz
文本操作命令
字符替换
先说简便方法:gedit filename
这样就可以按照windows下的替换规则操作了
在字符替换中,可能会遇见引号,“/”等的替换,这时应该注意,sed的命令原型是:
sed -i “s/oldstring/goalstring/g” file
如果一个路径是data/path/abc,现在要将此路径换成一个字符串cde
但是这时跟在s后边的其实是分隔符,用以将oldstring替换成cde;他可以使用任意字符,这时如果字符串中有“/”,就会发生混乱,在这个时候可以用#当做分隔符,就变成
sed -i “s#abc#cde#g” file
这时如果abc中包含“/”就可以随便替换了;
引号的替换:
需要将引号转义,使用反斜杠“\”,比如替换" ’ ‘div’ ’ “,如果需要将它替换成‘div’ ;可以使用sed -i s#”‘’#'#g就能替换了。
管理命令
tcpdump
sudo tcpdump -i enp0s3 -s 0 -w svr.log
创建新用户和samba用户
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享
adduser username
chown username:username username
smbpasswd -a username
#进入samba
su
cd /etc/samba/
vim smb.conf
#修改path
#重启samba
sudo /etc/init.d/samba restart
Linux添加新用户的sudo权限
https://zhuanlan.zhihu.com/p/449619169
# https://blog.csdn.net/qq_45704640/article/details/113703872
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
#下面的user是你的用户名 添加这一行就能免密sudo了
user ALL=(ALL:ALL) NOPASSWD: ALL
Linux——linux系统进入退出sudo模式
https://www.cnblogs.com/oddcat/articles/9679606.html
其它
ctrl+r 反向搜索 u撤销
用途:反向搜索执行过的命令。(reverse-i-search)
linux命令行的history是一个熟知但不常用的命令,原因是要查某个命令的编号需要输入 history|grep xxx ,又因为!?xxx,!xxx 属于运行即执行也不方便,ctrl+r则方便多了。
环境变量
当前终端设置临时变量(退出后再进入就没有)
export PATH=/usr/local/pgsql/bin:$PATH
用户/系统环境变量区别参考:https://blog.csdn.net/chen_123_123_/article/details/82777028
查看当前环境变量:env
切换用户
su username
su和sudo的区别
~和/ 区别
- 当用户是root用户时
~ 代表/root/,即根目录下的root目录
/ 代表/ ,即根目录
- 当用户是jack用户时
~ 代表/home/jack,即根目录下的home目录下的jack目录
/ 代表/ ,即根目录
屏幕的输出结果存到log文件
. test.sh 2>&1 | tee log
https://baijiahao.baidu.com/s?id=1709055194390039623&wfr=spider&for=pc
gdb调试Segmentation fault (core dumped)
1、首先使用ulimit -a查看你的core file size是否为0. (备注:docker环境下可能永远无法生成core dump文件)
2、然后使用ulimit -c 1024命令修改core file size。这里我们暂且把修改为1024吧。不放心的话可以再使用ulimit -a查看core file size。
3、调试的话输入: gdb filename core ;filename就是产生core文件的可执行文件,core就是产生的dump文件,一般地会放在执行文件所在文件夹。
*通过修改/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件格式。例如:将所有的core文件生成到/corefile目录下,文件名的格式为core-命令名-pid-时间戳. echo “/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern
4、输入bt 可查看堆栈信息
https://blog.csdn.net/snow0879/article/details/123745581
5、另外可通过assert(0) 来打印callstack
https://blog.csdn.net/weixin_43343803/article/details/103251575
编译32bit程序
动态库:
file xxx.so
静态库
objdump -a xxx.a
编译cmake加上-DCMAKE_THREAD_LIBS_INIT=-lpthread
add_compile_options(-m32)
set(CMAKE_EXE_LINKER_FLAGS “
C
M
A
K
E
E
X
E
L
I
N
K
E
R
F
L
A
G
S
−
m
32
"
)
s
e
t
(
C
M
A
K
E
S
H
A
R
E
D
L
I
N
K
E
R
F
L
A
G
S
"
{CMAKE_EXE_LINKER_FLAGS} -m32") set(CMAKE_SHARED_LINKER_FLAGS "
CMAKEEXELINKERFLAGS−m32")set(CMAKESHAREDLINKERFLAGS"{CMAKE_SHARED_LINKER_FLAGS} -m32”)
set(CMAKE_MODULE_LINKER_FLAGS “${CMAKE_MODULE_LINKER_FLAGS} -m32”)
docker
docker images
docker ps 查看docker容器
需要账号有root权限,sudo –s后,执行docker命令:
docker run -it -v --rm desaysv/opendds_build_default:v1 /bin/bash
挂载本地镜像节点:
docker run -it -v /home/baike/grpc:/grpc/ desaysv/opendds_build_default:v1 /bin/bash
拷贝镜像节点中的文件:
docker cp b93f647f901d:/zhuyazhou/DDS ./grpc/
git
git ssh http认证方式原理和区别
好文,可入门公钥加密方式
简单讲,就是通过ssh-keygen产生本地公钥文件(id_rsa.pub),并把内容复制至代码托管平台
ssh key在Linux和windows上公用
Git - 配置并使用多个SSH KEY
git branch
https://blog.csdn.net/gb4215287/article/details/115351453
1、git branch
查看本地当前所在分支,并且在当前分支前面加“*”号标记
2、git branch -r
查看远程分支,r是remote的简写
3、git branch -a
列出本地分支和远程分支
创建分支: $ git branch mybranch
切换分支: $ git checkout mybranch
创建并切换分支: $ git checkout -b mybranch
https://blog.csdn.net/chaogu94/article/details/111057046
git push origin dev:remote_branch
git reset HEAD就是回退到当前版本。git reset HEAD^回退到上一版本
git add命令将文件提交到暂存区之后,发现文件提交错了,就可以通过git restore --staged file撤销在暂存区提交的文件
git checkout – to discard changes in working directory这个意思就是下载某某文件,丢弃掉该文件在工作区的改变内容。
我们git add 一个文件
在这里插入图片描述:https://blog.csdn.net/Amnesiac666/article/details/120989624
这时我们发现添加了错误的内容,此时我们只是做了add 操作,就是将修改了内容添加到了暂存区,还没有执行commit,所以还没有生成版本号,当前的版本号对应的内容,还是你add之前的内容,所以我们只需要将代码回退到当前版本就行。
git reset HEAD
2023.12.8
如果要新拉一个模块的代码,没必要先下repo,再从manifest中去找path
可以直接查看之前编译环境中的代码仓库的的.git/config 再git clone, git push standard mybranch:mybranch
https://www.ruanyifeng.com/blog/2020/04/git-cherry-pick.html
git clone:
https://blog.csdn.net/qq_36667170/article/details/121264178
git checkout:
https://blog.csdn.net/duobaohongtu3/article/details/123572066
git commit:
https://www.jianshu.com/p/ff4f98695c2c
git commit -am “feat(transport): 1.DDS_LOG for log control 2.streaming mode support”
git commit -am “fix(transport): bugs for streaming test”
git revert/git reset:
https://blog.csdn.net/L1147484597/article/details/128480953
gitlab
如何在GitLab上传本地项目
从gitlab拉取代码、提交代码、提MR流程
解决 The file will have its original line endings in your working directory
建立本地branch:
git checkout -b local_branch --track origin/remote_branch
或 repo start newbranchname
搭建ubuntu
Rufus - 轻松创建USB启动盘
Windows下用U盘安装Ubuntu的详细教程
Windows10安装ubuntu18.04双系统教程
详解使用SSH远程连接Ubuntu服务器系统
Windows下使用SSH命令登录Linux服务器
ssh [email protected]
ssh info
linux展望
https://coolshell.cn/articles/4990.html
用熟一种程序员的编辑器(不是IDE) 和一些基本工具
1.Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
2.Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。
一定要少用少用图形界面。
学会使用man来查看帮助
文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…
了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
了解正则表达式,使用正则表达式来查找文件。