Linux命令行操作及Shell编程基础

Linux命令行操作介绍

在linux系统中,可以通过简单的Ctrl+Alt+T的方式打开一个terminal,在terminal中可以输入命令执行各种操作,有的操作是执行某种功能,有的操作是获取某些信息等等。

参考链接:linux基本命令(很全的),在此不再赘述。

Shell编程基础

简单地说,shell脚本文件就是将可以在linux命令行运行的命令加以组合、使其能实现更多功能的“可执行”文件。常用于实现程序的下载编译、自动化启动执行一系列程序等。

具体介绍可参见链接:Shell编程基础

  • 执行一个脚本文件,首先用“chmod +x 文件”赋予权限,再在文件所在文件夹路径下执行:./文件

下面将通过实例进行简要介绍。

实例linux_command_examples.sh

以下的linux_command_examples.sh文件将上一节的linux命令进行了组合,全文及分析如下:

#!/bin/bash

echo "The examples begin:"

cd $HOME
mkdir test_dir
gedit test_dir/test_file.txt

echo "The examples end."

shell脚本,它必须以如下行开始(必须放在文件的第一行):

#!/bin/bash

此行称为 shebang(就是 sharp (#) + bang (!) 的意思),会指引操作系统使用接下来指定的程序运行此文件。此处 /bin/bash 执行我们的文件。

echo "The examples begin:"

echo会将后面跟随的引号内的内容显示到terminal中。

cd $HOME

将要操作的文件夹转向本机的/home文件夹

mkdir test_dir

在本机/home文件夹下建立test_dir文件夹

gedit test_dir/test_file.txt

在刚刚建立的test_dir文件夹中新建一个名为test_file.txt的文件,并用gedit进行编辑。

如果在gedit中输入文字并保存,或者直接保存,则在/home文件夹下的test_dir中就会保留一个文件:test_file.txt
保存此test_file.txt,然后可以用ls命令查看此文件是否存在:

ls $HOME/test_dir/

返回:

test_file.txt

实例install_ros_kinetic.sh

以下再分析一个install_ros_kinetic.sh文件,是用来在本地安装机器人操作系统ROS-kinetic的,全文及分析如下:

#!/bin/bash
# Apache License 2.0
# Copyright (c) 2017, ROBOTIS CO., LTD.

echo ""
echo "[Note] Target OS version  >>> Ubuntu 16.04.x (xenial) or Linux Mint 18.x"
echo "[Note] Target ROS version >>> ROS Kinetic Kame"
echo "[Note] Catkin workspace   >>> $HOME/catkin_ws"
echo ""
echo "PRESS [ENTER] TO CONTINUE THE INSTALLATION"
echo "IF YOU WANT TO CANCEL, PRESS [CTRL] + [C]"

用read命令获取用户在terminal中的键盘输入:
read

echo "[Set the target OS, ROS version and name of catkin workspace]"

对以下几个变量赋值:
这种 变量名=${变量名:="变量内容"} 的写法,意思是如果这个变量是空的或者未赋初值,
则对其进行赋值,否则就不赋值。
name_os_version=${name_os_version:="xenial"}
name_ros_version=${name_ros_version:="kinetic"}
name_catkin_workspace=${name_catkin_workspace:="catkin_ws"}

echo "[Update the package lists and upgrade them]"

对本地软件库进行更新升级,变量-y的意思是在可能随后出现的命令行交互提示中,直接输入 yes
sudo apt-get update -y
sudo apt-get upgrade -y

echo "[Install build environment, the chrony, ntpdate and set the ntpdate]"

安装以下几个程序:
sudo apt-get install -y chrony ntpdate build-essential
命令用于同步更新互联网时间,或者NTP服务器时间(不重要):
sudo ntpdate ntp.ubuntu.com

echo "[Add the ROS repository]"

shell中可以采用if来进行条件判断,以fi结尾。if后面的[]里是判断条件,-e表示文件存在时返回true
以下命令表示,如果/etc/apt/sources.list.d/ros-latest.list不存在,那么:
创建该文件并将deb http://packages.ros.org/ros/ubuntu xenial main写入该文件,
该文件记录着程序包的下载源;
if [ ! -e /etc/apt/sources.list.d/ros-latest.list ]; then
  ”sh -c“表示执行-c后面的字符串中的命令
  sudo sh -c "echo \"deb http://packages.ros.org/ros/ubuntu ${name_os_version} main\" > /etc/apt/sources.list.d/ros-latest.list"
fi

echo "[Download the ROS keys]"
对roskey变量赋值,所赋的值为apt-key list | grep "Open Robotics"命令的返回值
roskey=`apt-key list | grep "Open Robotics"`
-z表示如果变量roskey的长度是zero,也就是说apt-key list | grep "Open Robotics"命令没有返回值,
也就是说apt-key列表中没有"Open Robotics"相关的条目,
那么把以下内容写入apt-key,可看做下载安装ros时所需要的秘钥:
if [ -z "$roskey" ]; then
  sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
fi

echo "[Check the ROS keys]"
roskey=`apt-key list | grep "Open Robotics"`
执行同样的操作检查上面步骤中添加秘钥是否成功:
-n表示如果变量roskey的长度不为0,代表成功添加秘钥
if [ -n "$roskey" ]; then
  echo "[ROS key exists in the list]"
else
  如果因为某种原因添加秘钥失败,退出此脚本
  echo "[Failed to receive the ROS key, aborts the installation]"
  exit 0
fi

echo "[Update the package lists and upgrade them]"
在添加了下载源和秘钥之后,需要做更新升级:
sudo apt-get update -y
sudo apt-get upgrade -y

echo "[Install the ros-desktop-full and all rqt plugins]"
关键步骤:下载并安装ros-kinetic程序包和相关程序包:
sudo apt-get install -y ros-$name_ros_version-desktop-full ros-$name_ros_version-rqt-*

echo "[Initialize rosdep]"
执行ros-kinetic规定的初始化和更新步骤:
sudo sh -c "rosdep init"
rosdep update

echo "[Environment setup and getting rosinstall]"
环境配置、下载安装其他程序:
source /opt/ros/$name_ros_version/setup.sh
sudo apt-get install -y python-rosinstall

echo "[Make the catkin workspace and test the catkin_make]"
执行对catkin_make的测试:
首先建立catkin_ws文件夹
mkdir -p $HOME/$name_catkin_workspace/src
cd $HOME/$name_catkin_workspace/src
初始化workspace
catkin_init_workspace
cd $HOME/$name_catkin_workspace
执行catkin_make
catkin_make

echo "[Set the ROS evironment]"
以下是对ROS环境的配置,将以下各行文字写入~/.bashrc文件:
sh -c "echo \"alias eb='nano ~/.bashrc'\" >> ~/.bashrc"
sh -c "echo \"alias sb='source ~/.bashrc'\" >> ~/.bashrc"
sh -c "echo \"alias gs='git status'\" >> ~/.bashrc"
sh -c "echo \"alias gp='git pull'\" >> ~/.bashrc"
sh -c "echo \"alias cw='cd ~/$name_catkin_workspace'\" >> ~/.bashrc"
sh -c "echo \"alias cs='cd ~/$name_catkin_workspace/src'\" >> ~/.bashrc"
sh -c "echo \"alias cm='cd ~/$name_catkin_workspace && catkin_make'\" >> ~/.bashrc"

sh -c "echo \"source /opt/ros/$name_ros_version/setup.bash\" >> ~/.bashrc"
sh -c "echo \"source ~/$name_catkin_workspace/devel/setup.bash\" >> ~/.bashrc"

sh -c "echo \"export ROS_MASTER_URI=http://localhost:11311\" >> ~/.bashrc"
sh -c "echo \"export ROS_HOSTNAME=localhost\" >> ~/.bashrc"

source $HOME/.bashrc

echo "[Complete!!!]"
完成、退出
exit 0

./install_ros_kinetic.sh

执行此脚本文件,就会在本地系统安装机器人操作系统ROS的kinetic分支。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒墨阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值