Linux操作系统入门笔记

本文档详细介绍了如何在Ubuntu 16.04上进行Linux系统安装,概述文件系统,以及深入学习ROS系统架构、编程和《probabilisticrobotics》的学习笔记,涵盖了Linux基础操作、网络测试、脚本编写等内容。
摘要由CSDN通过智能技术生成

机器人系列文章目录

第一章 ubuntu16.04系统及相关软件安装
第二章 Linux操作系统入门笔记
第三章 ROS系统架构及程序编写过程
第四章 《probabilistic robotics》学习笔记



操作系统 Linux(Ubuntu)

一、Linux系统安装

进行 Linux 开发需要安装一个 linux 系统环境,我们选择安装Ubuntu16.04 系统进行开发。具体安装过程可以参考第一章 ubuntu16.04系统及相关软件安装

二、Linux文件系统概览

Linux 系统中有一个重要的概念**:一切都是文件**

Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:

img

图 1 图1 1

常见目录说明

/bin :存放用户一般使用程序,即二进制可执行文件(ls,mv,rm,cat,mkdir等),常用命令一般都在这里;

/etc :存放系统管理时要用到的各种配置文件和子目录。如系统开机后会自动执行其中的/etc/rc.local;

/home :存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;如果建立一个用户,用户名是“zhl”,那么在/home目录下就有一个对应的/home/zhl路径,用来存放用户的主目录;包含隐藏文件;
/lib :存放着和系统运行相关的库文件,几乎所有的应用程序都会用到这个目录下的动态连接共享库;

/boot :在这个目录下存放的都是系统启动时要用到的程序。在使用grub或lilo引导linux的时候,会用到这里的一些信息;/dev:dev 是设备(device)的英文缩写,在这个目录中包含了所有linux系统中使用的外部设备(但是这里并不是放的外部设备的驱动程序),如tty;
/proc :可以在这个目录下获取系统信息,这些信息是在内存中,由系统自己产生的
/usr :这是linux系统中占用硬盘空间最大的目录,相当于windows下的program files目录

/var:系统中的可变文档的存放位置,例如日志文件,未读邮件等

/mnt :这个目录在一般情况下也是空的,可以临时将别的文件系统挂在这个目录下

三、Linux一些常用指令

1.文件目录管理命令

(1)查看帮助命令

–help

也可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp

(2)ls(英文全拼:list files): 列出目录及文件名

语法:

$ ls [选项] 目录名称

选项:

  • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用);
  • -d :仅列出目录本身,而不是列出目录内的文件数据(常用);
  • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

(3)cd(英文全拼:change directory):切换目录

语法:

$ cd [相对路径或绝对路径]

文件路径:

绝对路径:
路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。

相对路径:
路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd …/man 这就是相对路径的写法。

(4)pwd(英文全拼:print work directory):显示目前的目录

(5)mkdir:创建空白目录

语法:

$ mkdir [选项] 文件

选项详见–help

(6)cp(英文全拼:copy file): 复制文件或目录

语法:

$ cp [选项] 来源(source) 目标(destination)

选项:

  • **-f:**为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • **-i:**若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用);
  • **-p:**连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • **-r:**递归持续复制,用於目录的复制行为(常用)

(7)mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称

语法:

$ mv [选项] source destination

选项:

  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖

(8)rm(英文全拼:remove): 删除文件或目录

语法:

$ rm [选项] 文件或目录

选项:

  • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i :互动模式,在删除前会询问使用者是否动作;
  • -r :递归删除。最常用在目录的删除,这是非常危险的选项

(9)touch:创建空白文件

语法:

$ touch [选项] [文件]

2.测试网络能否联通

ping用于确定本地主机是否能与另一台主机成功交换数据包,判断网络是否通畅。

$ ping [-c 包的个数] ip地址或域名

3.sudo命令

sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

4.使环境变量生效的命令

编辑命令:

$ gedit ~/.bashrc

编辑之后使环境变量生效的命令:

$ source ~/.bashrc

每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。

示例:
在每次打开终端时,让系统自动刷新工作空间ws环境。在这个工作空间ws下的所有package都可以编译后就可以直接运行了,不用再source
终端输入:

gedit ~/.bashrc

打开bashrc文件,最下面的位置输入

source ~/ws/devel/setup.bash

或者直接使用

echo “source ~/ws/devel/setup.bash” >> ~/.bashrc

5.查看文件内容

(1)cat一次显示整个文件的内容

$ cat 文件名

选项与参数:

  • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号;
  • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同

(2)tail用于显示文本文件的最后几行

语法:

$ tail [-n number] 文件 

选项与参数:

  • -n :后面接数字,代表显示几行的意思
$ tail -f 文件

选项与参数:

  • -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测

可以动态显示后台服务程序的日志,用于调试和跟踪程序的运行。

6.打包压缩与搜索命令

(1)tar(英文全拼:tape archive ):对文件进行打包压缩或解压,常用于备份文件。

示例:

压缩文件 非打包

$ touch a.c       
$ tar -czvf test.tar.gz a.c   //压缩 a.c文件为test.tar.gz
a.c

列出压缩文件内容

$  tar -tzvf test.tar.gz 
-rw-r--r-- root/root     0 2010-05-24 16:51:59 a.c

解压文件

$ tar -xzvf test.tar.gz 
a.c

选项与参数:

  • -c或–create 建立新的备份文件(压缩);

  • -z或–gzip或–ungzip 通过gzip指令处理备份文件;

  • -v或–verbose 显示压缩或解压过程;

  • -f<备份文件>或–file=<备份文件> 指定备份文件;

  • -t或–list 列出备份文件的内容;

  • -x或–extract或–get 从备份文件中还原文件(解压)。

(2)zip

sudo apt install zip unzip
unzip 包.zip

7.查找搜索

(1)快速搜索已经输入的命令
1、history

2、ctrl+r:反向搜索 (reverse-i-search )

(2)grep:文本中执行关键词搜索,并显示匹配结果

实例:

1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:

$ grep test *file 

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

$ grep -rn "hello,world!" *

** : 表示当前目录所有文件,也可以是某个文件名

-r 是递归查找

-n 是显示行号

-R 查找所有文件包含子目录

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

$ grep -r update /etc/acpi 

3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。

查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:

$ grep -v test *test*

4、管道命令符|。

$ ll或ls |grep 关键词

找包含odom的话题名称,使用的命令为:

$ rostopic list |grep odom 

(3)find:按指定条件来查找文件

实例:

1、将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:

$ find . -name "*.c"

2、将当前目录及其子目录中的所有文件列出:

$ find . -type f

8. 修改用户的权限

chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

img

图2

语法:

$ chmod [-cfvR] [--help] [--version] mode file...

参数说明:

mode : 权限设定字串,格式如下 :

[ugoa...][[+-=][rwxX]...][,...]

其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取:4,w 表示可写入:2,x 表示可执行:1,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
    示例:

将文件 file1.txt 设为所有人拥有所有权限 :

$ chmod 777 file1.txt

将文件 file1.txt 设为所有人皆可读取 :

$ chmod a+r file1.txt

9.安装

1.deb安装包
安装

sudo dpkg -i 包名.deb 

卸载

sudo dpkg -r 包名.deb 

注:opt下要sudo

2.apt-get install等
编译器报错未安装库
有时候不需要安装。可能是cmakelist少加东西。
如编译器报错yaml库问题,cmakellists中加:

find_package(PkgConfig REQUIRED)
pkg_check_modules(YAMLCPP yaml-cpp REQUIRED)

注意安装时有无update,有时update某库之后,代码里的接口不能用了,要重新再装一般老版本。

10.看cpu占用

htop

fn+f4过滤

11.看端口占用

lsop

四、常用工具

1.vim文本编辑器

(a)vim的安装

$ sudo apt-get install vim

(b)vim的使用

vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)

vim 使用示例:

(1)使用 vim 进入命令模式

用 vim来建立或打开一个文件:

$ vim [文件名]

请注意,记得 vim 后面一定要加文件名,不管该文件存在与否。

(2)按下 i 进入输入模式,开始编辑文字

在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。

(3)按下 ESC 按钮回到一般模式

按下 Esc 按钮,画面左下角的 – INSERT – 消失。

(4)在命令模式中按下 :wq 储存后退出 vim

输入**:q**,不保存,直接退出;

注意确认保存,.swp文件的恢复:

输入**:q!**,曾经修改但不保存,强制离开;

输入**:wq!**,强制保存退出

(5)在命令模式中按下**:set number**显示行号
(6)恢复:u
(7)查找:?
查找结果切换:N

(c)vim 键盘图:

img

2.远程登录、传入文件/文件夹

(1)ssh( secure shell 的缩写):使用密钥认证机制进行远程登录

安装:

$ sudo apt-get install openssh-server

示例:

$ ssh remote_username@remote_ip

(2)scp(secure copy 的缩写):基于ssh远程传输文件/文件夹

示例:

1、传输本地test.txt单独文件,到远程用户home目录下。

$ scp test.txt remote_username@remote_ip:~

2、传输本地test文件夹,到远程用户home目录下。

$ scp -r test remote_username@remote_ip:~

五、脚本

1.crontab执行定时删日志脚本

脚本参考
https://blog.csdn.net/weixin_39795268/article/details/117494674

#!/bin/bash

echo "delete log..."
find /home/?/ -mtime +7 -name "*.log" -exec rm -rf {} \;
...

echo y +要执行的内容
参考:https://zhuanlan.zhihu.com/p/498501715
echo y | cp /root/5.txt /root/5.txtbak | echo -e “\n”
释义:
echo y 自动输入y
echo -e “\n” 自动回车

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值