几年来,shell作为我们与操作系统通信的方式,本质上是一个命令解释器,接收我们输入的命令(比如ls、cat等)。),然后调用相应的应用程序。今天你可能还在使用古老的bash和sh,或者稍微好看一点的zsh、ksh、cshshell,或者Windows下使用的PowerShell。今天要给大家介绍一款生产力工具(神器)Shell。它被称为纽壳。关键是它是用程序员最爱的Rust写的。它非常快。作为内核的接口,用Rust重写Shell提高了安全性,错误率降低了。NuShell从许多熟悉的领域汲取灵感:bash等传统shell、PowerShell等高级shell、函数式编程、系统编程等。但NuShell并没有试图成为所有行业的杰作,而是专注于做好几件事:创建具有现代感的灵活的跨平台shell允许您将命令行应用程序与理解数据结构并匹配用户的shell混合使用现代命令行应用程序提供的体验优化以强大的管道控制你的操作系统一切都是数据,可以像sql一样查询数据插件系统,你可以通过编写自己的插件来扩展Shell当你运行一个时使用ls这样的命令,首先要注意得到的不是文本块,而是结构化的表格>ls*.md────┬──────────────────────────────────────┬──────┬────────────────────────────#│名称│类型│尺寸│已修改────┼────────────────────────┼──────────┼───────────────────────────────────────────────────────────────────────────────────0│CODE_OF_CONDUCT.md│文件│3.4KB│5天前1│CONTRIBUTING.md│文件│886B│5daysago2│README.md│文件│15.0KB│5daysago3│TODO.md│文件│1.6KB│5daysago────┴──────────────────────────────────────────────────这张表不仅仅是以另一种方式显示当前目录。与电子表格中的表格一样,数据可以以更交互的方式进行操作。例如,您可以做的第一件事是按文件大小对表进行排序。>ls|sort-bysize|reverse────┬────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────────#│名称│类型│尺寸│已修改──────┼────────────────────────────┼────────┼────────┼────────────0│Gemfile.lock│文件│6.9KB│3daysago1│SUMMARY.md│文件│3.7KB│3daysago2│Gemfile│文件│1.1KB│3daysago3│许可证│文件│1.1KB│3daysago4│贡献.md│文件│955B│9minsago5│books.md│文件│687B│.3daysgo.│.你可以看到我们没有将命令行参数传递给ls。相反,使用Nu提供的sort-by命令对ls的输出进行排序。为了让最大的文件在顶部,还使用了反向。Nu提供了许多可用于表的命令。例如,可以过滤ls表以仅显示大于1KB的文件>ls|wheresize>1kb────┬──────────────────────────────────┬────────────┬────────────────────#│名称│类型│尺寸│已修改────┼────────────────────────────────────────────┼────────────┼────────────0│Gemfile│File│1.1KB│3daysago1│Gemfile.lock│File│6.9KB│3daysago2│LICENSE│File│1.1KB|────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬──────────#│pid│name│status│cpu│mem│virtual──────┼──────────────────────────────────────────────┼────────────┼──────────────────────────────────────────────────────────————————0│33155│nu_plugin_core_p...4.4GB如果你用过Linux,你可能对ps命令很熟悉。此命令显示系统上所有正在运行的进程及其状态和名称。我们还可以看到他们的CPU使用率。如果要显示正在使用CPU的进程怎么办?和之前使用ls命令一样,我们也可以使用ps命令返回的表:>ps|wherecpu>10────┬────────┬──────────────────────┬────────────┬──────────┬────────────────────────────────────────#│pid│名称│状态│cpu│内存│虚拟────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼────────────┼──────────┼──────────────────────────────0│3971│GoogleChromeHe│运行│5.1263│99.4MB│5.5Gb1│i│iterm2│运行│6.6635│218.6MB│6.0GB────────────────────────────┴───────────────────────────────────────────────────e───────────────────────────────────────────────────────────────────────┴──────────────────────────────────到目前为止,已经看到使用ls和ps列出文件和过程。Nu还提供了其他可以创建有用信息表的命令。接下来,让我们继续探索。运行日期会给出当前的日期和时间信息:>date────────────┬────────年│2021月│3day│8hour│09minute│10second│17timezone│+08:00────────────┴──────────是不是比bash的输出清晰多了?对比bash的输出,为了格式化,需要查看格式化命令MonMar812:38:47CST2021runningsys会给出Nu正在运行的系统信息:>sys─────────────────────────────────────────────────────────────────────────────────────────────────主机│[row7columns]cpu│[rowcorescurrentghzmaxghzminghz]disks│[table2rows]mem│[rowfreeswapfreeswaptotaltotal]net│[table11rows]电池│[table1rows]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────和之前的表有些不同。sys命令给出的表格在单元格中包含其他结构化表格,即表格是嵌套的,而不是简单的值。为了查看这些数据,我们需要选择要查看的列:>sys|gethost──────────────────────────────────────────────────────────────────────────名称│Linuxrelease│5.3。0-1019-azureversion│#20-UbuntuSMPFriMar2723:54:23UTC2020hostname│lifelessarch│x86_64uptime│8:03:47:32sessions│[table2rows]──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────get命令可以跳转到表中某一列的内容。因此,您正在查看主机列,其中包含有关运行Nu的主机、操作系统名称、主机名、CPU、体系结构等信息。让我们看看系统上的用户名:>sys|gethost.sessions────┬──────────#│
