当前位置: 首页>>技术问答>>正文


如何为终端命令创建脚本文件?

, , , ,

问题描述

在Windows中,我可以编写一个包含cmd命令的文件(通常为.cmd.bat文件)。当我点击这些文件时,它会打开cmd.exe并运行它们所包含的命令。

我将如何在Ubuntu中做到这一点?

我确信这是重复的,但我找不到我的答案。它与这些问题类似,但他们不回答这个问题:

Store frequently used terminal commands in a file

CMD.exe Emulator in Ubuntu to run .cmd/.bat file

最佳解决方案

有两种方法。

首先,最常见的是编写一个文件,确保第一行是

#!/bin/bash

然后保存该文件。接下来使用chmod +x file将其标记为可执行文件

然后当你点击(或从终端运行文件)命令将被执行。按照惯例,这些文件通常没有扩展名,但是你可以用.sh或其他方式结束。

一些注意事项:

  • 任何(我的意思是任何)文件都可以在Linux中执行,只要第一行是应该解释该文件的程序的路径。常见的例子包括/bin/python/bin/sh/bin/dash,但即使是奇怪的球的工作也像/bin/mysql

  • Bash是一个完整的语言。它比Windows中的cmd.exe复杂得多。它具有强大的编程语言,支持函数,循环,条件,字符串操作等。

  • 如果遇到问题,These documents可能会有所帮助。

  • 如果你不想让文件成为可执行文件,那么你可以通过将它作为参数传递给bash来运行它:bash file/to/run.sh

一个简单的Bash例子

#!/bin/bash  
echo "This is a shell script"  
ls -lah  
echo "I am done running ls"  
SOMEVAR='text stuff'  
echo "$SOMEVAR"

第二种方法是使用脚本记录命令。运行script然后只是做东西。当你做完东西类型exit和脚本将为你所有”stuff”你生成一个文件。这个用法不太常用,但对于像宏这样的东西来说效果很好。 man script更多信息。

次佳解决方案

与Windows批处理文件等效的是shell脚本,一个很好的入门指南是Bash Scripting

大多数情况下,您可以在命令行中输入的命令可以放在shell脚本中。

几种与Windows批处理文件不同的内容:

  • 有不同的命令解释器,称为shell。默认是bash,但如果你感兴趣,还有其他的,比如zsh,ksh,dash,perl,python等。

  • 要运行一个shell脚本,您需要使该文件成为可执行文件,您可以使用chmod +x <filename>

  • 在Ubuntu中,当前目录不是程序搜索路径,因此您需要运行./<filename>而不是<filename>

  • 变量名称是$<varname>,而不是%<varname>%

  • shell脚本中的命令不是默认打印的,如在批处理文件中。

  • 文件名的扩展名可以是.sh或(更习惯),您不需要使用扩展名。将#!/bin/bash放在文件的第一行,它告诉Ubuntu使用什么程序来运行该文件。

  • 评论从#开始,而不是rem

希望这有助于并且玩得开心脚本!

第三种解决方案

你的意思是使用shell脚本写入文件?以下是几种方法:

touch file

这个方法只会创建一个文件,但是如果文件已经存在,它只会将修改日期更改为您使用该命令的时间。

echo "text" > file

该方法将file的内容覆盖为text。如果你想清除一个文件,你可以简单地这样做:

echo "" > file

假设你想写多行,而且你不想使用成千上万的echo命令,你可以使用这个命令:

cat << EOF > file
test
test1
foo
bar
EOF

这使您可以在一个命令中写入多行。 file的内容就是这样:

test
test1
foo
bar

如果要附加到文件,请将>替换为>>

希望这可以帮助!


编辑:哦,我明白了,所以你会使用.sh扩展名(可选,但它是个好主意)在gedit中编写文件,然后在文件管理器上右键单击该文件,选择Properties-> Permissions,并检查Allow executing file as program。然后你可以在double-click上运行:)。另外,如果你想在终端中这样做,你可以运行这个命令来使其可执行(如果它不属于你,你可能想要预先配置sudo):

chmod +x file

并运行:

./file

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/819.html,未经允许,请勿转载。