linux 下想执行一条命令,想双击之后执行,,就类似win下的.bat文件怎么做?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 下想执行一条命令,想双击之后执行,,就类似win下的.bat文件怎么做?相关的知识,希望对你有一定的参考价值。

比如sudo /etc/init.d/ssh start这句,我写在一个文件里,然后我双击运行这个文件就自动运行这个文件,怎么做?

这个问题其实很好办,写一个脚本就可以办到,脚本内容如下:
#!bin/bash
sudo /etc/init.d/ssh start
这个脚本的名字就很随意了,因为Linux中文件是否能执行和扩展名没有什么关系。建议给予这个文件足够的权限,比如让所有用户都能执行它就行了。命令:chmod a+x xxx (xxx为脚本的名字)。
如果这个机器仅仅是你自己在用,并不是搞一个什么正经的服务器的话(服务器要考虑安全),这个脚本可以放置在/bin目录下,之后你执行这个脚本就很方便了。直接在终端输入这个脚本的名字就可以执行了。
如果你是真正在学Linux,你会发现鼠标实际上用的不是很多的,建议还是正经的学点命令行吧,Linux下工作站上很少能看到鼠标的。
参考技术A 写一个bash角本,例如叫:script.sh ,内容如下:
#/bin/bash
sudo /etc/init.d/ssh start

然后,保存该角本文件,不要在windows下写角本内容,有DOS字符。
在终端窗口下,chmod 755 script.sh 更改角本权限
在终端窗口下,执行./script.sh 就可以了
如果想周期执行,可用crontab来自:求助得到的回答
参考技术A 写大一个文件件里,并赋予它可执行权限。
如在123.sh中写入
#!/bin/bash
sudo /etc/init.d/ssh start
切换到命令行,
chmod +x 123.sh
参考技术B 脚本名称记好 例如 123.sh

然后在里面写
#!/bin/bash

nohup /etc/init.d/ssh start > 123.log(爱输出到哪儿输出到哪儿 到/dev/null也行)

保存后即可执行
要结束的时候 ps aux |grep 123.sh
然后 kill掉查到的进程号即可追问

echo passwd|nohup sudo /etc/init.d/ssh start > 123.log

想这样给sudo输入密码,但是还提示我输入密码,,这是为神码?

追答

两个办法
1 nohup sudo /etc/init.d/ssh start > 123.log <<!
密码
!

2 直接让该用户sudo不需要密码
/etc/soduer 首先修改该文件可写
然后加入
用户名 ALL=(ALL) NOPASSWD: ALL
保存后记得去掉写权限

追问

#!/bin/bash
nohup sudo python ~/下载/fq/goagent/local/proxy.py 2>11.log 1>123.log<<!
passwd
!
还是提示输入密码

追答

哦 搞错了 这种方式是用来给前面的语句输入指令的 不好意思
在你上面的命令的sudo 后面加参数-S 即可

本回答被提问者采纳
参考技术C ln -s /etc/init.d/ssh /root/desktop/ssh 双击ssh就可以运行

Linux之shell

shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时,表示执行失败。
有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。
&&(命令执行控制)
语法格式如下:
command1 && command2 [&& command3 ...]
1 命令之间使用 && 连接,实现逻辑与的功能。
2 只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
3 只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
示例 1
malihou@ubuntu:~$ cp ~/Desktop/1.txt ~/1.txt && rm ~/Desktop/1.txt && echo "success"
示例 1 中的命令首先从 ~/Desktop 目录复制 1.txt 文件到 ~ 目录;执行成功后,使用 rm 删除源文件;如果删除成功则输出提示信息。
||(命令执行控制)
语法格式如下:
command1 || command2 [|| command3 ...]
1 命令之间使用 || 连接,实现逻辑或的功能。
2 只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。
3 只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。
示例 2
malihou@ubuntu:~$ rm ~/Desktop/1.txt || echo "fail"
在示例 2 中,如果 ~/Desktop 目录下不存在文件 1.txt,将输出提示信息。
示例 3
malihou@ubuntu:~$ rm ~/Desktop/1.txt && echo "success" || echo "fail"
在示例 3 中,如果 ~/Desktop 目录下存在文件 1.txt,将输出 success 提示信息;否则输出 fail 提示信息。

shell 提供了两种方法(() 和 )实现将几个命令合作一起执行,代替独立执行。这种方式并不能控制命令是否需要执行,仅是将多个单独的命令组合在一起执行,最终命令的返回值将由最后一条命令的返回值来决定。
() (命令组合)
语法格式如下:
(command1;command2[;command3...])
1 一条命令需要独占一个物理行,如果需要将多条命令放在同一行,命令之间使用命令分隔符(;)分隔。执行的效果等同于多个独立的命令单独执行的效果。
2 () 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。
3 命令组合常和命令执行控制结合起来使用。
示例 4
malihou@ubuntu:~$ rm ~/Desktop/1.txt || (cd ~/Desktop/;ls -a;echo "fail")
在示例 4 中,如果目录 ~/Desktop 下不存在文件 1.txt,则执行命令组合。


参考网址见:http://blog.csdn.net/xyls12345/article/details/39054555

以上是关于linux 下想执行一条命令,想双击之后执行,,就类似win下的.bat文件怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

请问我在Linux下想实现一个终端同时通过SSH执行其它多个终端内的shell脚本怎么实现?

linux中批处理文件顺序执行命令的输入

Linux之shell

linux 做了个备份脚本 .sh的,用命令sh bf.sh可以执行,如何放到桌面上双击运行,并看到执行过程,非常感谢!

ubuntu 脚本运行权限

如何执行shell脚本其中一条命令