A-A+

机器人操作系统ROS Indigo 入门学习(0)——ROS的UNIX基础

2015年02月19日 ROS 暂无评论 阅读 3,114 次
此文由Bobsweetie翻译,共有20篇,经同意,本站陆续放出,本文原文地址http://blog.csdn.net/bobsweetie/article/details/43638749

 


UNIX Tutorial One

ls   列出当前目录下的文件

ls -a  列出当前目录所有文件,包括隐藏的文件

mkdir unixstuff   创建名为unixstuff的目录

cd unixstuff   改变目录进入unixstuff

cd .  当前目录

cd ..  父目录

pwd  打印绝对路径

cd ~  家目录(编者:用户目录)


 

UNIX Tutorial Two

cp 复制

mv file1 file2 移动文件或者改变名字

rm 移除文件

rmdir 移除目录

clear 清屏

cat file显示文件内容

less 显示文件内容(q退出,'/'+内容,可以搜索)

head 显示文件头10行

tail显示文件尾10行

grep Science science.txt 在science.txt 中搜索文字,区分大小写,搜索内容

grep -i science science.txt 不区分大小写

grep -i 'spinning top' science.txt 不区分大小写搜索 spinning top

-v 反选

-n显示行号

-c打印匹配的总的行号数

wc -w science.txt计算文本里的字数(不是字节数)

wc -l science.txt 计算文本里的行数


UNIX Tutorial Three

重定向输出(本来是输出到终端,现在输出到文本中)

cat > list1到list1,会覆盖原来的内容

cat >>list1添加到list1,不会覆盖原来的内容

Ctrl+d to stop

cat list1 list2 > biglist将list1和list2的内容合并到biglist

重定向输入(本来是在键盘输入,现在可以利用一个文件当做输入)

sort < biglist 将biglist打印到屏幕

sort < biglist > slist  最终输出到slist

who查看这个系统上的有哪些用户

pipe管道

管道可以连接两个命令,将前一个命令的输出数据当做到后一个命令的输入


UNIX Tutorial Four

*号,通配符

ls *.txt列出所有txt格式的文件

?号

ls ?llst ?代表一个字符

whatis wc显示wc的单行的帮助

man wc显示wc的详细的帮助文档

apropos keyword当你不确定一个命令的名字时,他会打印出所有含有关键字的命令


UNIX Tutorial Five

ros@ros-K45VD:~/桌面$ ls -l

总用量 56

-rw-rw-r-- 1 ros ros 5524  1月 30 08:00 04program_flow .docx

-rw-rw-r-- 1 ros ros   18  1月 30 17:40 1.txt

-rw-rw-r-- 1 ros ros    8  1月 30 15:30 1.txt~

-rw-rw-r-- 1 ros ros    8  1月 30 17:32 a.txt

-rw-rw-r-- 1 ros ros   11  1月 30 17:33 b.txt

-rw-rw-r-- 1 ros ros    2  1月 30 17:46 c.txt

-rw-rw-r-- 1 ros ros   19  1月 30 17:33 c.txt~

-rw-rw-r-- 1 ros ros  400  1月 30 17:25 note.txt

-rw-rw-r-- 1 ros ros  400  1月 30 17:06 note.txt~

-rw-rw-r-- 1 ros ros   18  1月 30 17:29 zhangbo.txt

-rw-rw-r-- 1 ros ros   21  1月 30 17:22 zhangbo.txt~

-rw-rw-r-- 1 ros ros 5277  1月 30 17:56 未命名 1.docx

-rw-rw-r-- 1 ros ros    0  1月 30 08:23 脏angbo  ~

列出来的内容分别是:

第一个字符是文档属性,接下来是九个权限,分别是拥有者、同用户用户组、其他用户的读(r)、写(w)、执行(x)的权限,没有权限用'-'代替,再下来是用户名,用户组名,文件大小,创建时间,文件名

改变权限:

chmod  用户+- 文件名

chmod   权限    文件名(r=4,w=2,x=1)

Symbol Meaning
u user(用户)
g group(用户组)
o other(其他用户)
a all(所有用户)
r read()
w write (and delete)
x execute (and access directory)
+ add permission
- take away permission

chmod go-rwx biglist 给biglist文件的同用户组用户和其他用户去除读写执行的权限,不影响其他权限

chmod a+rw biglist 给biglist文件的所有用户添加读写权限,不影响其他权限

ps查看进程

命令+ &  让进程在后台运行

Ctrl + z 暂停一个正在运行的进程,然后bg将进程放到后台运行

jobs查看停止或者在后台运行的进程

fg %jobnumber 激活停止的进程

kill %jobnumber用jobnumber杀死进程

kill PID用进程编号杀死进程

kill -9 PID 强制杀死进程


UNIX Tutorial Six

quota 命令显示磁盘使用情况和限额(ubuntu14.04下使用没有反应)

df . 显示文件系统的剩余空间

du  常用来查看哪个文件最大

gzip压缩

gunzip解压

zcat阅读压缩的文件内容,无需解压

find  -name  "*.txt"  -print 查询以.txt为扩展名的文件

find  -size +1M -ls 显示大小大于1M的文件

history显示输入的历史命令

!!  重新调用上一个命令

!-3重新调用倒数第三个命令

!grep 重新调用以grep开头的命令

!5  重新调用第五个命令

set history=100 增加记录history命令的缓冲区大小


UNIX Tutorial Seven

7.1 编译 UNIX 软件

对我们所有的用户,在我们的系统中有许多的公用的和商业软件都是可用的。此外,学生还可以在他们的home目录中下载和安装软件,这些软件通常只供他们个人使用。

安装软件的步骤:

1、下载源码压缩包;

2、解压源码;

3、安装可执行程序;

4、设置安装路径。

以上步骤中,最复杂的是编译阶段。

编译源代码:

所有的语言代码必须转换为计算机能够理解的形式。比如C语言会转变为更低级的汇编语言,然后汇编语言再转变为目标语言,这是一种计算机可以直接理解的代码碎片。最后一步是链接目标语言到包含特定内置函数的代码库。最后阶段会产生一个可执行程序。

手动去做这些步骤对于一个新手来说是复杂而且超出他们的能力的。于是为了为为程序员和终端用户简化步骤,开发了许多的实用程序和工具。

Make和Makefile:

Make命令允许程序员处理大的的程序或者程序组。它可以通过跟踪整个程序的哪些部分被改变了帮助开发大型程序,只编译被改变的程序部分。

Make命令从makefile文件中获取一系列的编译规则,makefile和源代码在同样的目录下。Makefile里有各种关于如何编译源码的信息,比如优化等级,在可执行文件中是否包含调试信息。也包含了关于在安装编译完成的二进制代码,手册,数据文件,依赖库文件,配置文件等等。

有些安装包需要你去手动编辑makefile文件以设置最后的安装目录和其他参数。但是,现在发布的许多安装包都带有GUN的通用配置。

配置:

因为UNIX版本过多,很难写出一个程序能在所有的版本上运行。开发人员通常没有机会基础所有版本的系统,和有些系统升级的特色。GUN配置和编译系统简化了以源代码形式发布的程序的编译。所有的程序只需要简单的,标准化的两个过程就可以编译好。程序编译者不需要安装任何特殊的工具去编译程序。

Configure shell脚本文件尝试着去纠正编译时使用的各种依赖系统的变量的值。它也使用这些值在安装包的目录中创建一个makef文件。

最简单的编译步骤是:

1、cd到源码所在的目录

2、./configure去配置你的系统

3、make check对安装包进行自我检查

4、make install去安装程序

5、make clean从源码目录中移除二进制源码和目标文件

配置提供了很多选择,最常用的是—prefix和—exec-prefix可以用来指定安装目录,由—prefix命名的目录会保持为机器的独立文件比如文档,数据和配置文件,由—exec-prefix命令的目录,(通常是--prefix的子目录),会保持为机器的独立文件比如可执行文件。

1>下载源码

mkdir download

2>提取源码

先用gunzip解压为.tar文件gunzip units-1.74.tar.gz ;

抽取tar文件的内容tar -xvf units-1.74.tar ;

3>配置和创建Makefile文件

注意:仔细阅读README和INSTALL文本

我们需要指定安装目录,因为默认的系统区域我们没有写的权限,所以我们需要在家目录新建文件夹mkdir ~/units174

运行configure文件去设置安装路径./configure --prefix=$HOME/units174

$HOME是环境变量,它的值就是你的家目录,echo $HOME可以查看这个值,如果配置正确,会生成一个Makefile文件。

紧着者是运行是make去编译,make check去检查编译是否成功;如果编译没有问题,就可以运行make install安装了。

进入/bin目录运行命令.

4>剥离不需要的代码:

有些代码是程序员用来调试程序的,对用户没有用,可以去掉。到/bin目录执行strip + 文件命令,也可以在安装的时候执行make install-strip。

UNIX Tutorial Eight

运行程序时,变量是shell和程序之间传递信息的一种途径。程序会在环境变量中寻找特定的变量,如果找到了就会使用它储存的值。有些变量是系统设置的,有些是你,有些是shell或者装载其他程序的程序。

标准的UNIX变量被分为两类,环境变量和shell变量,大部分条件下,shell变量只用于少量需要设置短期工作路径的场合,环境变量则有更长远的意义,在登录时设置的变量在整个回话期间都是有效的。通常来说,环境变量是大写的,而shell变量是小写的。

环境变量

查看环境变量echo $环境变量

USER:你的登录名

HOME:你的家目录路径

HOST:你的计算机名

ARCH: 计算机进程的架构

DISPALY: 显示X windows的计算机屏幕名

PRINTER: 发送jobs的默认打印机

PATH :shell可以寻找目录的路径

用setenv来设置环境变量,printenv来打印,unsetenv来移除设置

Shell变量

set用来设置和展现环境变量unset来移除变量

PATH和path之间的区别

除了大小写外,环境变量和shell变量有同样的名字,每次shell变量home,user和term的改变都会使相应的环境变量HOME,USER和TERM变为相同的值,但是,改变环境变量的值不会对相应的shell变量产生影响。

PATH和path都指定的路径去搜索命令,两个命令都代表着相同的目录列表,改变他们当中任意一个都会使另一个发生变化。

使用和设置变量

每次登录系统时,系统都会在你的家目录寻找安装文件,这里面有建立你的工作目录的信息。.login和.cshrc(在ubuntu是.bashrc,以下皆同)文件。

在.cshrc文件中设置shell变量

比如

set history = 200

echo $history

但是这样设置只有暂时的作用,如果要长久生效需要在.cshrc中设置

nedit ~/cshrc

在最后添加 set history = 200

用source .cshrc命令是设置马上生效

检查是否生效echo $history

设置路径

在运行命令时如果提示没有找到命令,可能是你没有把命令的路径添加进path,使得shell找不到命令,这时,要么执行带路径的命令,要么把命令的路径添加进入。

Set path = ($path ~/units174/bin)

要让这个路径永久生效,就要写进.cshrc

set path = ($path ~/units174/bin)

标签:

给我留言

Copyright © ExBot易科机器人实验室 保留所有权利.   Theme   Robin modified by poyoten

用户登录

分享到: