系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理

文章目录

  • 系列文章目录
  • 前言
  • 一、linux的认识
    • 1.Linux的应用领域
    • 2.Linux学习建议
    • 3.Linux的系统文件架构介绍
  • 二、用户开机、重启、登录、注销命令
    • 1.关机&重启命令
    • 2.用户登录和注销
  • 三、Linux用户管理
    • 1.添加用户
    • 2.给用户指定或者修改密码
    • 3.删除用户
    • 4.查询用户信息
    • 5.切换用户
    • 6.用户组
    • 注意
  • 四、实用文件操作指令(常用)
    • 1.帮助指令
      • (1)man 获得帮助信息
      • (2)help 指令
    • 2.文件目录类指令(最常用)
      • 1、pwd 指令
      • 2、ls 指令
      • 3、cd 指令
      • 4、mkdir 指令
      • 5、rmdir 指令
      • 6、touch 指令
      • 7、cp 指令
      • 8、rm 指令
      • 9、mv 指令
      • 10、cat 指令
      • 11、more 指令
      • 12、less 指令
      • 13、> 指令 和 >> 指令
      • 14、echo 指令
      • 15、head 指令
      • 16、tail 指令
      • 17、ln 指令
      • 18、history 指令(crtl+r)
      • 19、date 指令
      • 20、cal 指令
      • 21、find 指令
      • 22、locate 指令
      • 23、grep 指令和 管道符号 |
      • 24、gzip/gunzip 指令
      • 25、zip/unzip 指令
      • 26、tar 指令
      • 27、kill 命令
    • 3.Linux命令查询
  • 五、vi、vim编辑器的使用(常用)
    • 1.介绍
    • 2.正常模式
    • 3.插入模式/编辑模式
    • 4.命令行模式
    • 5.快捷键的使用
      • (1)复制粘贴,在正常模式下
      • (2)删除,正常模式下
      • (3)撤销,正常模式
      • (5)快捷键到底文档的最末行、最首行,正常模式
      • (6)查找, 在命令行模式
      • (7)设置文件的行号,取消文件的行号,命令行模式
      • (8)编辑文件,将光标移动到第 n 行,命令模式
    • 6.vim 插件攻略
      • Vundle:
      • YouCompleteMe:
  • 六、shell脚本编程(.sh)
    • 1.Shell的介绍
    • 2.硬件、内核、shell、应用程序的关系
    • 3.编写shell脚本
      • (1)工具
      • (2)脚本格式要求
      • (3)语法
        • (1)把一堆命令行和逻辑一起写进去一个.sh文件里面,一键启动,相当于ROS中的lanch文件
        • (2)shell变量
          • (1)Shell的用户和系统变量
          • (2)位置参数变量
          • (3)预定义变量
        • (3)算术运算符
        • (4)条件判断与判断流程
        • (5)read读取控制台输入
        • (6)系统函数与自定义函数
        • (7)程序注释
      • (4)示例
        • 示例1:获取参数
        • 示例2:遍历目录+常用指令操作
    • 4.shell脚本的常用执行方式
      • (1)方式1
      • (2)方式2
  • 七、PRM包、YUM包,apt软件管理
    • 1.rpm包
      • (1)介绍
      • (2)rpm包的简单查询指令
      • (3)rpm包名基本格式
      • (4)卸载rpm包
      • (5)安装rpm包
    • 2.yum
      • (1)介绍
      • (2)yum的基本指令
    • 3.apt软件管理
      • (1)apt介绍
      • (2)更新Ubuntu软件下载地址
      • (3)Ubuntu软件操作的相关命令
  • 八、远程登陆(常用)
    • 1.基本概念
    • 2.Xshell5 和 Xftp远程登陆到Ubuntu
    • 3.ssh远程登录Ubuntu
  • 九、linux自带编译器
    • 1.g++ -> Makefile -> Cmak的关系
    • 2.g++编译器
      • (1)安装 g++
      • (2)g++编译流程
    • 3.Makefile
      • Makefile 介绍
      • Makefile 语法
    • 4.CMake
      • 安装 CMake
      • CMake 编译流程
  • 十、定时任务调度
  • 十一、磁盘分区挂载(不常用)
  • (1)分区基础知识
  • (2)磁盘操作命令
  • (3)增加一块硬盘步骤
  • 十二、网络配置
    • 1.查看网络IP和网关
    • 2.linux网络环境配置
    • 3.ping 测试主机之间网络连通性
  • 十三、进程管理
    • 1.基本介绍
    • 2.显示系统执行的进程
    • 3.终止进程kill和killall
    • 使用过的 shell 命令
    • 使用过的 vim 命令

前言

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!

继嵌入式的单片机的寄存器开发库开发FreeRTOS实时操作系统开发,本文讲讲也顺便记录一下更偏向于PC的linux(ubuntu)系统开发

本文先对**linux(ubuntu)实操相关知识记录(第一篇)**做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章


提示:以下是本篇文章正文内容

一、linux的认识

Linux 是一款操作系统,免费,开源, 安全,高效,稳定

1.Linux的应用领域

1、Linux 应用层开发(需求比较大,用C语言)
JavaEE、大数据、pythoh、c/c++、php

2、Linux 运维工程师
服务器(主要强项)
【防盗标记–盒子君hzj】

3、linux底层开发(做驱动开发)
.
.

2.Linux学习建议

1、先建立一个整体框架,然后细节
2、需要掌握所有的 Linux 指令,要学会查询手册和百度(学会主要的,背和用)
3、先 知道怎么做 ,再 知道为什么
4、适当的囫囵吞枣
5、Linux 不是编程,重点是实际操作,各种常用指令要玩的溜
.
.

3.Linux的系统文件架构介绍

linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”
在 Linux 世界里,一切皆文件,文件夹目录
/bin(重要)【是binary的缩写,用来存放最常用的命令】
/sbin【是super user binary的意思,用来存放管理员管理系统的常用指令和程序】
/home(重要)【用来存放配普通用户user的的主目录,一般每个用户都会有自己的目录而且以椅子的名字命名】
/root(重点)【该目录是系统管理员,也称超级管理员用户的主目录】
/boot(重要)【用于存放linux系统启动的核心文件,包括一些镜像和镜像文件】
/tmp(重要)【用于存放临时文件】【防盗标记–盒子君hzj】
/dev(重要)【把所有的硬件用文件的形式管理起来】
/mnt(重点)【让用户临时挂载的文件系统】
/media(重要)【识别linux系统的设备,如U盘、光驱】
/var(重要)【存放系统可扩充的东西,包括日志】
/opt(重要)【存放安装包的】
/usr/local(重要)【存放安装软件后的软件目录】
/proc(一般不要动)【存放虚拟目录,管理内存的】
/srv(一般不要动)【用于linux启动服务的】
/sys(一般不要动)【存放系统内核的】

注意:管理的时候规划好,不要乱放文件

二、用户开机、重启、登录、注销命令

如果远程只能使用一个终端进行访问时才会用这种方法,【防盗标记–盒子君hzj】在真正运用中远程可以连接整个操作界面而不是仅仅一个终端,这时候用桌面操作更加便捷

1.关机&重启命令

shutdown

shutdown -h now : 表示立即关机
shutdown -h 1 : 表示 1 分钟后关机
shutdown -r now:  立即重启

reboot

就是重启系统

注意:当我们关机或者重启时,【防盗标记–盒子君hzj】都应该先执行以下 sync 指令,把内存的数据写入磁盘,防止数据丢失
.
.

2.用户登录和注销

注销(远程登陆)用户:在提示符下输入 logout

注意:
1、登录时尽量少用 root 帐号登录,1)可以利用普通用户登录,登录后再用”su - 用户名’命令来切换成系统管理员身份.
2、ogout 注销指令在图形运行级别无效,在 运行级别 3 (远程连接)下有效
.
.

三、Linux用户管理

如果远程只能使用一个终端进行访问时才会用这种方法,【防盗标记–盒子君hzj】在真正运用中远程可以连接整个操作界面而不是仅仅一个终端,这时候用桌面操作更加便捷

1.添加用户

1、基本语法:useradd    [选项] 用户名【useradd hzj】
2、基本语法:useradd -d 指定目录   新的用户名【useradd -d/home/a hzj】

2.给用户指定或者修改密码

基本语法:passwd 用户名

3.删除用户

1、删除用户 xm,但是要保留家目录:基本语法:userdel 用户【userdel hzj】
2、删除用户 xh 以及用户主目录:基本语法:userdel -r 用户【userdel -r hzj】(建议)

4.查询用户信息

基本语法:id 用户名
注意:当用户不存在时,返回”无此用户”

5.切换用户

基本语法:su   –切换用户名
按exit能回到原来的用户中
注意:在操作 Linux 中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户【防盗标记--盒子君hzj】

6.用户组

介绍:类似于角色,系统可以对有共性的多个用户进行统一的管理
增加组:基本语法:groupadd 组 名【groupadd hzj】
删除组:基本语法:groupdel 组 名【groupdel hzj】
增加用户时直接加上组:基本语法:useradd-g 用户组 用户名【useradd-g abc hzj】
修改用户的组:基本语法:usermod-g 用户组 用户名【useradd-g abc hzj】
/etc/passwd 文件:用户(user)的配置文件,记录用户的各种信息,每行的含义:用户名:口令:用户标识号(id):组标识号(id):注释性描述:主目录:登录 Shell
/etc/group 文件:每行含义:组(group)的配置文件,记录 Linux 包含的组的信息.组名:口令:组标识号:组内用户列表

注意

1、Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。2、Linux 的用户需要至少要属于一个组【防盗标记--盒子君hzj】

.
.
.

四、实用文件操作指令(常用)

Shell 是一个应用程序,它负责接收用户输入的命令,然后根据命令做出相应的动作

1.帮助指令

介绍:当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法,直接百度指令用法更为简单有效

(1)man 获得帮助信息

基本语法:man [命令或配置文件](功能描述:获得帮助信息)【man ls】

(2)help 指令

基本语法help 命令 (功能描述:获得 shell 内置命令的帮助信息)【help ls】

2.文件目录类指令(最常用)

以下这些指令既可以单独运行,也可以按照语法要求组合起来在运行

1、pwd 指令

功能描述:显示当前工作目录的绝对路径
基本语法:pwd

2、ls 指令

功能描述:查看当前目录信息 ,列出路径或当前目录下的所有文件信息【防盗标记--盒子君hzj】
基本语法:ls [ 选 项][目录或是文件]常用选项
-a :显示当前目录所有的文件和目录,包括隐藏的。
-al:以列表的方式显示信息示例
ls / 显示根目录下的所有文件及文件夹。
ls -l /data 显示/data 路径下的所有文件及文件夹的详细信息。
ls -l 显示当前路径下的所有文件及文件夹的详细信息
ls *l wc 显示当前目录下面的文件数量

3、cd 指令

功能描述
切换到指定目录,用于切换当前用户所在的路径,其中路径可以是绝对路径也可以是相对路径基本语法:cd[参数]常用参数
绝对路径(从根目录开始定位)
相对路径:从当前工作目录定位到所需的目录常用指令
cd ~ 或者 cd :回到自己的home目录
cd .. 回到当前目录的上一级目录
使用绝对路径切换到 root 目录:cd/root
使用相对路径到/root 目录:cd   ../../root【防盗标记--盒子君hzj】示例
cd /system/bin 表示切换到/system/bin 路径下。
cd logs 表示切换到 logs 路径下。
cd / 表示切换到根目录。
cd ../ 表示切换到上一层路径。

4、mkdir 指令

功能描述:mkdir 是 make directory 的缩写,用于创建文件夹目录
基本语法:mkdir[选项]要创建的目录(文件夹)
常用选项:-p :创建多级目录常用指令
创建一个目录 /home/dog【mkdir  /home/dog】
创建多级目录 /home/animal/tiger【mkdir -p  /home/animal/tiger 】(创建多级目录要加上-p)示例
mkdir /data/path 在/data 路径下创建 path 文件夹。
mkdir -p a/b/c 参数 -p 用于创建多级文件夹,这句命令表示在当前路径下创建文件夹 a, 而 a 文件夹包含子文件夹 b,b 文件夹下又包含子文件夹 c

5、rmdir 指令

功能描述:指令删除空目录基本语法:rmdir[选项]要删除的空目录常用指令
删除一个目录 /home/dog【rmdir /home/dog】注意:rmdir 删除的是空目录,如果目录下有内容时无法删除的。如果需要删除非空目录,需要使用   rm -rf   删除的目录

6、touch 指令

功能描述:指令创建空文件
基本语法:touch 文件名称【touch hello.txt】【防盗标记--盒子君hzj】

7、cp 指令

基本语法:touch 文件名称【touch hello.txt】
基本语法:cp [选项] source dest
常用选项::递归复制整个文件夹基本用法:
递归复制整个文件夹,举例将/home/test 整个目录拷贝到 /home/zwj 目录【cp -r test/zzwj/】
将  /home/aaa.txt 拷贝到    /home/bbb 目录下[拷贝单个文件]【cp aaa.txt bbb/】示例
cp /data/logs /data/local/tmp/logs 复制/data 路径下的 logs 到/data/local/tmp 路径下
cp 1.sh /sdcard/ 复制当前路径下的 1.sh 到/sdcard 下

8、rm 指令

功能描述:rm 是 remove 的缩写,用于删除文件或文件夹
基本语法:rm [选项]要删除的文件或目录常用选项
-r :递归删除整个文件夹
-f : 强制删除不提示基本用法
将 /home/aaa.txt  删除【rmaaa.txt】
递归删除整个文件夹 /home/bbb【rm -r bbb/】或者【rm -rf bbb/】【防盗标记--盒子君hzj】示例
rm -rf path 删除 path。
rm test.txt 删除 test.txt

9、mv 指令

功能描述:移动文件与目录或重命名基本语法
mv oldNameFile newNameFile(功能描述:重命名)
mv /temp/movefile /targetFolder (功能描述:移动文件)基本用法
将 /home/aaa.txt  文件 重新命名为 pig.txt【mv aaa.txt pig.txt】
/home/pig.txt文件 移动到 /root 目录下【mv pig.txt /root/】

10、cat 指令

功能描述:查看文件内容,是以只读的方式打开,读取文件内容及拼接文件
基本语法:cat    [选项] 要查看的文件常用选项
-n :显示行号基本用法
打开/etc/profile文件内容,并显示行号【cat -n /etc/profile | more】
注意:cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上  管道命令 | more示例
cat /sys/devices/system/cpu/online 读取 /sys/devices/system/cpu/路径下online 文件内容

11、more 指令

功能描述:是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键,详见操作说明基本语法;more 要查看的文件基本用法:采用 more 查看文件/etc/profile【more /etc/profile】快捷键
空白键:表示向下翻一页
Enter:表示向下翻一行
q:离开阅读该文件

12、less 指令

功能描述:指令用来分屏查看文件内容,它的功能与 more 指令类似,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。基本语法:less 要查看的文件基本用法:采用 less 查看一个大文件文件 /opt/aaatxt【less aaa.txt】快捷键
packdowm:向下翻一页
packup:向上翻一页
q:离开less程序

13、> 指令 和 >> 指令

功能描述
> 输出重定向 : 会将原来的文件的内容覆盖【防盗标记--盒子君hzj】
>> 追加: 不会覆盖原来文件的内容,而是追加到文件的尾部基本语法
ls -l >文件(功能描述:列表的内容写入文件 a.txt 中(覆盖写))【>ls -l .a.txt】
ls -al >>文件   (功能描述:列表的内容追加到文件 aa.txt 的末尾)【>> -l a.txt】
cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)【cat /etc/profile>a.txt】

14、echo 指令

功能描述:输出内容到控制台
基本语法:echo[选项][输出内容]
基本用法:使用 echo 指令输出环境变量,输出当前的环境路径【echo #PATH】

15、head 指令

功能描述:用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容基本语法
head  文件(功能描述:查看文件头 10 行内容)
head -n 5 文件(功能描述:查看文件头 5 行内容,5 可以是任意行数)【防盗标记--盒子君hzj】基本用法
查看/etc/profile 的前面 5 行代码【head -n 5 /etc/profile】

16、tail 指令

功能描述:用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容基本语法
tail 文件 (功能描述:查看文件后 10 行内容)【tail /etc/profile】
tail -n 5 文件 (功能描述:查看文件后 5 行内容,5 可以是任意行数)【tail -n 5 /etc/profile】
tail -f 文件 (功能描述:实时追踪该文档的所有更新,工作经常使用)【tail -nf /etc/profile】

17、ln 指令

功能描述:软链接指令,软连接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径基本语法:ln -s [原文件或目录] [软链接名]
基本用法
在/home 目录下创建一个软连接 linkToRoot,连接到 /root 目录【ln -s /root linkToroot】【防盗标记--盒子君hzj】
删除软连接 linkToRoot【rm -tf linkToroot】

18、history 指令(crtl+r)

功能描述:查看已经执行过历史命令,也可以执行历史指令
基本语法:history基本用法
显示所有的历史命令【history】
显示最近使用过的 10 个指令【history 10】

19、date 指令

功能描述:设置日期、显示当前日期基本语法
date(功能描述:显示当前时间)
date +%Y(功能描述:显示当前年份)
date +%m(功能描述:显示当前月份)
date +%d(功能描述:显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)
date    -s  字符串时间

20、cal 指令

功能描述:查看日历指令【防盗标记--盒子君hzj】
基本语法:cal [选项]基本用法
显示当前日历【cal】
显示 2020 年日历【cal 2020】

21、find 指令

功能描述:find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。基本语法:find[搜索范围][选项]选项说明
name<查询方式>,以指定的文件名搜索文件
user<用户名>,以指定的用户名查找所有文件
size<文件大小>,以指定文件大小查找文件基本用法
按文件名:根据名称查找/home 目录下的 hello.txt 文件 【find /home -name hello.txt】
按拥有者:查找/opt 目录下,用户名称为 nobody 的文件【find /opt-user nobody】
查找整个 linux 系统下大于 20m 的文件(+n  大于 -n 小于   n 等于)【find / size +20M】

22、locate 指令

功能描述:locaate 指令可以快速定位文件路径【防盗标记--盒子君hzj】
基本语法:locate 搜索文件注意:
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库。基本用法
使用 locate 指令快速定位 hello.txt 文件所在目录【updatedb】【locate hello.txt】

23、grep 指令和 管道符号 |

功能描述:在文件里面查找关键字,grep 过滤查找,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。基本语法:grep [选项] 查找内容 源文件常用选项
-n 显示匹配行和行号
- i忽略字母大小基本用法
请在  hello.txt  文件中,查找"yes"所在行,并且显示行号【cat hello.txt | grep -n yes】(区分字母大小)、【cat hello.txt | grep -ni yes】(不区分字母大小)

24、gzip/gunzip 指令

功能描述:压缩和解压类基本语法
gzip 用于压缩文件(不能打包:压缩文件夹)
gunzip  用于解压的
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文 件.gz(功能描述:解压缩文件命令)基本用法
gzip 压缩, 将 /home 下的 hello.txt 文件进行压缩【gzip hello.txt】
gunzip 压缩, 将 /home 下的 hello.txt.gz 文件进行解压缩【gunzip hello.txt.gz】注意:当我们使用 gzip  对文件进行压缩后,不会保留原来的文件。【防盗标记--盒子君hzj】

25、zip/unzip 指令

功能描述::压缩和解压类基本语法
zip 用于压缩文件 zip[选项] XXX.zip将要压缩的内容(功能描述:压缩文件和目录的命令)
nzip 用于解压的,unzip[选项] XXX.zip (功能描述:解压缩文件)常用选项
zip常用选项-r:递归压缩,即压缩目录
unzip常用选项-d<目录> :指定解压后文件的存放目录基本用法
将 /home 下的 所有文件进行压缩成 mypackage.zip【zip -r mypackage.zip/home/】
将 mypackge.zip 解压到 /opt/tmp 目录下【unzip -d /opt/tmp  mypackge.zip】

26、tar 指令

功能描述:打包指令,最后打包后的文件是 .tar.gz 的文件【防盗标记--盒子君hzj】基本语法:tar [选项] xxx.tar.gz 打包的内容常用选项
-c :产生.tar打包文件
-v :显示详细信息
-f :指定打包后的文件名
-z :打包时同时压缩
-x :解包tar文件基本用法
压缩多个文件,将  /home/a1.txt 和  /home/a2.txt 压缩成   a.tar.gz【tar -zcvf a.tar a1.txt a2.txt 】
将/home 的文件夹 压缩成 myhome.tar.gz【tar -zcvf myhome.tar.gz /home/】
将  a.tar.gz解压到当前目录 【tar -zxvf a.tar.gz】
将 myhome.tar.gz解压到 /opt/ 目录下【tar -zxvf a.tar.gz--C /opt/】

27、kill 命令

功能描述:结束当前进程基本用法
先通过输入命令 ps au 查看进程,找到需要终止进程的 PID 再通过 kill PID 即可【防盗标记--盒子君hzj】

.
.

3.Linux命令查询

直接百度指令用法更为简单有效
https://www.linuxcool.com/
https://man.linuxde.net/

五、vi、vim编辑器的使用(常用)

1.介绍

所有的 Linux 系统都会内建 vi 文本编辑器。Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本小型的文件或者脚本可以用vi\vim,快速查文件内容(log)vim是十分好用的,
工程上的文件我们一般可以用vscode进行编辑,

2.正常模式

以 vim 打开一个档案就直接进入一般模式了(这是默认的模式),【防盗标记--盒子君hzj】
在编辑模式和命令行模式下一般来说按 **Esc**可以退出到正常可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理你的文件数据。

3.插入模式/编辑模式

程序员可以输入内容
在正常模式下,一般来说按 i进入编辑模式

4.命令行模式

在正常模式下,一般来说按 /进入编辑模式

w写入、q退出、wq写入并退出、q!退出不保存

在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!

5.快捷键的使用

(1)复制粘贴,在正常模式下

拷贝当前行:yy
拷贝当前行向下的 5 行:5yy
粘贴:p

(2)删除,正常模式下

删除当前行:dd
删除当前行向下的 5 行: 5dd

(3)撤销,正常模式

输入u

(5)快捷键到底文档的最末行、最首行,正常模式

到底文档的最末行[G]
最首行[gg]

(6)查找, 在命令行模式

/关键字
回车  查找  ,   输入 n 就是查找下一个【防盗标记--盒子君hzj】

(7)设置文件的行号,取消文件的行号,命令行模式

设置文件的行号: set nu
取消文件的行号:set nonu

(8)编辑文件,将光标移动到第 n 行,命令模式

第一步:显示行号 :set nu
第二步:输入 20 这个数
第三步:    输入 shift+g

6.vim 插件攻略

Vundle:

用于管理 vim 插件,Vundle 允许你安装新的插件、配置已有的插件、更新插件配置、搜索安装的插件和清理不使用的插件

YouCompleteMe:

自动补全插件,一个随键而全的、支持模糊搜索的、高速补全的插件

六、shell脚本编程(.sh)

1.Shell的介绍

Shell是一个命令行解释器,它向Linux内核发送请求,用户可以用Shell来启动、挂起、停止甚至是编写一些程序,脚本常用于获取参数,循环遍历

2.硬件、内核、shell、应用程序的关系

可以认为shell就是操作内核的一个窗口就行了,够用了对于应用层开发【防盗标记–盒子君hzj】

3.编写shell脚本

(1)工具

使用vim编辑器或者vscode编辑器

(2)脚本格式要求

1) 脚本以#!/bin/bash开头
2)输入各种我们需要的命令行

(3)语法

(1)把一堆命令行和逻辑一起写进去一个.sh文件里面,一键启动,相当于ROS中的lanch文件

(2)shell变量

(1)Shell的用户和系统变量
1)用户自定义变量
2)系统变量:$HOME、$PWD、$SHELL、$USER等等。比如: echo $HOME

(2)定义Shell变量的规则

1) 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。【防盗标记--盒子君hzj】
3) 变量名称一般习惯为大写
2) 等号两侧不能有空格

(3)定义、撤销、声明shell变量的方法

1)定义变量:变量=值
2)撤销变量:unset 变量
3) 声明静态变量:readonly 变量

(4)将命令的返回值赋给变量方法

1)A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
2)A=$(ls -la) 等价于反引号

(5)设置环境变量

可把变量提升为全局环境变量,可供其他shell程序使用,环境变量相当于系统的全局变量
(1)基本语法
1) export 变量名=变量值 (功能描述:将shell变量输出为环境变量)
2) source 配置文件(功能描述:让修改后的配置信息立即生效)
3) echo $变量名(功能描述:查询环境变量的值)(2)步骤
1) 在/etc/profile文件中定义环境变量XXX
2) 可查看环境变量XXX的值
3) 在另外一个shell程序中使用环境变量XXX(3)注意
在输出环境变量XXX前,需要让其生效source /etc/profile【防盗标记--盒子君hzj】
(2)位置参数变量
介绍
当我们执行一个shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量比如 :./myshell.sh 100 200 %2c 这个就是一个执行 shell 的命令行,可以在 myshell 脚本中获取到参数信息基本语法
$n(功能描述: n 为数字, $0 代表命令本身, $1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10}$*(功能描述:这个变量代表命令行中所有的参数, $* 把所有的参数看成一个整体$@(功能描述:这个变量也代表命令行中所有的参数, 不过 $@ 把每个参数区分对待$#(功能描述:这个变量代表命令行中所有参数的个数)
(3)预定义变量
基本介绍
就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用基本语法
$$(功能描述:当前进程的进程号(PID))
$!(功能描述:后台运行的最后一个进程的进程号(PID))
$?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了【防盗标记--盒子君hzj】

(3)算术运算符

基本语法
方法一: “$((运算式 ))” 或 “$[ 运算式 ]”方法二: expr +,-,\*, /, %分别表示加减乘除和取余
注意:expr命令的运算符间要有空格

(4)条件判断与判断流程

(1)判断条件

(1)判断条件基本语法
[ condition ](注意condition前后要有空格)
返回结果:非空返回true,可使用$?验证(0为true,>1为false)(2)判断条件应用实例
[ atguigu ]        返回true
[ ]                       返回false
[condition] && echo OK || echo notok    条件满足,执行后面的语句【防盗标记--盒子君hzj】(3)常用判断条件1) 两个整数的比较
=  字符串比较
-lt  小于
-le  小于等于
-eq  等于
-gt  大于
-ge  大于等于
-ne  不等于2) 按照文件权限进行判断
-r 有读的权限
-w  有写的权限
-x 有执行的权限3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录

(2)判断流程

1)if 语句

基本语法
方式一:
if [ 条件判断式 ];then 【防盗标记--盒子君hzj】
程序
fi方式二【推荐】:
if [ 条件判断式 ]
then
程序
elif [条件判断式]
then
程序
fi

(2)case语句

基本语法
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac

(3)for语句

基本语法
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done

(4)while语句

基本语法
while [ 条件判断式 ] 【防盗标记--盒子君hzj】
do
程序
done

(5)read读取控制台输入

基本语法
read(选项)(参数)选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了参数:
变量:指定读取值的变量名

(6)系统函数与自定义函数

1、函数介绍shell编程和其它编程语言一样,有系统函数,也可以自定义函数2、系统函数
(1)basename函数功能:返回完整路径最后 / 的部分,常用于获取文件名基本语法basename [pathname] [suffix]basename [string] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。选项:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。(2)dirname函数功能:返回完整路径最后 / 的前面的部分,常用于返回路径部分基本语法:dirname文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))3、自定义函数基本语法function ] funname(){Action;[return int;]}调用直接写函数名:funname [值]

(7)程序注释

(1)单行注释:在命令行之前加上“#”(2)多行注释:
:<<!
...
...
...
!

(4)示例

示例1:获取参数

#!/bin/sh
a="hello world!"
num=2
echo "a is : $a num is : ${num}nd"运行结果:
a is : hello world! num is : 2nd可以看出,用$来获取变量值

示例2:遍历目录+常用指令操作

问题:
1. 切换工作目录至/tmp
2. 依次向/tmp 目录中的每个文件或子目录问好(Hello,log)【防盗标记--盒子君hzj】
3. 统计/tmp 目录下共有多个文件,并显示出来#!/bin/bash
cd /tmp
for i in /tmp/*
do
echo "Hello , $i"
done
count=`ls -l|grep '^-'|wc -l`
echo "====file_count:$count===="

4.shell脚本的常用执行方式

(1)方式1

1)首先要赋予.sh 脚本权限
如果脚本文件没有可执行权限时不可以执行的
【使用chmod指令】
命令:chmod+x xxx.sh
2)执行脚本

(2)方式2

不用赋予脚本+x权限,直接执行即可
用绝对路径来执行:(sh+脚本)命令:sh ./root/shell/myshell.sh
用相对路径来执行:(sh+脚本)命令:sh ./myshell.sh

.
.

七、PRM包、YUM包,apt软件管理

1.rpm包

(1)介绍

一种用于互联网下载包的打包及安装工具,它生成具有.RPM扩展名的文件,类似windows的setup.exe

(2)rpm包的简单查询指令

(1)rpm -qa :查询所安装的所有rpm软件包
rpm -qa | more
rpm -qa | grep X [rpm -qa | grep firefox ](2)rpm -q 软件包名 :查询软件包是否安装【防盗标记--盒子君hzj】
rpm -q firefox(3)rpm -qi 软件包名 :查询软件包信息
rpm -qi file(4)rpm -ql 软件包名 :查询软件包中的文件
rpm -ql firefox(5)rpm -qf 文件全路径名 查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log

(3)rpm包名基本格式

一个rpm包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
名称:firefox
版本号:45.0.1-1
适用操作系统: el6.centos.x86_64

(4)卸载rpm包

基本语法:rpm -e RPM包的名称
1) 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。

(5)安装rpm包

rpm -ivh RPM包全路径名称
参数说明
i=install 安装
v=verbose 提示
h=hash 进度条

2.yum

(1)介绍

Yum 是一个Shell前端软件包管理器。基于RPM包管理,能够从指定 的服务器自动下载RPM包并且安装,
可以自动处理依赖性关系,并 且一次安装所有依赖的软件包【防盗标记--盒子君hzj】
使用YUM的前提是可以联网

(2)yum的基本指令

(1)查询yum服务器是否有需要安装的软件指令
yum list|grep xx软件列表(2)安装指定的yum包
yum install xxx 下载安装

3.apt软件管理

(1)apt介绍

apt是Advanced Packaging Tool的简称,是一款安装包管理工具。
在Ubuntu下,我们可以使用apt命令可用于软件包的安装、删除、清理等,类似于Windows中的软件管理工具

(2)更新Ubuntu软件下载地址

APT采用的 C/S 模式,也就是客户端 服务器模式,我们的 PC 机作为客户端,当需要下载软件的时候就向服务器请求更新Ubuntu软件下载地址的目的是提高网络通讯的速度,加快下载和安装的速度
方法一
翻墙,直接用美国的网络方法二
下载地址换为中国的镜像源。镜像源可以理解为提供下载 软件的地方,
比如Android手机上可以下载软件的安卓市场;iOS手机上可 以下载软件的AppStore

(3)Ubuntu软件操作的相关命令

(1)较常用的指令

(1)更新源:sudo apt-get update
(2)安装包:sudo apt-get install package
(3)删除包:sudo apt-get remove package
(4)获取包的相关信息,如说明、大小、版本等:sudo apt-cache show package
(5)下载该包的源代码:sudo apt-get source package

(2)拓展指令

(1)搜索软件包:sudo apt-cache search package
(2)重新安装包:sudo apt-get install package --reinstall
(3)修复安装:sudo apt-get -f install
(4)删除包,包括配置文件等:sudo apt-get remove package --purge
(5)安装相关的编译环境:sudo apt-get build-dep package
(6)更新已安装的包sudo apt-get upgrade
(7)升级系统sudo apt-get dist-upgrade
(8)了解使用该包依赖那些包sudo apt-cache depends package
(9)查看该包被哪些包依赖sudo apt-cache rdepends package

.
.

八、远程登陆(常用)

远程连接及可以仅仅连接一个终端,又可以连接一个桌面的操作界面,当然后者更好【防盗标记–盒子君hzj】

1.基本概念

linux 服务器是开发小组共享的,正式上线的项目是运行在公网的,因此程序员需要远程登录到 ubuntu 进行项目管理或者开发
远程登录客户端有 Xshell5, Xftp5 , 我们学习使用 Xshell5 和 Xftp , 其它的远程工具大同小异.

2.Xshell5 和 Xftp远程登陆到Ubuntu

不常用了

3.ssh远程登录Ubuntu

(1)ssh介绍

SSH为Secure Shell的缩写靠,专为远程登录会话和其他网络服务提供安全性的协议。
常用于远程登录,以及用户之间进行资料拷贝

(2)ssh原理

使用SSH 服务,需要安装相应的服务器和客户端。
客户端和服务器的关系:如果 A 机器想被B 机器远程控制,
那么,A 机器需要安装 SSH 服务器, B 机器需要安装 SSH 客户端

(3)安装SSH和启用

(1)安装SSH:【指令为:sudo apt-get install openssh-server】
执行上面指令后,在当前这台Linux上就安装了SSH服务端和客户端(2)启用SSH:【指令为:service sshd restart】
执行上面的指令,就启动了 sshd 服务。会监听端口22

(4)从linux系统客户机远程登陆linux系统服务机【防盗标记–盒子君hzj】

基本语法【ssh 用户名@IP】
例如:ssh atguigu@192.168.188.130
使用ssh访问,如访问出现错误。可查看是否有该文件 ~/.ssh/known_ssh 尝试删除该文件解决

(5)登出linux系统服务机

登出命令:exit或者logout

.
.
.

九、linux自带编译器

1.g++ -> Makefile -> Cmak的关系

不掌握 g++根本就不会写 Makefile,因为Makefile就是对 g++代码的整理,有了 Makefile,执行程序会更加快速方便。
另外 CMake 就是为了简化 Makefile 的编写,它可以自动生成 Makefile

2.g++编译器

(1)安装 g++

(1)sudo apt-get install g++
(2)安装好后也可以通过 g++ --version 查看是否安装成功
(3)Tips:ubuntu 安装后就默认安装了 g++,如果不想作死,就不要手贱去降级或者升级 g++版本。

(2)g++编译流程

(1)通过 vim 创建一个 test.cpp 文件
(2)测试代码完成后,我们来进行下编译,打开终端,在终端输入 g++ 文件名即可
g++ test.cpp
(3)在终端输入下面命令就能看到结果,这个.out 文件,实际上这是个经过相应的链接产生的可执行文件。还有个.o 文件,它是个中间文件,一般是通过编译的但还未链接

3.Makefile

Makefile 介绍

Makefile 描述了整个工程的编译、链接等规则,它定义了一系列规则来指定哪些文件需要编译以及如何编译、需要创建哪些库文件以及如何创建这些库文件、如何产生我们想要的可执行文件【防盗标记–盒子君hzj】

Makefile 语法

Makefile 包含了五个重要的东西:显示规则、隐晦规则、变量定义、文件指示和注释

4.CMake

安装 CMake

sudo apt-get install cmake
cmake --version

CMake 编译流程

1.准备自己编写的源程序文件
2.编写 CMake 配置文件 CMakeLists.txt,我们可以认为CMakeLists.txt 就是 CMake 所处理的"代码"。
3.执行命令 cmake path 生成 Makefile,其中 path 是 CMakeLists.txt所在的目录
4.使用 make 命令进行编译。

catkin_make(ROS)也类似~

十、定时任务调度

(1)定时任务调度定义
是指系统在某个时间执行的特定的命令或程序(2)任务调度分类
1)系统程序:有些重要的系统程序必须周而复始地执行。如病毒扫描等【防盗标记--盒子君hzj】
2)个别用户编写的脚本程序:个别用户希望定时执行的某些程序
【用户自己先写好脚本文件,在利用crontab命令进行定时执行】(3)基本语法
crontab [选项](4)常用选项
-e:编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
service crond restart:重启任务调度

(5)定时任务调度示例

十一、磁盘分区挂载(不常用)

在 Linux 中一般不叫“分区”而叫“挂载点”
这个步骤一般在刷系统的时候已经配置好了,如果系统没有重要的文件或者环境,要重新管理磁盘我建议重新刷一个系统还比较容易,要用到磁盘分区挂载指令的情况时系统大家都在用,或者有重要的文件或者环境,具体遇到问题,百度解决更快

(1)分区基础知识

(1)分区的方式【防盗标记–盒子君hzj】

1) mbr分区
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR最大只支持2TB,但拥有最好的兼容性2) gtp分区
1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)
2.最大支持18EB的大容量(1EB=1024 PB,1PB=1024 TB )
3.windows7 64位以后支持gtp

(2)windows下的磁盘分区
直接通过磁盘管理器就可以完成了~

(3)Linux下的磁盘分区

(1)Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录
,一个独立且唯一的文件结构,Linux 中每个分区都是用来组成整个文件系统的一部分(2)Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,
且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得【防盗标记--盒子君hzj】

(4)硬盘类型
Linux硬盘分IDE并行硬盘和SCSI串行硬盘,目前基本上是SCSI串行硬盘,现在IDE并行硬盘几乎已经停产了

.
.

(2)磁盘操作命令

1、磁盘分区命令 fdisk
2、格式化命令 mkfs
3、挂载分区命令 mount
4、卸载命令 umount
5、查看所有设备挂载情况指令:命令 :lsblk 或者 lsblk -f

.
.

(3)增加一块硬盘步骤

(1)添加硬盘若使用虚拟机,在设备列表中直接添加若仅仅使用linux系统,插入一块新的硬盘(2)分区
分区命令 fdisk /dev/sdb(3)格式化
分区命令:mkfs -t ext4 /dev/sdb1(4)挂载
设置可以自动挂载
将一个分区与一个目录联系起来

.
.

十二、网络配置

1.查看网络IP和网关

(1)查看虚拟网络编辑器
(2)修改ip地址
(3)查看网关
(4)查看windows环境的中VMnet8网络配置 (ipconfig指令)【防盗标记--盒子君hzj】

2.linux网络环境配置

(1)第一种方法(自动获取)
【适用于个人的PC】
登陆后,通过界面的来设置自动获取ip,linux启动后会自动获取IP,缺点是每次自动获取的ip地址可能不一样(2)第二种方法(指定固定的ip)
【适用于共用的服务器】
(1)直接修改配置文件来指定,并可以连接到外网(程序员推荐 ), 编辑 vi/etc/sysconfig/network-scripts/ifcfg-eth0
(2)ifcfg-eth0文件说明
(3)重启网络服务或者重启系统生效

3.ping 测试主机之间网络连通性

基本语法
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)

十三、进程管理

如果是应用开发的时候自己创建的进程,用界面的删除标志号进行删除更直观;
如果是用于服务器,后台管理很多用户的且没有界面可以操作的,只能用ps和kill命令进行操作了;

1.基本介绍

(1)基本在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号介绍
(2)每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
(3)每个进程都可能以两种方式存在的。前台与后台 ,
所谓前台进程就是用户目前的屏幕上可以进行操作的。
后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
(4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束

2.显示系统执行的进程

(1)介绍

ps命令:用来查看目前系统中,有哪些正在执行,以及它们执行的状况。 可以不加任何参数,也可以加参数

(2)ps命令行(加参数的)

(1)ps-a: 显示当前终端的所有进程
(2)ps-u: 以用户的形式,显示当前终端的所有进程
(3)ps-x: 显示当前终端的所有进程的运行参数
(4)ps -ef|grep xxx:仅仅查看xxx的相关进程,使用管道命令|grep进行过滤【防盗标记--盒子君hzj】

(3)查看终端信息显示内容
.

3.终止进程kill和killall

(1)介绍

若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill 命令来完成此项任务

(2)基本语法
(1)kill [选项] 进程号(功能描述:通过进程号杀死进程)【防盗标记–盒子君hzj】
(2)killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

(3)常用选项

-9 :表示强迫进程立即停止

(4)典型应用
案例1:踢掉某个非法登录用户
案例2: 终止远程登录服务sshd%2c 在适当时候再次重启sshd服务
案例3: 终止多个gedit 编辑器
案例4:强制杀掉一个终端


使用过的 shell 命令

cp , mv , rm , mkdir , touch , pwd , cd , ls , top , cat , tail , less , df , du , man , find , kill , sudo , cat
.

使用过的 vim 命令

wq!, dd , dw , yy , p , i

第一篇:linux(ubuntu)系统实操学习相关推荐

  1. 【 I.MX6U-ALPHA 】嵌入式Linux Ubuntu系统入门系列(二)Ubuntu 系统入门

    目录 1.Ubuntu系统初体验 1.1.开启Ubuntu虚拟机 1.2.系统设置 1.3.中文输入法 1.4.Ubuntu终端操作 2.Shell操作 2.1 Shell基本操作 2.2.常用She ...

  2. shell脚本实操学习之函数、正则表达式

    shell脚本实操学习之函数.正则表达式 shell函数 函数介绍 函数语法 函数应用 正则表达式 正则表达式介绍 特殊字符 POSIX字符 shell函数 函数介绍 在写代码的时候,我们很多人习惯从 ...

  3. Linux / Ubuntu系统查看磁盘空间及目录容量

    Linux / Ubuntu系统查看磁盘空间及目录容量 常用命令: df -hl 查看磁盘剩余空间 df -h 查看每个根路径的分区大小 参考:https://blog.csdn.net/dta050 ...

  4. linux ubuntu系统 ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)数据

    linux ubuntu系统 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)数据 ...

  5. 对接第三方系统实操经验分享

    对接第三方系统实操经验分享 前言 为使得指示性更强,有以下名词说明 A系统:是指要发起对接的我方系统,可以理解成 Client B系统:是要对接的第三方系统,可以理解成 Server 对接第三方的特殊 ...

  6. Linux ubuntu系统在线安装、启动、卸载MongoDB 5.0

    mongodb 5.0只支持64位系统,官网地址:https://www.mongodb.com/ 在线安装 1.导入MongoDB公共GPG Key wget -qO - https://www.m ...

  7. 「制作U盘系统」”安装 Linux Ubuntu系统到移动硬盘“教程

    前言: 小白的电脑已安装了双系统,主系统Mac,副系统Window.当前正式进入ROS研究课题,迫于对虚拟机稳定性的考虑,选择将Ubuntu 装入移动硬盘,实现"Linux移动系统" ...

  8. 在组装机上安装ubuntu系统-配置pytorch-GPU学习环境

    安装ubuntu系统: 1:ubuntu官网下载ubuntu18(本机配置微星B350迫击炮主板,锐龙2600x,gtx1063显卡)镜像. 2:下载refus 3:用refus把u盘转化成启动器并写 ...

  9. Linux Ubuntu系统台式电脑安装外置USB无线网卡驱动(以net-core磊科NW392无线网卡为例)

    前言 最近想让自己的台式电脑也能连上WiFi,台式电脑没有无线网卡,所以使用了一个外置USB无线网卡,就像下面这两个 这个直接插在电脑上就能使用,对于Windows系统来说,使用这个网卡操作非常简单, ...

最新文章

  1. UITextField的详细使用
  2. 转整型_156.Ruby烘焙大理石豆沙吐司解锁大理石花纹整型
  3. electron安装比较慢的方法
  4. 1111---9999的变换
  5. Java中常见流的分类及简单讲解
  6. 数据结构之线性表学习一
  7. 6678运行 linux,Ubuntu下使用Acer6678-0BM扫描仪
  8. 基于单片机的自动追日系统设计_基于单片机控制的简易逐日式太阳能发电系统...
  9. 百度统计 页面代码安装状态:代码未生效 解决
  10. 计算机硬盘分区win7,win7如何磁盘分区 教您win7磁盘分区
  11. OpenCV、Halcon博客与资源收藏整理备用
  12. SPI Flash芯片W25Q32英文版数据手册解读(三)---------程序编写,电路应用
  13. 瑞士军刀──Valgrind
  14. 在主函数内使用宏定义
  15. MATLAB中运动造成的图像模糊
  16. Vue组件库 View UI 来看看这80种奇奇怪怪的按钮
  17. 我的译作《精通OpenStack》上架啦:书籍介绍和译者序
  18. faker php测试数据库生成
  19. 财路网每日原创推送:超90%容错共识算法,如何实现?
  20. macOS系统中修改用户头像点击照片时显示未找到照片,且图库中有照片的解决办法

热门文章

  1. 和氟西汀类似的备注_备注氟西汀是什么意思和梗 让我做你的氟西汀出处意义...
  2. 电压反馈 和 电流反馈 【模电03课】
  3. 【精】配色弱有救了!教你利用图片创建独有的色彩方案!
  4. 【git分支及处理冲突的方法】
  5. 在vue2使用百度脑图的kityminder-core进行二次开发思维导图。节点收起时显示子节点的数量
  6. 【SQL Profile】coe_xfr_sql_profile.sql内容
  7. vsCode中文失效问题
  8. 常见SQL语句的加锁分析
  9. byte 与 int 转换
  10. uglify 压缩报错问题及 es5-imcompatible-versions