linux双击执行sh脚本

文章目录

  • linux双击执行sh脚本
    • 1、在桌面上新建一个Auto.sh脚本文件
    • 2、打开终端在桌面目录下执行以下命令进行权限设置:
    • 3、设置Terminal启动命令
    • 4、双击启动程序
    • 开机自启程序
      • 1、在home搜索:start,如下图所示:
      • 2、点击Add打开添加窗口,在Command里面添加Auto.sh文件的路径,如下图所示:
      • 3、这时候可以重启电脑即可看到,rviz程序也随机启动了。
    • gnome-terminal用法
      • [基本用法]
      • [启动后自动执行命令]
      • [添加一个”用vim打开“的脚本]

链接1

链接2

程序运行所需环境:
运行系统:Ubuntu16.04运行环境:ROS Kinetic程序语言:Ubuntu1604自带的Python2.7以及sh脚本文件

双击启动程序

1、在桌面上新建一个Auto.sh脚本文件

1、文件里面内容如下:


#! /bin/bash
# 开头这句话必不可少
source /opt/ros/kinetic/setup.bash    # 启动ros环境
gnome-terminal -x bash -c "roscore" & # 启动roscore命令
sleep 2
gnome-terminal -x bash -c "rviz" &    # 启动rviz
点击保存关闭。

2、打开终端在桌面目录下执行以下命令进行权限设置:

sudo chmod +x Auto.sh
二、添加一个Terminal到桌面
在home中搜索Terminal,找到后拖到桌面上,如下图所示

3、设置Terminal启动命令

在桌面的Terminal图标上右键菜单里选择Properties,然后在Command那一栏中填入Auto.sh文件的路径,如下图所示:

(获取路径方法:可以直接在Auto.sh文件上右键点击copy,然后在Command里面粘贴即可。)

然后点击关闭按钮进行关闭。(也可以顺便更换图标,点击左上角那个图标,选择需要更换的图片即可,也可以重命名图标名称。)

可以使用vim查看xxx.desktop文件,修改里面的属性

内容如下

[Desktop Entry]
Name=Terminal  // 名称
Comment=Use the command line
Keywords=shell;prompt;command;commandline;cmd;
TryExec=gnome-terminal
Exec=/home/zhongsy/visual_script/test_visual.sh   // 命令
Icon=/home/zhongsy/视觉调试.jpg     // 图标
Type=Application
X-GNOME-DocPath=gnome-terminal/index.html
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-terminal
X-GNOME-Bugzilla-Component=BugBuddyBugs
X-GNOME-Bugzilla-Version=3.18.3
Categories=GNOME;GTK;System;TerminalEmulator;
StartupNotify=true
X-GNOME-SingleWindow=false
OnlyShowIn=GNOME;Unity;
Actions=New
X-Ubuntu-Gettext-Domain=gnome-terminalName[en_US]=visul_debug

4、双击启动程序

双击刚刚操作完的图标,即可启动基于ROS的rviz程序,如下图所示:

如果出现如上图所示的界面,说明运行成功了。
————————————————

开机自启程序

1、在home搜索:start,如下图所示:

打开之后如下图所示:

2、点击Add打开添加窗口,在Command里面添加Auto.sh文件的路径,如下图所示:

(获取路径方法:可以直接在Auto.sh文件上右键点击copy,然后在Command里面粘贴即可。)

添加完毕的窗口如下图所示:

点击close即可。

3、这时候可以重启电脑即可看到,rviz程序也随机启动了。

gnome-terminal用法

[基本用法]

gnome-terminal命令用于打开一个新的终端,直接在命令行

$ gnome-terminal

就可以打开一个新的终端,有一些常用参数:

打开后自动最大化

$ gnome-terminal --maximize

打开后全屏

$ gnome-terminal --full-screen

设置标题

$ gnome-terminal --title="new title"

打开多个终端,多个tab

$ gnome-terminal --window --window #打开两个$ gnome-terminal --window --tab --window --tab --tab #打开两个,第一个两个tab,第二个3个tab

设置打开的位置和大小(宽度x高度+左侧偏移量+上方偏移量)

$ gnome-terminal --geometry=80x25+10+10

[启动后自动执行命令]

有两个参数可以实现这个功能,-e和-x,这两个区别在于:

  • -e 可以出现多次,如果在所有–window前面,表示对所有window和tab起作用,如果在–window或者–tab后面,表示只针对这个tab执行,要注意-e后面只能有一个参数,也就是说如果有空格,需要用引号,具体见后例
  • -x 只能出现一次,在-x后面的所有内容,均认为是要执行的命令,所以可以出现空格,这些命令是针对所有tab都执行的

比如:

$ gnome-terminal -e ls$ gnome-terminal -x ls

这两个的执行结果都一样,就是新的终端闪一下就没了,有几种办法:

  • 一种是修改terminal的配置,在terminal点右键,选择Profiles->Profile Preferences,然后找到Title and Command,里面有一项When command exits,后面选择为Hold the terminal open,然后就可以了

  • 第二种是把结果重定向给less,这样less执行完之前,是不会退出的

$ gnome-terminal -x ls|less
  • 第三种是在bash里面再启用一个bash
$ gnome-terminal -x bash -c "ls; exec bash"$ gnome-terminal -e 'bash -c "ls; exec bash"'

注意最后一个命令是exec bash,如果直接写bash也行,相当于开了一个子shell,这样有个**缺点,就是直接按关闭按钮的话,会提示还有程序在运行,**需要注意的是,这里执行的命令,在调用.bashrc之前,所有.bashrc的所有配置都无效,如果需要用到.bashrc里面的内容,有个变通的办法,在.bashrc最后加上一句

--------------------.bashrc--------------------其他内容#最后加上这句
evel "$RUN_AFTER_BASHRC"
-----------------------------------------------

然后在写命令的时候,修改RUN_AFTER_BASHRC这个变量,就可以实现让.bashrc调用这个命令

$ gnome-terminal -x bash -c 'export RUN_AFTER_BASHRC="ls --help"; exec bash'

或者下面的写法比较简单(注意对所有tab生效),也不会自动关闭了

$ RUN_AFTER_BASHRC="ls" gnome-terminal

[打开一个terminal并预先输好一段文字]

这个需求比较偏门,解决方法不错,就是利用expect这个工具,最后的程序如下

----------------------------myprompt-----------------------
#!/usr/bin/expect
#trap sigwinch and pass it to the child we spawned
#this allows the gnome-terminal window to be resized
trap {set rows [stty rows]set cols [stty columns]stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH
set arg1 [lindex $argv 0]
# Get a Bash shell
spawn -noecho bash
# Wait for a prompt
expect "$ "
# Type something
send $arg1
# Hand over control to the user
interact
exit
------------------------------------------------

调用方法(注意文件的路径要写全):

gnome-terminal -e "./myprompt \"my text to be posted\""

[添加一个”用vim打开“的脚本]

研究这个gnome-terminal的目的,是为了写一个脚本,实现右键选一个文件,然后可以用vim打开,最后的脚本文件如下(两种方法都写了)

-------------------~/.gnome2/nautilus-scripts/OpenWithVIM----------------------#!/bin/bashgnome-terminal -x bash -c 'export RUN_AFTER_BASHRC="vim $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"; exec bash'#RUN_AFTER_BASHRC="vim $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" gnome-terminal-------------------------------------------------------------------------------

不过选中多个文件还不行,因为也没这个需要,所以暂时就这样了

linux双击执行sh脚本相关推荐

  1. linux下双击执行.sh脚本文件

    1.当写好一个.sh脚本文件后,给他赋予执行权限后,双击的时候,默认是以文本编辑器打开的,无法运行该脚本文件. 2.打开终端. 3.输入如下命令,需要联网: sudo apt install dcon ...

  2. linux执行sh脚本报错的解决办法

    在我们的最小化安装的linux下,执行sh脚本文件不生效,报错如下: 解决方法如下: 安装成功后再次执行: 执行成功!!!

  3. linux 执行sh脚本传参数

    linux脚本根据动态参数判断 解决方法: sh  /data/test.sh  "123"  上面执行test.sh脚本时就传递了一个参数123 其中$1指的是执行sh脚本时所传 ...

  4. ubuntu linux下执行.sh文件

    ubuntu linux下执行.sh文件 首先,要确保这个文件的类型是可执行的. 有两种办法把文件设置为可执行文件. 1) 直接在文件属性标签中选中 "可执行",--b 如果用的是 ...

  5. Linux中执行shell脚本的4种方法

    这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写 ...

  6. Linux 定时执行shell 脚本

    2019年第 85 篇文章,总第 109 篇文章 本文大约2000字,阅读大约需要6分钟 crontab 可以在指定的时间执行一个shell脚本以及执行一系列 Linux 命令. 定时执行shell ...

  7. Linux定期执行xshell脚本(入门)

    文章目录 Linux定期执行xshell脚本(入门) 相关阅读: `crontab定时任务` · 语法规则 · 设置举例: 新建的 `.sh` 脚本需要 `添加可执行权限` · 如下: 检查服务器 是 ...

  8. Linux中执行shell脚本的5种方法总结

    Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: c ...

  9. linux执行shell过程日志,Android之在linux终端执行shell脚本直接打印当前运行app的日志...

    1.问题 我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是 1).获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名 a ...

  10. linux下执行.sh文件的方法和语法

    linux下执行.sh文件的方法    .sh文件就是文本文件,如果要执行,需要使用chmod a+x xxx.sh来给可执行权限.       是bash脚本么   可以用touch test.sh ...

最新文章

  1. 关于无法创建aps.web项目的解决办法
  2. UUID.randomUUID()生成唯一识别码
  3. Hibernate总结
  4. LeetCode 编程 二
  5. 优秀的服务器托管服务商的必备要素
  6. Python 的 Magic Methods 指南(转)
  7. python面试题总结(一)字符串反转,写取指定数函数
  8. LightOJ 1278 - Sum of Consecutive Integers 分解奇因子 + 思维
  9. poj3233Matrix Power Series
  10. GDAL被java调用 Cannot find proj.db
  11. 这么多年都白学了,原来是方法没有用对
  12. Redis的持久化机制:RDB和AOF
  13. python3手机版画图软件_Python实现画图软件功能方法详解
  14. 绝对估值法和相对估值法
  15. 最基本财务基础知识,财务知识基础
  16. ioi 赛制_钟子谦IOI2019参赛总结
  17. Pycharm debug崩溃、长时间不响应 解决
  18. 【技术详解】阿里云AIoT物模型支撑设备规模已超亿级
  19. powerquery分组_power query 如何累计求和?如何分组分条件?
  20. AWS DynamoDB的简介与使用

热门文章

  1. 通过requests获取网络上图片的大小
  2. 机器学习(课堂笔记)Day01:机器学习相关概念简介
  3. html5清新文艺,30句清新文艺范的句子
  4. 糖友如何选择正确的饮食计划
  5. 5GC 网元介绍(AMF、SMF、UPF、UDM、PCF)
  6. Linux运维职业困惑?给你史上最全互联网Linux工作规划!
  7. 游戏服务器哪种系统稳定,游戏服务器一般用什么系统吗
  8. 使用钉钉机器人实现运维告警信息自动发送(Python、Nagios、Shell)
  9. XP突然弹出“automation 服务器不能创建对象”的有效解决方法--win10专业版
  10. C# DLL HRESULT:0x8007000B