# 入手大型项目源码

<font style="background:pink">
1

# 目录

[TOC]

# ✅英语单词相关er和ee

  • employer,雇主『主动雇佣别人的』
  • employee,雇员『被雇的』
  • 记忆法:er反过来是ren人
    • ee像纯纯牛马

# ✅Linux下源码查看

  • everthing使用:linux下的find文件查找命令
  • AnyTxt的模拟使用:grep文件内容查找命令

find信息

⭐️⭐️⭐️find -name “*llvm*”  ./* 

find ./* -name 完整的文件名或者文件夹名(文件名,连后缀都要写对)
1
2
3

# 1.⭐️find模仿everthing

  • 使用find文件名-文件夹-find最坑的地方(部分复现everything)⭐️
  • 注意点1:如果名字不完整就不行「当然,你可以用正则表达式」
  • 注意点2:必须find -name [filename] [dir]【不一定】必须文件夹名字在前
  • 注意点3:必须find [dir] -name [filename],必须文件夹名字在前
  • find的最坑的地方(一定要写全)
XXXX@XXXX:~/whoway/riscv_gcc$ find ./* -name bui
XXXX@XXXX:~/whoway/riscv_gcc$ find ./* -name build
./Benchmarks/mcu/mcu_code/build
./hcc_riscv32/build-gcc-final/gcc/build
./hcc_riscv32/build-gcc-first/gcc/build
1
2
3
4
5
  • find命令是一种精确查找工具,可以查找精确查找文件的位置,单相对于locate命令的模糊查找来说,速度要慢了许多
whoway@XXXX:~/whoway$ find ./* -name build.log
./hcc_riscv_gcc/Benchmarks/automotive/bitcount/build.log
./hcc_riscv_gcc/Benchmarks/automotive/basicmath/build.log

whoway@XXXX:~/whoway$ find ./* -name build
./hcc_riscv_gcc/hcc_riscv32_musl/build-gcc-first/gcc/build
1
2
3
4
5
6

find中正则表达式的使用⭐️

whoway@XXXX:~$ find ./* -name "*gdb*"
./optimization/00.firstHashOptCodeSize/codesize/scripts/test_zeroize.gdb
./optimization/how-do-i-perform-gdb-debugging.md
./optimization/arch/lib/kgdb.c
1
2
3
4
  • find的忽略大小写查询-iname选项
whoway@XXXX:~/Desktop$ find -name "*.txt"
./33.txt
whoway@XXXX:~/Desktop$ find -iname "*.txt"
./33.txt
./22.Txt
./aaa.TXT
1
2
3
4
5
6

# 1.1.使用locate进行模糊搜索文件or文件夹(⭐️完全复现everything)

根据发行版和系统的配置方式,**locate**包可能会或可能不会预装在Linux系统上。

要检查系统上是否安装了locate实用程序,请打开终端,输入locate,然后按Enter。如果安装了软件包,系统将显示*locate: no pattern to search for specified,否则您将看到类似的信息locate command not found*。

==易错:==locate在安装时候的名字不叫locate,而是mlocate

# 1.3.locate在Ubuntu和Debian上安装

sudo apt update
sudo apt install mlocate
1
2

# 1.4.locate在RedHat系

locate在CentOS和Fedora上安装
1

# 2.⭐️grep -r模仿AnyTxt

使用grep搜索代码在文本中的位置(⭐️完全复现AnyTxt)

以递归的方式查找符合条件的文件

例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为

-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。

-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

grep -r update /etc/acpi 
1

# 2.1.(需安装)最快的文本搜索神器ripgrep - grep的最好代替者

# 2.2.grep不查找有些文件夹

使用 --exclude-dir 选项

//这个是不行的
grep -r "\-O3" --exclude-dir={share/ , install-cmake/} 

//这个是🉑️可以的「意思是不能空格」
grep -r "\-O3" --exclude-dir={share/,install-cmake/}
1
2
3
4
5

# 2.3.grep不查找多个文件示例

附赠一个,排除扩展名为 java 和 js 的文件

--exclude=*.{java,js}
1

# 3.ctags代码

# 4.Linux下ll或者ls按时间排序查看文件命令

场景:查看,我哪些文件是最近新增

# 4.1.最近修改的在前-按降序,即最近的修改ls -lt

  • 等价于ll -t
  • -t的意思-t sort by modification time,newest first即按修改时间对文件进行排序,默认是==最近修改的在前==
moudaen@morton:~$ ls -lt
total 19836
-rw-r--r-- 1 moudaen 65536        7 Nov 13 15:30 test.txt
-rw-r--r-- 1 moudaen 65536 20267062 Nov 11 17:44 Gender.war
drwxr-xr-x 2 moudaen 65536     4096 Nov 11 17:44 test
-rw-r--r-- 1 moudaen 65536     5258 Nov 11 11:44 MyApp.java
1
2
3
4
5
6

# 4.2.最近修改的在后ls -ltr

  • 就是在前面基础上加上reverse
moudaen@morton:~$ ls -lrt
total 19836
-rw-r--r-- 1 moudaen 65536     5258 Nov 11 11:44 MyApp.java
drwxr-xr-x 2 moudaen 65536     4096 Nov 11 17:44 test
-rw-r--r-- 1 moudaen 65536 20267062 Nov 11 17:44 Gender.war
-rw-r--r-- 1 moudaen 65536        7 Nov 13 15:30 test.txt
1
2
3
4
5
6

# 4.linux 按文件大小排

  • 1.按文件大小查看文件
a.降序:ls -lsh
-l表示以长格式显示,即列出文件详细信息如上面的格式。

-s表示排序,默认是降序排列。

-h表示将文件大小转为我们习惯的M,K等为单位的大小
1
2
3
4
5
6
  • b.升序:ls -lrsh
-r表示reverse的意思,这里就是reverse order倒序,默认是降序的,加上-r就反转下即为升序了。
1

# 4.1.大文件在前-降序:ls -lsh

  • -s表示排序,默认是降序排列。
  • -h表示将文件大小转为我们习惯的M,K等为单位的大小
moudaen@morton:~$ ls -lsh
total 20M
 20M -rw-r--r-- 1 moudaen 65536  20M Nov 11 17:44 Gender.war
4.0K drwxr-xr-x 2 moudaen 65536 4.0K Nov 11 17:44 test
8.0K -rw-r--r-- 1 moudaen 65536 5.2K Nov 11 11:44 MyApp.java
1
2
3
4
5

# 4.2.大文件在后-升序:ls -lrsh

  • -r表示reverse的意思,这里就是reverse order倒序,默认是降序的,加上-r就反转下即为升序了。

# 5.快速知晓文件类型-可执行文件

执行ll之后

linux文件后面带* 带的文件表示是可执行文件

  • 或者
alias l='ls -CF'
1

# 6.vim代码格式化快捷键

gg 				#当前光标跳转到首行
Shift + v 		#转为可视模式(打开)
(其实就是G)Shift + g 		#选中整个文件内容
=				#格式化
1
2
3
4

# ✅Windows下源码查看

# 1.Sourece Insight软件的快捷键

  • 查找引用:Alt+/
  • 后退: Alt+,
  • 向前:Alt+.
  • 在当前文件查找代码:Ctrl+F
  • 放大缩小代码:按住Ctrl+鼠标滚动轮

Source Insight前进和后退(返回上一步)快捷键

Sourece Insight软件的图标

  • 快速折叠和展开函数啥的定义

# 2.everything

  • 快速查找文件

# 3.AnyTxt

  • 全局查找文本

# 4.VScode快捷键

# 4.1.设置VScode快捷键,去转换宏的大小写

解决的问题:查看宏定义的英语

  • 使用Ctrl+Shift+P
  • 然后,查找转换大小写,直接设置

# 4.2.折叠+展开所有函数

解决的问题:查看宏定义的英语

  • 折叠所有函数
Ctrl + K, Ctrl + 0
另外 折叠到某一级的函数是 Ctrl + K, Ctrl + n。例如,我想折叠到第二级的函数,就输入Ctrl + K, Ctrl + 2即可。
1
2

展开所有函数

  • Ctrl + K, Ctrl + J
  • 折叠查看完毕后可以通过上述快捷键展开所有折叠的内容。十分方便。

# 4.3.函数括号跳转(格式化)

解决:ipa-pro

  • 用于解决可读性极差的代码「对于代码块的光标移动:Ctrl+Shift+\

# 4.4.声明的跳转

  • F12快捷键

# 4.5.快速格式化c和C++的代码格式

  • Windows下:shift+alt+F(format)
  • On Mac :Shift + Option + F
  • On Ubuntu :Ctrl + Shift + I

参考资料:https://blog.csdn.net/latency_cheng/article/details/80409202

# ✅项目设置

# 1.「环境变量」在Linux中将某文件夹加入PATH路径

  • PATH=$PATH:/home/whoway/bin/
whoway@XXXX:~/whoway/hcc_riscv_gcc/script$ env
SHELL=/bin/bash
省略

whoway@XXXX:~/whoway/hcc_riscv_gcc/script$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

whoway@XXX: PATH=$PATH:/home/whoway/bin/
1
2
3
4
5
6
7
8
  • export PATH=$(pwd):$PATH将当前目录加入PATH「临时」

# ✅效率工具

# 1.快速切换目录z的安装⭐️

  • 我没有安装z软件本身说明文档,但是这样也能用了
  • 参考资料:https://commandnotfound.cn/linux/1/589/z-%E5%91%BD%E4%BB%A4
XX@XXX:~/mylocal$ pwd
/home/whoway/mylocal
XX@XXX:~/mylocal$ echo '. /home/whoway/mylocal/z/z.sh' >> ~/.zshrc
XX@XXX:~/mylocal$ source ~/.zshrc
XX@XXX:~/mylocal$ echo '. /home/whoway/mylocal/z/z.sh' >> ~/.bash_profile
XX@XXX:~/mylocal$ source ~/.bash_profile
XX@XXX:~/mylocal$ cd z/
XX@XXX:~/mylocal/z$ ls
LICENSE  Makefile  README  z.1  z.sh
XX@XXX:~/mylocal/z$ z -h
z [-cehlrtx] args
1
2
3
4
5
6
7
8
9
10
11

# 1.1.如何保证,我们每次登录新bash生效z命令

  • 修改.bash_profile后如何生效?
  • 每次source ~/.bash_profile好麻烦,如何让他每次bash可以
  • 修改b即可!vim .bashrc

# 2.省时+省力的history快捷键

下面是的使用场景,但是这样要多敲键盘,我就用快捷键「==Ctrl+R==」

history | grep update
1

此快捷键让你对命令历史进行搜索,对于想要重复执行某个命令的时候非常有用。

  • 如果找不到的话,重复「==Ctrl+R==」可以往前翻页
  • 当找到命令后,通常再按回车键就可以执行该命令
  • 如果想对找到的命令进行调整后再执行,则可以按一下左或右方向键

参考自:History(历史)命令用法 15 例 (opens new window)

# 3.其他bash快捷键大全⭐️

  • ⭐️Ctrl+A(应该是Ahead) 和Ctrl+E(应该是End),分别代表把光标移动到最前和最后

  • ⭐️Ctrl+U 和 Ctrl+K,分别代表光标处往前光标处往后删除

  • Ctrl + ?/ 撤消前一次输入

要注意,在Bash里面,快捷键可能会被写成八进制或者十六进制的形式(跟在转义符后面);

脚本文件中的快捷键并不是总能起作用的。

另外快捷键有个规律,Ctrl开头的快捷键一般是针对字符的,而Alt开头的快捷键一般是针对词

  • alt-backspace
    • 删除光标所在位置到词开头的所有内容。
  • alt-D
    • 删除光标所在位置到光标所在词的结尾位置的所有内容(如果光标是在词开头,则删除整个词)

参考资料:https://gist.github.com/zhulianhua/befb8f61db8c72b4763d

Bash 快捷键大全:https://www.runoob.com/w3cnote/bash-shortcut.html

# 4.对git diff生成的代码,patch,删除1列+

  • 用vim删除1列:https://blog.csdn.net/shixin_0125/article/details/79692793

    • 使用,可视化模式,Ctrl+V
  • 方法2

cat ttt | cut -c 2- > temp			#我们保留第2列到最后的,并且重定位
cat ttt | cut -c 2-					#我们保留第2列到最后的
1
2

# 参考资料