无需键入扩展名即可运行脚本

时间:2017-12-14 06:48:00

标签: bash git-bash

我在windows上使用git-bash。

有没有办法让它在不输入文件扩展名的情况下运行Windows批处理(.cmd)?

关于* .sh文件的相同问题。我更喜欢将bash脚本放入.sh中,以便在浏览器中区分它们。

PS。不欢迎没有扩展名的别名或代理脚本。

希望有一些极客可以做到这一点。所以,还在寻找答案......

3 个答案:

答案 0 :(得分:2)

你可以使用任何bash(cmder,git-bash,ms bash,cygwin,gnu-utilities ......),即使存储为.exe,也可以使用任何没有扩展名的unix命令。

注意CR / LF,并在每个shell脚本创建时使用dos2unix,以防止误解行结尾。

如果没有扩展程序,您将无法使用.sh文件...但要为每个脚本创建别名:

$ alias myscript="/usr/local/bin/myscript.sh"

将它们放在你的〜/ .bashrc

答案 1 :(得分:1)

首先关于文件扩展名的一些内容:

  

文件扩展名是指定为后缀的标识符   计算机文件的名称。扩展名表示特征   文件内容或其预期用途。通常是文件扩展名   以文件名分隔的句号(句点),但在某些文件名中   系统用空格分隔。

     

某些文件系统将文件扩展名实现为   文件系统本身可能会限制文件系统的长度和格式   扩展,而其他人将文件扩展名视为一部分   文件名无特殊区别。

     

类UNIX操作系统的文件系统(与DOS / Windows相对)不会分离   来自文件名其余部分的扩展元数据。点字符   只是主文件名中的另一个字符,文件名可以有   多个扩展,通常表示嵌套转换,...​​...

关于您的shell脚本:

所以基本上在Unix文件扩展名中并不重要/不强制,所以你可以直接省略它们。如果出于任何原因想要保留它们(我相信你应该这样做),那么你可以为它们定义一个别名。 (参考https://askubuntu.com/questions/17536/how-do-i-create-a-permanent-bash-alias

您还必须牢记在Unix和Windows之间存在差异的EOL字符('\n' vs '\r\n'

关于你的windows批处理,你不能直接在类似Unix的环境中运行它们,这样你就无法从你的git bash同时运行它们,除非你使用GH4W之类的工具({ {3}})或使用git-cmd.batgithub generate ssh key on windows

答案 2 :(得分:0)

也许我已经找到了需要一些额外编码的解决方案。您可以尝试重写代码,而不是在键入不存在的命令时侮辱用户,而是通过添加'.sh'或'.cmd'来执行命令。

GitGub:insult-linux-unix-bash-user-when-typing-wrong-command

还要搜索command_not_found_handle。这在大多数Linux系统上都可用,并且可能适用于git-bash。