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

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

我如何在Ubuntu中执行此操作?

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

将常用的终端命令存储在文件中

Ubuntu中的CMD.exe模拟器运行.cmd / .bat文件

有两种方法。

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

 #!/bin/bash 

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

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

几点说明:

  • 任何(我的意思是任何)文件都可以在Linux中执行,前提是第一行是应该解释文件的程序的路径。 常见的例子包括/bin/python/bin/sh/bin/dash ,但即使是奇怪的球也可以像/bin/mysql一样工作
  • Bash是一种完整的语言。 它比Windows中的cmd.exe复杂得多。 它有一个强大的编程语言,支持函数,循环,条件,字符串操作等。
  • 如果遇到问题, 这些文档可能会有所帮助。
  • 如果你不想使文件可执行,那么你可以通过将它作为参数传递给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记录命令。 运行script然后只是做的东西。 当你完成了东西类型exit和脚本将为你生成一个文件与你做的所有“东西”。 这种方法使用较少,但对于制作像宏这样的东西效果很好。 man script更多信息。

相当于Windows批处理文件的是shell脚本,一个很好的入门指南是Bash Scripting 。

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

与Windows批处理文件不同的一些事情:

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

  • 要运行shell脚本,您需要使文件可执行,您可以使用chmod +x

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

  • 变量名是$ ,而不是%%

  • 默认情况下不会打印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 

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

希望这可以帮助!


编辑 :哦,我明白了,所以你要用gedit编写文件,使用.sh扩展名(可选,但这是一个好主意),然后在文件管理器上,右键单击该文件,选择Properties-> Permissions,并选中Allow executing file as program 。 然后你可以双击它,它将运行:)。 此外,如果要在终端中执行此操作,可以运行此命令使其可执行(如果不属于您,则可能需要预先添加sudo ):

 chmod +x file 

并运行:

 ./file