Bootstrap

linux 命令

vim

行号

  1. 当前行号
    :nu
  2. 所有行号
    :set nu
  3. 配置文件:
    vim ~/.vimrc
    set nu
  4. 取消行号
    :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的区别

~和/ 区别

  1. 当用户是root用户时

~ 代表/root/,即根目录下的root目录

/ 代表/ ,即根目录

  1. 当用户是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 " CMAKEEXELINKERFLAGSm32")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下的系统运行信息
了解正则表达式,使用正则表达式来查找文件。

;