linux双击执行sh脚本
文章目录
- linux双击执行sh脚本
- 1、在桌面上新建一个Auto.sh脚本文件
- 2、打开终端在桌面目录下执行以下命令进行权限设置:
- 3、设置Terminal启动命令
- 4、双击启动程序
- 开机自启程序
- 1、在home搜索:start,如下图所示:
- 2、点击Add打开添加窗口,在Command里面添加Auto.sh文件的路径,如下图所示:
- 3、这时候可以重启电脑即可看到,rviz程序也随机启动了。
- gnome-terminal用法
- [基本用法]
- [启动后自动执行命令]
- [添加一个”用vim打开“的脚本]
程序运行所需环境:
运行系统: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-terminal
Name[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/bash
gnome-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
-------------------------------------------------------------------------------
不过选中多个文件还不行,因为也没这个需要,所以暂时就这样了