终端神器 NuShell

iShot2021-07-24 16.36.03.jpg

今天要给大家介绍一个生产力工具Shell,它叫Nushell,它是用Rust写的,安全性提高的同时,Bug率也降低了,NuShell 专注于实现以下目标:

  • 创建具有现代感的灵活的跨平台Shell

  • 允许你将命令行应用程序与可理解数据结构的Shell进行混合和匹配

  • 具有现代命令行应用程序提供的用户体验优化

在 Linux / macOS 系统上运行 NuShell 的最简单快捷的方法是从 crates.io 安装 ,或从我们的 Github 发布页面下载预构建的二进制文件 。

对于任何 Linux 发行版来说,最理想的安装方法是二进制方法。我们将使用 curl 工具获取最新版本,下载然后解压缩文件以获得 Nushell 二进制文件。

Git地址:https://github.com/nushell/nushell

官方文档:https://www.nushell.sh/zh-cn/book/installation.html

Demo地址:https://www.nushell.sh/demo/

MacOS 安装

$ brew install nushell

安装过程需要几分钟,有50M+

示例

了解 Nu 可以做什么的最简单方式就是通过一些例子,所以让我们沉浸进去吧。

当你运行一个类似 ls 的命令时,第一个注意到的是所得到的不是一个文本块,而是一个结构化的表。

➜  ~ ls
Applications      Documents         Movies            Pictures          logs
Desktop           Downloads         Music             Public            node_modules
Docker            Library           MyLibrary         WorkSpace         package-lock.json

使用 nu

➜  ~ nu
Welcome to Nushell 0.33.0 (type 'help' for more info)
/Users/tingfeng> ls
────┬───────────────────┬──────┬────────┬──────────────
 #  │       name        │ type │  size  │   modified
────┼───────────────────┼──────┼────────┼──────────────
  0 │ Applications      │ Dir  │   96 B │ 1 month ago
  1 │ Desktop           │ Dir  │  256 B │ 1 min ago
  2 │ Docker            │ Dir  │  128 B │ 6 months ago
  3 │ Documents         │ Dir  │ 1.3 KB │ 2 weeks ago
  4 │ Downloads         │ Dir  │  512 B │ 1 min ago
  5 │ Library           │ Dir  │ 2.4 KB │ 1 day ago
  6 │ Movies            │ Dir  │  192 B │ 2 weeks ago
  7 │ Music             │ Dir  │  192 B │ 3 weeks ago
  8 │ MyLibrary         │ Dir  │  320 B │ 2 weeks ago
  9 │ Pictures          │ Dir  │  544 B │ 1 month ago
 10 │ Public            │ Dir  │  128 B │ 1 month ago
 11 │ WorkSpace         │ Dir  │  192 B │ 1 month ago
 12 │ logs              │ Dir  │  160 B │ 1 week ago
 13 │ node_modules      │ Dir  │   96 B │ 5 days ago
 14 │ package-lock.json │ File │  299 B │ 5 days ago
────┴───────────────────┴──────┴────────┴──────────────

/Users/tingfeng>

这个表不仅仅是用另一种方式显示了当前目录。就像电子表格中的表一样,我们可以更加交互性地处理数据。

我们做的第一件事是将表格通过尺寸来排序。为了做到这点,我们将会把 ls 的输出喂给一个可以根据列的内容来排序表格的命令。

常用命令如下

  • ls | sort-by size(正序排列)

  • ls | sort-by size | reverse(倒叙排列)

  • ls | where size > 1kb(大小超过1Kb)

  • ps | where cpu > 1(Cpu 使用率超过1)

  • ls *.md(查找文件)

  • ls **/*.md(递归查找文件)

  • ls | get name(name列数据)

  • ls | select name size(name、size列数据)

  • ls | sort-by name(name排序)

  • ls | sort-by size | first 5(size排序后的前5条记录)

  • ls | sort-by size | first 5 | skip 2(size排序后的前5条记录跳过前2条)

 /Users/tingfeng> ls | sort-by size
────┬───────────────────┬──────┬────────┬──────────────
 #  │       name        │ type │  size  │   modified
────┼───────────────────┼──────┼────────┼──────────────
  0 │ Applications      │ Dir  │   96 B │ 1 month ago
  1 │ node_modules      │ Dir  │   96 B │ 5 days ago
  2 │ Docker            │ Dir  │  128 B │ 6 months ago
  3 │ Public            │ Dir  │  128 B │ 1 month ago
  4 │ logs              │ Dir  │  160 B │ 1 week ago
  5 │ Movies            │ Dir  │  192 B │ 2 weeks ago
  6 │ Music             │ Dir  │  192 B │ 3 weeks ago
  7 │ WorkSpace         │ Dir  │  192 B │ 1 month ago
  8 │ Desktop           │ Dir  │  256 B │ 4 mins ago
  9 │ package-lock.json │ File │  299 B │ 5 days ago
 10 │ MyLibrary         │ Dir  │  320 B │ 2 weeks ago
 11 │ Downloads         │ Dir  │  512 B │ 4 mins ago
 12 │ Pictures          │ Dir  │  544 B │ 1 month ago
 13 │ Documents         │ Dir  │ 1.3 KB │ 2 weeks ago
 14 │ Library           │ Dir  │ 2.4 KB │ 1 day ago
────┴───────────────────┴──────┴────────┴──────────────


/Users/tingfeng> ps | where cpu > 1
───┬──────┬────────────────────────────┬────────┬────────┬──────────┬─────────
 # │ pid  │            name            │ status │  cpu   │   mem    │ virtual
───┼──────┼────────────────────────────┼────────┼────────┼──────────┼─────────
 0 │ 2099 │ DingTalk Helper            │ Run    │ 3.6740 │ 220.5 MB │  5.7 GB
 1 │  967 │ pycharm                    │ Run    │ 3.0096 │   1.8 GB │ 12.4 GB
 2 │  468 │ Google Chrome              │ Run    │ 2.6975 │ 283.0 MB │  6.0 GB
 3 │  521 │ WeChat                     │ Run    │ 1.8022 │ 456.0 MB │  7.4 GB
 4 │  922 │ iTerm2                     │ Run    │ 1.0784 │ 156.1 MB │  5.8 GB
 5 │ 2093 │ DingTalk                   │ Run    │ 5.2958 │ 258.5 MB │  7.4 GB
 6 │  572 │ Google Chrome Helper (GPU) │ Run    │ 8.8588 │ 231.6 MB │  5.4 GB
───┴──────┴────────────────────────────┴────────┴────────┴──────────┴─────────

date 日期操作

/Users/tingfeng> date now
2021-07-24 17:04:32.795659 +08:00

/Users/tingfeng> date to-table
───┬──────┬───────┬─────┬──────┬────────┬────────┬──────────
 # │ year │ month │ day │ hour │ minute │ second │ timezone
───┼──────┼───────┼─────┼──────┼────────┼────────┼──────────
 0 │ 2021 │     7 │  24 │   17 │      4 │     42 │ +08:00
───┴──────┴───────┴─────┴──────┴────────┴────────┴──────────

sys 系统信息

sys 命令给出的表在单元格内包含了另一些结构化的表格,而非简单的数值。为了查看到这些数据,我们需要选择要看的列:

/Users/tingfeng> sys
───┬─────────────────────────────┬─────────────────┬────────────────┬─────────────────────────────────┬────────────────┬─────────────────
 # │            host             │       cpu       │     disks      │               mem               │      temp      │       net
───┼─────────────────────────────┼─────────────────┼────────────────┼─────────────────────────────────┼────────────────┼─────────────────
 0 │ [row name os version kernel │ [table 12 rows] │ [table 2 rows] │ [row total free swap total swap │ [table 4 rows] │ [table 20 rows]
   │ version hostname uptime     │                 │                │ free]                           │                │
   │ sessions]                   │                 │                │                                 │                │
───┴─────────────────────────────┴─────────────────┴────────────────┴─────────────────────────────────┴────────────────┴─────────────────

/Users/tingfeng> sys | get host
───┬────────┬────────────┬────────────────┬─────────────────────────────┬─────────────────┬────────────────
 # │  name  │ os version │ kernel version │          hostname           │     uptime      │    sessions
───┼────────┼────────────┼────────────────┼─────────────────────────────┼─────────────────┼────────────────
 0 │ Darwin │ 11.5       │ 20.6.0         │ tingfengdeMacBook-Pro.local │ 2hr 10min 34sec │ [table 3 rows]
───┴────────┴────────────┴────────────────┴─────────────────────────────┴─────────────────┴────────────────




未经允许请勿转载:程序喵 » 终端神器 NuShell

点  赞 (0) 打  赏
分享到: