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

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

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

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

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

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

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

答案1

有两种方法。

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

#!/bin/bash

然后保存文件。接下来使用以下命令将其标记为可执行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了解更多信息。

答案2

您是指使用 shell 脚本写入文件吗?以下是几种方法:

touch file

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

echo "text" > file

该方法会将 的内容覆盖filetext。如果您想要清除文件,只需执行以下操作即可:

echo "" > file

假设您想要写入多行,并且不想使用数千条echo命令,则可以使用以下命令:

cat << EOF > file
test
test1
foo
bar
EOF

这样你就可以在一条命令中写入多行。内容file如下:

test
test1
foo
bar

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

希望这可以帮助!


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

chmod +x file

并运行:

./file

答案3

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

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

与 Windows 批处理文件有以下几点不同:

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

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

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

  • 变量名$<varname>不是%<varname>%

  • 默认情况下,不会打印 Shell 脚本中的命令,就像在批处理文件中一样。

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

  • 注释以 开头#,而不是rem

希望这对你有帮助并且祝你编写脚本愉快!

相关内容