在 Windows 中,我可以编写一个包含 cmd 命令(通常是.cmd
或.bat
文件)的文件。当我单击这些文件时,它将打开cmd.exe
并运行文件包含的命令。
我该如何在 Ubuntu 中做到这一点?
我确信这是重复的,但我找不到答案。
它与这些问题类似,但它们没有回答这个问题:
答案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
该方法会将 的内容覆盖file
为text
。如果您想要清除文件,只需执行以下操作即可:
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
。
希望这对你有帮助并且祝你编写脚本愉快!