Linux基础(ROS入门)

1.1 Linux基础linux

1.1.1 Linux文件系统程序员

 

 

1.1  Linux目录文件树shell

Windows将硬盘看作“C“D几个独立的分区不一样,Linux将整个文件系统看作一棵树,这棵树的树根叫作根文件系统,用/表示。各个分区经过挂载Mount)以文件夹的形式访问。编程

1、根文件系统:ubuntu

/Linux文件系统根目录。vim

2、一级目录windows

/root:系统管理员的目录,这是根用户的主目录。与保留给我的用户的/home下的目录很类似,该目录中还包含仅与根用户有关的条目。数组

/home:用户主目录的默认位置。存储普通用户的我的文件。每一个用户的主目录均在/home下以本身的用户名命名。缓存

/etc:该目录中包含系统和应用软件的配置文件。bash

/dev:包含系统支持的全部设备文件。具体来讲,console表示控制台,lp0表示打印机,mem表示系统的物理内存,sda表示链接到主控制器的第一个磁盘,ttyXX表示串口设备。

/boot:包含系统引导程序GRUB及其配置文件、linux内核文件vmlinuz和磁盘内存映像文件initrd.img等重要引导文件。

/lib:这个目录里存放着系统最基本的共享连接库和内核模块。共享连接库在功能上相似于Windows里的.dll文件。

/proc:它是存在于内存中的虚拟文件系统。里面保存了内核和进程的状态信息。多为文本文件,能够直接查看。如/proc/cpuinfo保存了有关CPU的信息。

/sbin:供超级用户使用的可执行文件,里面可能是系统管理命令,如fsck, reboot, shutdown, ifconfig等。

/usr:静态的用户级应用程序等。

/var:动态的程序数据等。长度可变的文件,尤为是些记录数据,如日志文件和打印机文件。例如/var/log/var/cache等。

/bin:该目录中存放了供全部用户使用的完成基本维护任务的命令。其中binbinary的缩写,表示二进制文件,一般为可执行文件。包含普通用户和系统管理员能够共享的各类通用程序,如bashdddfgzipgrepmvmkdir等经常使用的基本命令。

/lost+found:用于存储fsck命令在检测与修复文件系统时删除的文件和目录
/media 包含移动存储介质的挂载点,插入U盘,系统会自动将U盘挂载到该目录的某个子目录。

/mnt:包含全部自定义的文件系统的挂载点,能够挂载任何文件系统 包括NFSCIFS网络文件系统。

/opt:应用程序等附加软件的安装目录,相似于windows系统中的Program Files目录。

3、二级目录

/etc/apt:包含软件管理工具使用的配置文件,如sources.list等。

/etc/cron.d:用于存储cron进程调度运行后台进程所用的配置文件盒控制文件。其余有关目录cron.hourlycron.dailycron.weeklycron.monthly四个目录。

/etc/init.d:用于存储系统启动引导过程当中须要由init调度执行的脚本文。

/etc/network:包含网络接口的配置文件interfaces以及相关的配置工具

/etc/X11:包含X服务器使用的各类配置文件,如xorg.conf等。

/usr下的目录结构与根目录类似,但根目录中的文件可能是系统级的文件,而/usr中是用户级的文件,通常与具体的系统无关。

/usr/bin:包含用户常用的各类命令。

/usr/include:用于存储各类C语言头文件。这个目录及其子目录是开发人员常常引用的文件。其中syslinuxbits等子目录中定义的数据结构,对于深刻学习、理解和掌握Linux系统具备极大的参考价值。

/usr/lib:其中包含各类共享的库函数,可供程序员已静态或动态的方式连接本身开发的程序。

/usr/sbin:包含系统引导完成以后系统管理员常用的各类系统管理和维护命令。

/usr/share:共享目录,包含man(联机文档的根目录)、infoGNU info文档的根目录)、doc(各类软件包特定的文档)、locale(语言环境)、vim(用户指南)zoneinfo(时区定义)等子目录。

/usr/src:存放linux系统内核的源代码和文档等。

/var/lib:存储软件包特定的动态连接共享库、配置文件、数据文件和状态信息等。

/var/log:系统守护进程日志文件的存储目录,其中包括lastlog(每一个用户最后一次登陆的时间)、messages(由syslogd记录的全部内核和系统程序的日志消息)及wtmp(全部用户的系统注册/注销记录)等重要文件。位于/var/log中的文件会不断地增加,于是要求按期备份或删除,一般linux系统均采用日、周或月为时间周期,按期执行例程检查,以循环截取的方式,删除过期的数据,保留必定时间范围的最新数据,使文件的大小保持一个适中的规模。在Ubuntu Linux系统中,每日将会执行一次logrotate程序,检查并处理系统日志文件。

/var/lock:用于存储各类服务进程或应用程序访问特定的设备或文件时设置的封锁文件。

/var/run:系统运行信息文件的根目录,其中包括各类.pid文件中存有守护进程的PID。另一个最典型的文件是/var/run/utmp,其中包含当前系统中用户注册信息。

/var/spool:用于缓存各类等待处理的文件,如打印服务等。一般每类待处理的缓存文件均位于各自的子目录中,如/var/spool/cups等。

/var/tmp:用于存储各类临时文件。

 

1.1.2 Linux桌面环境

相对于如今的Windows系统,UNIX/Linux自己是没有图形界面的,咱们一般在UNIX/Linux发行版上看到的图形界面实际都只是运行在Linux系统之上的一套软件,相似Windows95以前的Windows的图形界面实则也只是运行在DOS环境的一套软件。

 

 

1.2  Linux桌面图形架构

1.1.3 Linux终端

一般咱们在使用Linux时,并非直接与系统打交道,而是经过一个叫作Shell的中间程序来完成的,在图形界面下为了实现让咱们在一个窗口中完成用户输入和显示输出,Linux系统还提供了一个叫作终端模拟器的程序(Terminal),下面是几个比较常见的终端模拟器:gnome-terminalKonsolextermrxvtkvtnxtermeterm

Ubuntu中打开终端的快捷键是Ctrl+Alt+T。其余一些经常使用快捷键如表1.2所示。

1.2  Ubuntu终端快捷命令

快捷键

功能

快捷键

功能

Tab

自动补全

Ctrl+r

查找历史命令

Ctrl+a

光标移动到开始位置

Ctrl+b

向回移动光标

Ctrl+e

光标移动到最末尾

Ctrl+f

向前移动光标

Ctrl+k

删除此处至末尾的全部内容

Ctrl+t

将光标位置的字符和前一个字符进行位置交换

Ctrl+u

删除此处至开始的全部内容

Ctrl+&

恢复 ctrl+h 或者 ctrl+d 或者 ctrl+w 删除的内容

Ctrl+d

删除当前字符

Ctrl+S

暂停屏幕输出

Ctrl+h

删除当前字符前一个字符

Ctrl+Q

继续屏幕输出

Ctrl+w

删除此处到左边的单词

Ctrl+Left-Arrow

光标移动到上一个单词的词首

Ctrl+y

粘贴由Ctrl+u, Ctrl+d, Ctrl+w删除的单词

Ctrl+Right-Arrow

光标移动到下一个单词的词尾

Ctrl+l

至关于clear,即清屏

Ctrl+p

向上显示缓存命令

Ctrl+n

向下显示缓存命令

Shift+Ctrl+W

关闭标签页

Ctrl+d

关闭终端

Shift+Ctrl+C

复制

Ctrl+xx

EOL和当前光标位置移动

Shift+Ctrl+V

粘贴

Ctrl+x@

显示可能hostname补全

Alt+数字

切换至对应的标签页

Ctrl+c

终止进程/命令

Shift+Ctrl+N

打开新的终端窗口

Shift+上或下

终端上下滚动

Shift+Ctrl+Q

管壁终端窗口

Shift+PgUp/PgDn

终端上下翻页滚动

Shift+Ctrl+PgUp/PgDn

左移右移标签页

Ctrl+Shift+n

新终端

Ctrl+PgUp/PgDn

切换标签页

alt+F2

输入gnome-terminal打开终端

F1

打开帮助指南

Shift+Ctrl+T

打开新的标签页

F10

激活菜单栏

F11

全屏切换

Alt+S

打开 搜索菜单(search

Alt+F

打开 文件菜单(file

Alt+T

打开 终端菜单(terminal

Alt+E

打开 编辑菜单(edit

Alt+H

打开 帮助菜单(help

Alt+V

打开 查看菜单(view

 

 

几个用命令的详细说明:

1Tab命令

使用Tab键来进行命令补全,这个技巧给你带来的最大的好处就是当你忘记某个命令的全称时能够只输入它的开头的一部分,而后按下Tab键就能够获得提示或者帮助完成。连续按两次Tab能够显示所有候选结果。

2、方向键↑↓

使用键盘上的方向上键↑↓,恢复到此前输入过的命令。

3、通配符

通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(好比文件名、参数名)。当查找文件夹时,可使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,经常使用通配符代替一个或多个真正字符。

示例:

#建立两个名为adsfasd.txtwergjlkas.txt的文件,touch是一个文件建立命令

$touch adsfasd.txt wergjlkas.txt

#想在一大堆文件中找到这两个文件,就可使用通配符

$ls *.txt

adsfasd.txt  wergjlkas.txt

SHELL经常使用通配符:

字符

含义

*

匹配0或多个字符

匹配任意一个字符

[list]

匹配list中的任意单一字符

[!list]

匹配除list中的任意单一字符之外的字符

[c1-c2]

匹配c1-c2中的任意单一字符

{string1,string2, ...}

匹配string1string2或更多中某个字符串

{c1..c2}

匹配c1-c2中所有字符,如{1..10}

 

4man命令

Linux 环境中,若是遇到困难,可使用man命令,它是Manual pages的缩写。Manual pages UNIX或类UNIX操做系统中在线软件文档的一种广泛的形式,内容包括计算机程序(包括库和系统调用)、正式的标准和惯例,甚至是抽象的概念。用户能够经过执行man命令调用手册页。为了便于查找,man 手册被进行了分册(分区段)处理,在 Research UNIXBSDOS X Linux 中,手册一般被分为8个区段,安排以下:

区段

说明

1

通常命令

2

系统调用

3

库函数,涵盖了C标准函数库

4

特殊文件(一般是/dev中的设备)和驱动程序

5

文件格式和约定

6

游戏和屏保

7

杂项

8

系统管理命令和守护进程

 

要查看相应区段的内容,就在 man 后面加上相应区段的数字便可,如:

$man 1 ls

 

1.1.4 Linux文件操做命令

1、路径操做

使用cd命令能够切换目录,在Linux里面:“.”表示当前目录;“..”表示上一级目录;“-”表示上一次所在目录;“~”表示当前用户的home目录。使用pwd命令能够得到当前所在绝对路径。

ubuntu:~/$pwd

/home/ubuntu

ubuntu:~/$cd /usr/local/bin

ubuntu:bin/$pwd

/usr/local/bin

ubuntu:bin/$cd ..

ubuntu:local/$pwd

/usr/local

ubuntu:local/$cd ~

ubuntu:~/$

 

2、新建

touch命令新建空白文件,建立名为 test 的空白文件,由于在其它目录没有权限,因此须要先 cd ~ 切换回用户的 /home/shiyanlou 目录

$cd ~

$touch test

mkdir命令新建空目录,也可同时指定建立目录的权限属性。

建立名为“ mydir ”的空目录:

$cd ~

$mkdir mydir

使用-p参数,同时建立父目录(若是不存在该父目录),以下咱们同时建立一个多级目录(这在安装软件、配置安装路径时很是有用):

$cd ~

$mkdir -p father/son/grandson

 

3、复制

使用cpcopy)命令复制一个文件到指定目录。将以前建立的test ”文件复制到“/home/shiyanlou/father/son/grandson”目录中

$ cp test father/son/grandson

目录复制,要成功复制目录须要加上-r或者-R参数,表示递归复制

$mkdir family

$ cp -r father family

4、删除

使用 rmremove files or directories)命令删除一个文件。直接删除文件,可使用-f参数强制删除。跟复制目录同样,要删除一个目录,也须要加上-r-R参数。

#删除文件test

$rm -f test

#删除目录family

$rm -r family

 

5、移动文件

使用mvmove or rename files)命令移动文件(剪切)。

$mkdir file1

$ mkdir Documents

$ mv file1 Documents

 

6、查看文件

使用cattac和nl命令查看文件cattac用来打印文件内容到标准输出(终端),其中cat为正序显示,tac为倒序显示

$cp /etc/passwd .

$cat passwd

#能够加上 -n 参数显示行号

$cat -n passwd

nl命令,添加行号并打印,这是个比cat -n更专业的行号打印命令

moreless命令分页查看文件。Enter键向下滚动一行,使用Space键向下滚动一屏,按下h显示帮助,q退出

headtail命令查看文件头几行和尾部几行。

#查看passwd文件头1行和尾部2

$head -n 1 passwd

$tail -n 2 passwd

tail命令参数-f,这个参数能够实现不停地读取某个文件的内容并显示。这可让咱们动态查看日志,达到实时监视的目的

Linux中文件的类型不是根据文件后缀来判断的,咱们一般使用 file 命令查看文件的类型

7、编辑文件

Linux下面编辑文件一般咱们会直接使用专门的命令行编辑器好比(emacsvimnano)。

1.1.5 Linux环境变量

1、变量

变量是计算机中用于记录一个值的符号。一般变量与值是一对一的关系,能够经过表达式读取它的值并赋值给其它变量,也能够直接指定数值赋值给任意变量。为了便于运算和处理,大部分的编程语言会区分变量的类型,用于分别记录数值、字符或者字符串等等数据类型。Shell 中的变量也基本如此,有不一样类型(但不用专门指定类型名),能够参与运算,有做用域限定。

# declare 命令建立一个变量名为 tmp 的变量

$ declare tmp

也能够不用 declare 预声明一个变量,直接即用即建立,这里只是告诉你 declare 的做用,这在建立其它指定类型的变量(如数组)时会用到。

使用=号赋值运算符,将变量tmp赋值为var_tmp

$ tmp=var_tmp

$echo $tmp

读取变量的值,使用echo命令和$符号($符号用于表示引用一个变量的值,初学者常常忘记输入)

2、环境变量

环境变量的做用域比自定义变量的要大,如Shell的环境变量做用于自身和它的子进程。在全部的UNIX和类UNIX系统中,每一个进程都有其各自的环境变量设置,且默认状况下,当一个进程被建立时,除了建立过程当中明确指定的话,它将继承其父进程的绝大部分环境设置。Shell程序也做为一个进程运行在操做系统之上,而咱们在Shell中运行的大部分命令都将以Shell的子进程的方式运行。

一般涉及的变量有三类:

1当前Shell进程私有用户自定义变量,如上面咱们建立的tmp变量,只在当前Shell中有效。

2Shell自己内建的变量。

3从自定义变量导出的环境变量

与上述三类变量相关的命令:

命令

说明

set

显示当前 Shell 全部变量,包括其内建环境变量(与 Shell 外观等相关),用户自定义变量及导出的环境变量。

env

显示与当前用户相关的环境变量,还可让命令在指定环境中运行。

export

显示从 Shell 中导出成环境变量的变量,也能经过它将自定义变量导出为环境变量。

如何区分环境变量,如下命令能够体验:

$temp=var_test

$ech $temp

Var_test

#建立子shellubuntu默认shellbash

$bash

$echo $temp

 

#值为空,表示该变量无效

$exit

#导出变量temp为环境变量

$export temp

$bash

$echo $temp

var_test

按变量的生存周期,变量分永久的和临时的两类:

1)永久变量,须要修改配置文件,变量永久生效;

2)临时变量,使用export命令行声明便可,变量在关闭shell后失效。

两个重要文件/etc/bashrc/etc/profile,它们分别存放的是shell变量和环境变量

3、添加自定义路径到“PATH”环境变量

在每一个用户的home目录中有一个Shell每次启动时会默认执行一个配置脚本,以初始化环境,包括添加一些用户自定义环境变量等等。Bash的配置文件为.bashrc。它们在etc下还都有一个或多个全局的配置文件,不过咱们通常只修改用户目录下的配置文件。

咱们能够简单地使用下面命令直接添加内容到 .bashrc 中:

$echo "PATH=$PATH:~/mybin">>.bashrc

上述命令中>>表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的>是以覆盖的方式重定向到一个文件中,使用的时候必定要注意分辨。在指定文件不存在的状况下都会建立新的文件。

4、变量删除

可使用unset命令删除一个环境变量。

5、环境变量当即生效

shell中修改了一个配置脚本文件以后(好比bash的配置文件home目录下的.bashrc),每次都要退出终端从新打开甚至重启主机以后其才能生效,非常麻烦,咱们可使用source命令来让其当即生效。

$source ~/.bashrc

 

1.1.6 Linux其余命令

类别

命令

说明

文件搜索

whereis

 

which

 

find

 

locate

 

文件解压缩

zip

zip 打包文件夹zip something.zip something(目录请加-r参数)

tar

tar打包:tar -zcvf something.tar something

tar解包:tar -zxvf something.tar

uzip

zip解包:unzip something.zip

磁盘操做

df

df命令查看磁盘的容量

du

du命令查看目录的容量

帮助命令

help

help命令用于显示shell内部命令的帮助信息。help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用--helpman或者info命令查看

--help

--help命令是用于显示shell外部命令的简要帮助信息。

man

man命令是Linux下的帮助指令,经过man指令能够查看Linux中的指令帮助、配置文件帮助和编程帮助等信息。

info

info页面比man page编写得要更好、更容易理解,也更友好,但man page使用起来确实要更容易得多

相关文章
相关标签/搜索