Bash (Bash)、Z shell (zsh)、Fish (Fish)等shell语言和上面的脚本语言之间有什么区别,使它们更适合于shell?

在使用命令行时,shell语言似乎要容易得多。例如,对我来说,使用bash比在IPython中使用shell配置文件要流畅得多,尽管报告与此相反。我想大多数人都会同意我的观点,在Python中进行大部分中型到大型的编程比在Bash中更容易。我使用Python作为我最熟悉的语言。Perl和Ruby也是如此。

我试着阐明原因,但我不能,除了假设两者对字符串的不同处理与此有关。

提出这个问题的原因是我希望开发一种两者都可用的语言。如果你知道这样的语言,也请贴出来。

正如s .洛特所解释的,这个问题需要一些澄清。我问的是shell语言和脚本语言的特性。因此,比较不是关于各种交互(REPL)环境的特征,如历史记录和命令行替换。这个问题的另一种表达方式是:

适合于复杂系统设计的编程语言是否能够同时表达可以访问文件系统或控制作业的有用的一行程序?一种编程语言能有效地扩展和缩小吗?


当前回答

如果你知道这样的语言,也请贴出来。

Tcl就是这样一种语言。主要是因为它主要被设计为CAD程序的shell解释器。以下是一位铁杆Python程序员体会到Tcl为何被设计成这样的经历:我不敢相信我在称赞Tcl

对我来说,我已经编写并一直在使用并改进了Tcl shell(当然是用Tcl编写的),作为我在自制路由器上的主要Linux登录shell: Pure Tcl readline

总的来说,我喜欢Tcl的一些原因与它与传统shell的语法相似有关:

At its most basic, Tcl syntax is command argument argument.... There's nothing else. This is the same as Bash, C shell or even DOS shell. A bareword is considered a string. This is again similar to traditional shells allowing you to write: open myfile.txt w+ instead of open "myfile.txt" "w+". Because of the foundations of 1 and 2, Tcl ends up with very little extraneous syntax. You write code with less punctuation: puts Hello instead of printf("Hello");. When writing programs you don't feel the hurt so much, because you spend a lot of time thinking about what to write. When you use a shell to copy a file you don't think you just type and having to type ( and " and , and ) and ; again and again gets annoying very quickly.

*注:不是我;我是一个铁杆的Tcl程序员

其他回答

如果你知道这样的语言,也请贴出来。

Tcl就是这样一种语言。主要是因为它主要被设计为CAD程序的shell解释器。以下是一位铁杆Python程序员体会到Tcl为何被设计成这样的经历:我不敢相信我在称赞Tcl

对我来说,我已经编写并一直在使用并改进了Tcl shell(当然是用Tcl编写的),作为我在自制路由器上的主要Linux登录shell: Pure Tcl readline

总的来说,我喜欢Tcl的一些原因与它与传统shell的语法相似有关:

At its most basic, Tcl syntax is command argument argument.... There's nothing else. This is the same as Bash, C shell or even DOS shell. A bareword is considered a string. This is again similar to traditional shells allowing you to write: open myfile.txt w+ instead of open "myfile.txt" "w+". Because of the foundations of 1 and 2, Tcl ends up with very little extraneous syntax. You write code with less punctuation: puts Hello instead of printf("Hello");. When writing programs you don't feel the hurt so much, because you spend a lot of time thinking about what to write. When you use a shell to copy a file you don't think you just type and having to type ( and " and , and ) and ; again and again gets annoying very quickly.

*注:不是我;我是一个铁杆的Tcl程序员

这些答案激励我接管基于perl的shell Zoidberg的维护工作。经过一些修复后,它又可以使用了!

查看用户指南或使用您最喜欢的CPAN客户端安装Bundle::Zoidberg。

我认为这是一个分析的问题。Shell语言默认假设普通的$ xxx命令意味着要运行的命令。在Python和Ruby中需要你做系统(“命令”)或其他什么。

并不是说它们不合适,只是还没有人真正做过;至少我是这么认为的。Rush是Ruby中的一个例子,Python有IPython或类似的东西。

对于Windows用户,我还没有感觉到对PowerShell的需求,因为我仍然使用JP Software的4NT(现在是Take Command Console)。它是一个非常好的shell,具有很多编程功能。所以它结合了两个世界的优点。

例如,当您研究IRB (Ruby解释器)时,一定很有可能使用更多的一行程序来扩展它,以执行日常脚本化或大规模文件管理,以及处理分钟级任务。

可伸缩性和可扩展性?通用Lisp(甚至可以在Unix环境中作为登录shell运行clip和其他实现)。