第一篇:linux(ubuntu)系统实操学习

2023-05-16

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一篇:linux(ubuntu)系统实操学习 的相关文章

随机推荐