在Windows中,我可以写含有CMD(通常命令的文件.cmd
或.bat
文件)。当我单击这些文件时,它将打开cmd.exe
并运行文件中包含的命令。
我将如何在Ubuntu中做到这一点?
我确定这是重复的,但找不到答案。
它与以下问题类似,但未回答以下问题:
在Windows中,我可以写含有CMD(通常命令的文件.cmd
或.bat
文件)。当我单击这些文件时,它将打开cmd.exe
并运行文件中包含的命令。
我将如何在Ubuntu中做到这一点?
我确定这是重复的,但找不到答案。
它与以下问题类似,但未回答以下问题:
Answers:
有两种方法。
首先,最常见的是写一个文件,确保第一行是
#!/bin/bash
然后保存文件。接下来将其标记为可执行文件chmod +x file
然后,当您单击(或从终端运行文件)时,将执行命令。按照惯例,这些文件通常没有扩展名,但是您可以使它们以.sh
其他方式结束。
一些注意事项:
/bin/python
, /bin/sh
,/bin/dash
,但偶奇球的东西像工作/bin/mysql
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
有关更多信息。
/bin/dash
(/bin/sh
通常与之链接)比bash快很多(我测量的速度大约快15倍)。如果有可能,请使用/bin/dash
shell脚本:)
您的意思是使用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中写入文件,然后在文件管理器上,右键单击该文件,选择“属性”->“权限”,然后检查Allow executing file as program
。然后,您可以双击它,它将运行:)。另外,如果要在终端中执行此操作,则可以运行以下命令以使其可执行(sudo
如果不属于您,则可能需要添加前缀):
chmod +x file
并运行:
./file
touch filename
echo "" > file
。如果我在回答中包含该方法,可以吗?
与Windows批处理文件等效的是shell脚本,而Bash Scripting是一个很好的入门指南。
在大多数情况下,可以在命令行中输入的命令可以放置在Shell脚本中。
与Windows批处理文件不同的几件事:
有不同的命令解释器,称为外壳程序。默认值为bash,但是如果您感兴趣的话,还有其他一些,例如zsh,ksh,破折号,perl,python等。
要运行Shell脚本,您需要使文件可执行,您可以使用 chmod +x <filename>
在Ubuntu中,当前目录不是程序搜索路径,因此您需要运行./<filename>
,而不是<filename>
变量名是$<varname>
,不是%<varname>%
默认情况下,不像批处理文件一样打印Shell脚本中的命令。
文件名的扩展名可以是.sh
或(更常见),您不需要使用扩展名。放在#!/bin/bash
文件的第一行,它告诉Ubuntu使用什么程序来运行文件。
评论以开头#
,而不是rem
。
希望这对您有所帮助,并提供有趣的脚本!
/bin/bash
为/bin/sh
,bash甚至不是Ubuntu的默认设置。