当前位置:  开发笔记 > 编程语言 > 正文

一个更好的Linux shell?

如何解决《一个更好的Linuxshell?》经验,为你挑选了5个好方法。

我使用bash,已经这样做了十多年 - 但偶尔我想知道Linux shell世界是否有任何重大的新发展.

几年前,微软发布了PowerShell,这看起来非常有趣.Linux shell中是否有类似的创新?



1> lhunath..:

您是否意识到bash 4最近发布了大量新功能和语言新增功能?

Shell options globstar(**/foo)执行递归搜索,dirspell修复路径名扩展期间的拼写错误.

关联数组,将字符串映射到字符串,而不仅仅是数字到字符串.

autocd外壳选项允许通过只输入的目录路径,而不必把更改目录cd在前面.

协进程

&>>|&重定向运算符重定向stdoutstderr

对现有内置程序的大量添加,以提高脚本编写的便利性.

查看:

"官方"更改日志: http://tiswww.case.edu/php/chet/bash/CHANGES

一些新功能的简短指南: http://bash-hackers.org/wiki/doku.php/bash4



2> stonea..:

我看看zsh或fishshell.


似乎更换炮弹很容易.您不必将它作为登录shell,您可以在登录后运行它.

3> Tim Post..:

Bash(和其他一些shell)最不受欢迎的功能之一是能够编写自己的可加载项,并让shell将它们作为内置运行.

让我们说你写了可加载'打开'..你希望它像这样工作:

on node 123 run some command
on class nodes run some command
on all nodes run some command

...等..

您可以按照关于如何编写可加载的简单示例,然后通过enable -f/path/to/loadable loadable_name将其作为内置的bash启用

所以在我们的例子中,启用-f/opt/bash/loadables/on

...在你的bashrc中,你已经知道了.

因此,如果您希望bash本地解释您的spiffy新语言,您可以编写一个名为'use'或'switch_to'的可加载项,然后修改解析器以在设置某个环境变量时加载不同的语法/运行时.

即:

#/bin/bash

switch_to my-way-cool-language

funkyfunc Zippy(int p) [[
   jive.wassup(p) ]]

然而,大多数人并不想破解他们的外壳.我确实想要指出,存在一些设施可以让Bash按照你想要的方式运行,而不会过多地使用核心代码.

请参阅/ path-to-bash-source/examples/loadables,你可能能够在你工作的地方飞行,因为你还在使用Bash.


一个很好的例子就是RenéRebe的[Lua Bash](http://freshmeat.net/projects/luabash/),它是一个可加载的,它定义了一个执行Lua的内置`luabash`,以及一些用于添加的基础设施进一步建造,&c.[示例](http://svn.exactcode.de/t2/trunk/misc/luabash/example/example.sh)可以了解发生了什么.

4> Norman Ramse..:

我认为"原始改进的外壳"是ksh93.bash是在ksh源代码专有的时候出现的; 如果ksh当时是开源的,那么可能没有必要设置一个新的shell(尽管有FSF你从来不知道).ksh值得研究,特别是因为它能够通过C模块扩展,但它并不是对bash的明确胜利.bash的自动完成显然是优越的,这可能足以让bash成为一个全面的胜利.在任何情况下,bash和ksh都付出了很大的努力来收敛,所以差异很小.

另一个有趣的shell是zsh,它试图成为ksh所有的东西,同时也包括csh.由于我从来没有看到任何观点或使用csh,我不是倡导zsh的合适人选.我将指出一个不寻常的不兼容性:默认情况下,在zsh中,变量$var 总是扩展为单个标记,即使它包含空格.这种行为与所有其他sh派生的shell不兼容,并且它偶尔会带来不便,但实际上它比原版更有意义,并且它节省了大量的引用.

csh是第一个拥有工作控制权的shell,但在我看来它(以及它的继承者)已经被bash和ksh所取代.编写脚本从来都不是很有趣.

最后,有许多微型外壳设计用于救援软盘(!)和其他Spartan环境,但听起来你对它们没什么兴趣.

(在创新方面,我应该补充一点,我以前用来编写shell脚本的脚本中有一半以上是Lua脚本.其他人可以对Python或Ruby说同样的话,或者说白天,Perl或Tcl.所以我认为真正的创新是从命令行的可编程交互中移出shell.)



5> John D. Cook..:

您可以通过Pash在Linux上运行PowerShell .它以PowerShell使用.NET的方式使用Mono.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有