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

Set*_*eth 130 command-line bash files executable

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

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

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

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

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

cot*_*eyr 167

有两种方法。

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

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

然后保存文件。接下来将其标记为可执行使用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"
Run Code Online (Sandbox Code Playgroud)

第二种方法是使用script. 运行script然后做事。完成后,类型exit和脚本将为您生成一个文件,其中包含您所做的所有“东西”。这较少使用,但对于制作宏之类的东西非常有效。man script了解更多信息。

  • 如果您与文件位于同一文件夹中,请确保 ./file.sh (5认同)
  • 我想指出`/bin/dash`(`/bin/sh` 通常被符号链接到),比bash 快很多(我测得大约快15 倍)。如果可能的话,对 shell 脚本使用 `/bin/dash` :) (2认同)

MiJ*_*Jyn 18

您的意思是使用 shell 脚本写入文件?这里有几个方法:

touch file
Run Code Online (Sandbox Code Playgroud)

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

echo "text" > file
Run Code Online (Sandbox Code Playgroud)

该方法会覆盖fileto的内容text。如果要清除文件,只需执行以下操作:

echo "" > file
Run Code Online (Sandbox Code Playgroud)

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

cat << EOF > file
test
test1
foo
bar
EOF
Run Code Online (Sandbox Code Playgroud)

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

test
test1
foo
bar
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助!


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

chmod +x file
Run Code Online (Sandbox Code Playgroud)

并运行:

./file
Run Code Online (Sandbox Code Playgroud)


iBe*_*eve 14

相当于 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

希望这会有所帮助,并有乐趣脚本!