1.命令问题

2.源码

  1. ros自动创建文件脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    #!/bin/bash 

    echo "欢迎使用ros,创建文件开始,请按照操作输入"
    echo "请输入工作空间名字"
    read catkin_ws
    if test -d ~/$catkin_ws
    then
    echo "已经存在!!正在进入该工作空间"
    else
    #先切回主目录
    cd ~/
    #新建工作空间文件夹
    mkdir $catkin_ws
    #在 catkin_ws 目录下新建 src 文件夹
    cd $catkin_ws
    mkdir src
    #初始化 src 目录,生成的 CMakeLists.txt 为功能包编译配置
    cd src
    catkin_init_workspace
    #切回 catkin_ws 目录,对该工作空间执行一次编译
    cd ~/$catkin_ws
    catkin_make
    #环境变量配置,使新建的 catkin_ws 工作空间可用
    source devel/setup.bash
    fi
    echo "请输入功能包名:"
    read package
    if test -d ~/$catkin_ws/src/$package
    then
    echo "已经存在!!正在进入"
    else
    cd ~/$catkin_ws/src/
    catkin_create_pkg $package roscpp std_msgs
    cd ~/$catkin_ws/
    catkin_make -DCATKIN_WHITELIST_PACKAGES="$package"
    fi

    echo "是否建立节点或者对节点操作(y/n):"
    read n
    if [ $n == n ]
    then
    echo "已跳过建立节点!!"
    else echo "请输入创建或者操作的节点名字"

    read node
    if test -e ~/$catkin_ws/src/$package/src/$node.cpp
    then
    echo "$node已经存在!!正在进入"

    else
    cd ~/$catkin_ws/src/$package/src/
    touch $node.cpp
    cat >>$node.cpp<<EOF
    main(){
    }
    EOF


    echo "正在为您声明可执行文件........"

    cd ~/$catkin_ws/src/$package/
    cat >>CMakeLists.txt<<EOF
    add_executable($node src/$node.cpp)
    target_link_libraries($node \${catkin_LIBRARIES})
    EOF
    echo "您的节点名即为可执行文件名"
    echo "可执行文件创立成功!!!"
    fi
    fi
    echo "是否建立服务或者为节点关联服务(y/n):"
    read s
    if [ $s == n ]
    then
    echo "已跳过建立服务或者为节点关联服务!!"
    else
    echo "请输入服务名(文件名字):"
    read srv

    if test -d ~/$catkin_ws/src/$package/srv
    then
    echo "srv已经存在!!正在进入"
    else cd ~/$catkin_ws/src/$package/
    mkdir srv
    cd ~/$catkin_ws/src/$package/
    var1=`sed -n '/std_msgs/=' CMakeLists.txt |sed -n "1"p`
    sed -e ""$var1"a\message_generation" CMakeLists.txt > tmpFile
    mv tmpFile CMakeLists.txt
    var2=`sed -n '/Generate services/=' CMakeLists.txt |sed -n "1"p`
    sed -e ""$var2"a\add_service_files(\nFILES\n\#Service2.srv\n)" CMakeLists.txt > tmpFile
    mv tmpFile CMakeLists.txt

    var4=`sed -n '/Generate added messages/=' CMakeLists.txt |sed -n "1"p`
    sed -e ""$var4"a\generate_messages(\nDEPENDENCIES\nstd_msgs\n)" CMakeLists.txt > tmpFile
    mv tmpFile CMakeLists.txt
    var5=`sed -n '/<doc_depend>doxygen/=' package.xml |sed -n "1"p`
    sed -e""$var5"a\<build_depend>message_generation</build_depend>\n<build_export_depend>message_generation</build_export_depend>\n<exec_depend>message_runtime</exec_depend>\n" package.xml > tmpFile
    mv tmpFile package.xml


    fi

    if test -e ~/$catkin_ws/src/$package/srv/$srv.srv
    then
    echo "$srv.srv已经存在!!正在进入"

    else



    cd ~/$catkin_ws/src/$package/srv
    touch $srv.srv
    echo "文件创立完毕,准备添加依赖项......"
    cd ~/$catkin_ws/src/$package/

    cd ~/$catkin_ws/src/$package/

    #注意,是用单引号包含双引号来引用变量。
    var3=`sed -n '/Service2.srv/=' CMakeLists.txt |sed -n "1"p`
    sed -e ''"${var3}"'a\'"${srv}"'.srv' CMakeLists.txt > tmpFile
    mv tmpFile CMakeLists.txt



    fi
    fi

    echo "!!!提示请不要在cpp文件没写main时编译(使用本脚本创立的节点忽略)"

    echo "是否建立消息文件或者为节点关联消息(y/n)"
    read m
    if [ $m == n ]
    then
    echo "已跳过建立消息文件或者为节点关联消息!!"
    else
    if test -d ~/$catkin_ws/src/$package/msg
    then
    echo "msg文件夹已经存在!!正在进入"
    else
    var6=`sed -n '/Generate messages/=' CMakeLists.txt |sed -n "1"p`
    sed -e ""$var6"a\add_message_files(\nFILES\n\#Message2.msg\n)" CMakeLists.txt > tmpFile
    mv tmpFile CMakeLists.txt

    cd ~/$catkin_ws/src/$package/
    mkdir msg

    fi
    echo "请输入消息名(文件名字):"
    read msg


    cd ~/$catkin_ws/src/$package/msg
    if test -e ~/$catkin_ws/src/$package/msg/$msg.msg
    then echo "该msg文件已存在,准备为您关联节点"
    else

    touch $msg.msg
    cat >>$msg.msg<<EOF
    int32 A
    int32 B
    int32 C
    EOF


    cd ~/$catkin_ws/src/$package/

    if test -d ~/$catkin_ws/src/$package/srv

    then
    var7=`sed -n '/Message2.msg/=' CMakeLists.txt |sed -n "1"p`
    sed -e ''"${var7}"'a\'"${msg}"'.msg' CMakeLists.txt > tmpFile
    mv tmpFile CMakeLists.txt
    else

    var8=`sed -n '/<doc_depend>doxygen/=' package.xml |sed -n "1"p`
    sed -e""$var8"a\<build_depend>message_generation</build_depend>\n<exec_depend>message_runtime</exec_depend>\n" package.xml > tmpFile
    mv tmpFile package.xml
    var9=`sed -n '/std_msgs/=' CMakeLists.txt |sed -n "1"p`
    sed -e ""$var9"a\message_generation" CMakeLists.txt > tmpFile
    mv tmpFile CMakeLists.txt
    var10=`sed -n '/Message2.msg/=' CMakeLists.txt |sed -n "1"p`
    sed -e ''"${var10}"'a\'"${msg}"'.msg' CMakeLists.txt > tmpFile
    mv tmpFile CMakeLists.txt
    var11=`sed -n '/Generate added messages/=' CMakeLists.txt |sed -n "1"p`
    sed -e ""$var11"a\generate_messages(\nDEPENDENCIES\nstd_msgs\n)" CMakeLists.txt > tmpFile
    mv tmpFile CMakeLists.txt
    fi
    fi
    fi
    echo "是否建立为您建立launch文件或者为节点关联launch文件(y/n)"
    read L
    if [ $L == n ]
    then
    echo "已跳过建立launch文件或者为节点关联launch文件!!"
    else
    echo "launch文件的内容默认为您追加"
    echo "输入使用的launch文件名(通常与当前位置包名一致)"
    read launch
    echo "请输入发布的节点"
    read node1
    echo "请输入发布节点的包名"
    read package1
    cd ~/$catkin_ws/src/$package/
    if test -d ~/$catkin_ws/src/$package1/launch
    then
    echo "launch文件夹已经存在!!正在进入"
    else
    mkdir launch
    fi

    cd ~/$catkin_ws/src/$package1/launch
    if test -e ~/$catkin_ws/src/$package1/launch/$launch.launch
    then
    echo "该launch文件已经存在开始追加......"
    else
    cd ~/$catkin_ws/src/$package1/launch/
    touch "$launch".launch

    cd ~/$catkin_ws/src/$package1/launch/
    cat >>"$launch".launch<<EOF
    <launch>
    </launch>
    EOF
    fi
    cd ~/$catkin_ws/src/$package1/launch/
    var13=`sed -n '/<launch>/=' "$launch".launch |sed -n "1"p`
    sed -e ''"$var13"'a\<node name="'"$node1"'"pkg="'"$package1"'"type="'"$node1"'"/>' "$launch".launch > tmpFile
    mv tmpFile "$launch".launch
    fi


    if [ $n == n ]

    then echo "依赖项添加完毕!!"

    else


    if test -e ~/$catkin_ws/src/$package/srv/$*srv
    then
    cd ~/$catkin_ws/src/$package/

    cat >>CMakeLists.txt<<EOF
    add_dependencies($node ${package}_gencpp)
    EOF
    else
    if test -e ~/$catkin_ws/src/$package/msg/$msg*msg

    then
    cd ~/$catkin_ws/src/$package/

    cat >>CMakeLists.txt<<EOF
    add_dependencies($node ${package}_gencpp)
    EOF

    fi
    echo "依赖项添加完毕!!"
    fi
    fi
    #rm -rf '"$launch"'.launch
    cd ~/$catkin_ws/
    catkin_make -DCATKIN_WHITELIST_PACKAGES="$package"
    echo "依赖项添加完毕!!"
    echo "编译完毕!!"
帮助
  1. 查看帮助手册man
    语法:
    man [man options] [[section] page …] …
    man -k [apropos options] regexp …
    man -K [man options] [section] term …
    man -f [whatis options] page …
    man -l [man options] file …
    man -w|-W [man options] page …
    参数:
    -f 显示给定关键字的简短描述信息
    -k 根据关键词搜索帮助手册
    -w 显示手册文件所在位置
    快捷操作:
    空格键 下翻一页
    回车键 下滚一行
    j 下滚一行
    k 上滚一行
    b 回翻一页
    f 下翻一页
    q 退出
    /word 搜索word关键词
    案例:
    查看 cp 命令的帮助手册 man cp
    查看 sleep 命令的简要信息 man -f sleep
    查看第 3 个章节的 sleep 信息 man 3 sleep
    查看 passwd 文件的详细介绍 man 5 passwd
    查看 ls 命令帮助手册文件所在位置 man -w ls
    搜索跟 disk 相关的帮助手册 man -k disk
  2. 查询一个命令执行什么功能,并将查询结果打印到终端上whatis
    语法:
    whatis 命令
    案例:
    查询 sleep 命令的功能 whatis sleep
  3. 阅读info格式的文件info
    语法:
    info [OPTION]… [MENU-ITEM…]
    参数:
    -w 显示info文档的物理位置
    -f 指定要访问的info文件
    -n 在首个浏览过info文件中指定节点
    -O 跳转至命令行选项节点
    常用操作:
    n 显示下一节点的页面内容
    p 显示上一节点的页面内容
    l 返回上一个访问节点的页面内容
    空格键 向前滚动一页
    退格键/del 向后滚动一页
    b/e 一个节点内容的开始/结束
    h 打开 info 教程
    d 回到 info 的初始节点
    回车键 跳转到链接文本
    q 退出
    案例:
    查看 ls 命令的 info 文档 info ls
    显示 ls 命令 info 文档的物理位置 info -w ls
文件及目录
创建和删除
  1. 改变已有文件的时间戳属性或者touch
  2. 创建目录mkdir
  3. 删除文件或目录rm
  4. 删除空目录rmdir
  5. 移动文件或者重命令文件mv
  6. 复制文件或目录cp
目录操作
  1. 切换目录cd
  2. 显示当前路径pwd
  3. 显示目录信息ls
  4. 以树状图列出目录内容tree
文件操作
  1. 显示文件或文件系统的详细信息stat
  2. 用字符串替换的方式批量改变文件名rename
  3. 提取文件路径名的文件名basename
  4. 去除文件名中的非目录部分dirname
  5. 更改文件属性chattr/lsattr
  6. 识别文件类型file
  7. 生成和校验文件的md5值md5sum
查找目录/文件
  1. 搜索指定文件find
  2. 查找命令文件所在位置which
  3. 查找命令的二进制程序、源代码文件和man手册页等相关文件的路径whereis
  4. 快速查找文件或目录locate
权限操作
  1. 改变文件或目录的用户和用户组chown
  2. 更改文件用户组chgrp
  3. 改变文件或目录权限chmod
文本处理
查找文本内容
  1. 文本搜索工具grep
  2. 查找指定的字符串egrep
查看文本内容
  1. 在终端上显示文件内容cat
  2. 分页显示文本文件内容more
  3. 分页显示文本内容less
  4. 显示文件开头的内容head
  5. 查看文件尾部内容tail
  6. 反向显示文件内容tac
  7. 添加行号nl
文本内容处理
  1. 统计文本信息wc
  2. 文件分割split
  3. 从文件中提取文本的一部分cut
  4. 合并两个或多个文件paste
  5. 对文件内容进行排序sort
  6. 去除文件中的重复行uniq
  7. 比较文件的差异diff/patch
  8. 连接两个文件join
  9. 转换或删除文件中的字符tr
  10. 批量编辑文本文件sed
  11. 文本和数据进行处理的编程语言awk
磁盘与文件系统
磁盘相关
  1. 查看磁盘使用空间du
  2. 显示磁盘空间使用情况df
  3. 强制将更改的内容立刻写入磁盘sync
文件系统
  1. 把文件系统挂载到目录mount
  2. 卸载文件系统umount
  3. 拷贝及转换文件dd
压缩/解压缩
  1. 打包/解压工具tar
  2. 压缩/解压文件zip/unzip
  3. 压缩/解压文件gzip/gunzip
系统管理与性能监控
系统管理
  1. 显示系统信息uname
  2. 显示和设置系统的主机名hostname
  3. 显示开机信息dmesg
  4. 查看系统启动时间及负载信息uptime
  5. 显示系统内存使用量情况free
  6. 控制shell程序的资源ulimit
  7. 切换系统运行级别init
  8. 控制系统服务service
系统管理
  1. 显示虚拟内存状态vmstat
  2. 监视系统输入输出设备和CPU的使用情况iostat
  3. 系统运行状态统计sar
  4. 显示进程间通讯设备的信息ipcs
  5. 删除一个或更多的消息队列、信号量集或者共享内存标识ipcrm
网络工具
网络路由
  1. 显示并设置路由route
  2. 测试主机间网络连通性ping
  3. 追踪数据包在网络上的传输时的全部路径traceroute
  4. 显示或设置网络设备ifconfig
  5. 激活/禁用网络接口ifup/ifdown
  6. 显示网络状态netstat
  7. 显示活动套接字信息ss
数据传输
  1. 远程登入服务器telnet
  2. 远程连接工具ssh
  3. 文件传输协议客户端ftp
  4. 交互式的文件传输程序sftp
  5. 一款优秀的文件客户端程序lftp
  6. 文件下载wget
  7. 远程拷备文件scp
  8. 文件传输工具curl
网络操作
  1. 域名查询host
  2. 监听网络流量tcpdump
  3. 设置路由器nc
用户管理
用户
  1. 创建并设置用户信息useradd
  2. 创建用户账户adduser
  3. 修改用户的密码passwd
  4. 删除用户账户userdel
  5. 切换用户身份su
  6. 以系统管理员的身份执行指令sudo
  7. 显示用户ID和组IDid
用户组
  1. 修改用户账号信息usermod
  2. 显示一个用户所加入的所有用户组groups
  3. 创建新的用户组groupadd
  4. 删除用户组groupdel
用户信息
  1. 打印当前登录用户whoami
  2. 查看当前登录用户信息who
  3. 显示已登录用户w
  4. 显示用户或终端的登录情况last
  5. 显示当前登录的用户users
进程管理
进程查看
  1. 实时显示进程动态top
  2. 显示进程状态ps
  3. 以树状图显示进程pstree
  4. 检索当前正在运行的进程pgrep
  5. 显示进程的内存映像pmap
  6. 查看进程打开的文件lsof
进程操作
  1. 终端任务调度jobs/bg/fg
  2. 发送信号到进程kill
  3. 使用进程名称来杀死进程killall
  4. 调整进程的优先级nice/renice
  5. 后台运行程序nohup
其它命令
包管理器
  1. 包管理器apt
  2. 包管理器apt-get
环境变量相关
  1. 设置或显示环境变量export
  2. 在当前Shell环境中从指定文件读取和执行命令source
  3. 设置/删除shell变量set/unset
终端操作
  1. 在终端输出字符串echo
  2. 格式化并输出结果printf
  3. 清除屏幕clear
  4. 显示与管理历史命令记录history
  5. 登入/登出系统login/logout
  6. 退出终端/ssh连接exit
命令相关
  1. 过滤器xargs
  2. 调用并执行指定的命令exec
  3. 设置/取消命令别名alias/unalias
  4. 显示指定命令的类型type
时间相关
  1. 显示或设定系统日期和时间date
  2. 显示日历cal
  3. 定时执行任务crontab
  4. 时间执行一个任务at/atq/atrm
  5. 显示命令执行时所消耗的时间time
  6. 周期性执行命令watch
小工具
  1. 数字计算器bc
  2. 为文件创建快捷方式ln
  3. 关闭/重启服务器shutdown/halt/poweroff/reboot