成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Rust寫的NuShell用起來真香

系統
數年來,shell作為我們和操作系統通訊的方式,本質上是一個命令解釋器,它接收我們輸入的命令(如ls,cat等),然后調用相應的應用程序。

[[386553]]

 數年來,shell作為我們和操作系統通訊的方式,本質上是一個命令解釋器,它接收我們輸入的命令(如ls,cat等),然后調用相應的應用程序。

如今你可能還在使用古老的bash和sh,或者看上去稍微不錯的zsh,ksh,csh這些shell,還是在Windows下使用的PowerShell。今天我要給大家介紹一個生產力工具(裝逼神器)Shell,它叫Nushell,關鍵是它用程序員最喜歡的Rust寫的,速度飛快,作為內核的界面,用Rust重寫Shell安全性提高了,bug率降低了。

NuShell從許多熟悉的領域中汲取了線索:bash 等傳統 shell,PowerShell 等高級 shell,函數式編程,系統編程等。但是NuShell 并沒有試圖成為所有行業的杰作,而是將精力集中在做好一些事情上:

  • 創建具有現代感的靈活的跨平臺Shell
  • 允許你將命令行應用程序與可理解數據結構的Shell進行混合和匹配
  • 具有現代命令行應用程序提供的用戶體驗優化
  • 用強大的管道控制你的操作系統
  • 一切都是數據,并可以像sql一樣查詢數據
  • 插件系統,你可以擴展Shell通過自己編寫插件的方式

當你運行一個類似 ls 的命令時,第一個注意到的是所得到的不是一個文本塊,而是一個結構化的表

  1. > ls *.md 
  2. ───┬────────────────────┬──────┬─────────┬──────────── 
  3.  # │ name               │ type │ size    │ modified  
  4. ───┼────────────────────┼──────┼─────────┼──────────── 
  5.  0 │ CODE_OF_CONDUCT.md │ File │  3.4 KB │ 5 days ago  
  6.  1 │ CONTRIBUTING.md    │ File │   886 B │ 5 days ago  
  7.  2 │ README.md          │ File │ 15.0 KB │ 5 days ago  
  8.  3 │ TODO.md            │ File │  1.6 KB │ 5 days ago  
  9. ───┴────────────────────┴──────┴─────────┴──────────── 

這個表不僅僅是用另一種方式顯示了當前目錄。就像電子表格中的表一樣,可以更加交互性地處理數據。

比如,可以做的第一件事是把表格通過文件的大小來排序。

  1. > ls | sort-by size | reverse 
  2. ────┬────────────────────┬──────┬────────┬──────────── 
  3.  #  │ name               │ type │ size   │ modified 
  4. ────┼────────────────────┼──────┼────────┼──────────── 
  5.   0 │ Gemfile.lock       │ File │ 6.9 KB │ 3 days ago 
  6.   1 │ SUMMARY.md         │ File │ 3.7 KB │ 3 days ago 
  7.   2 │ Gemfile            │ File │ 1.1 KB │ 3 days ago 
  8.   3 │ LICENSE            │ File │ 1.1 KB │ 3 days ago 
  9.   4 │ CONTRIBUTING.md    │ File │  955 B │ 9 mins ago 
  10.   5 │ books.md           │ File │  687 B │ 3 days ago 
  11. ... 

可以看到我們沒有給 ls 傳遞命令行參數。作為代替,使用了Nu提供的sort-by命令來排序ls的輸出。為了讓最大的文件位于頂部,還使用了reverse。

Nu提供了許多可在表格上工作的命令。例如,可以過濾ls表格,只顯示大于1 KB的文件

  1. > ls | where size > 1kb 
  2. ───┬──────────────┬──────┬────────┬──────────── 
  3.  # │ name         │ type │ size   │ modified 
  4. ───┼──────────────┼──────┼────────┼──────────── 
  5.  0 │ Gemfile      │ File │ 1.1 KB │ 3 days ago 
  6.  1 │ Gemfile.lock │ File │ 6.9 KB │ 3 days ago 
  7.  2 │ LICENSE      │ File │ 1.1 KB │ 3 days ago 
  8.  3 │ SUMMARY.md   │ File │ 3.7 KB │ 3 days ago 
  9. ───┴──────────────┴──────┴────────┴──────────── 

就像 Unix 哲學,命令是可以互相組合起來,通過管道符鏈接.

接著看下一個命令ps

  1. > ps 
  2. ─────┬───────┬──────────────────┬─────────┬─────────┬──────────┬───────── 
  3.  #   │ pid   │ name             │ status  │ cpu     │ mem      │ virtual 
  4. ─────┼───────┼──────────────────┼─────────┼─────────┼──────────┼───────── 
  5.    0 │ 33155 │ nu_plugin_core_p │ Running │  3.8496 │   1.8 MB │  4.4 GB 
  6.    1 │ 32841 │ mdworker_shared  │ Running │  0.0000 │  19.3 MB │  4.4 GB 
  7.    2 │ 32829 │ CoreServicesUIAg │ Running │  0.0000 │  16.1 MB │  4.5 GB 
  8.    3 │ 32828 │ mdworker_shared  │ Running │  0.0000 │  23.0 MB │  4.4 GB 

如果你使用過Linux,可能會對ps命令相當熟悉。這個命令展示了系統所有正在運行的進程和它們的狀態與名稱。我們同樣可以查看到它們的 CPU 占用。

如果想顯示正在使用 CPU 的進程怎么辦?就像之前使用ls命令一樣,我們也可以使用ps命令返回的表:

  1. > ps | where cpu > 10 
  2. ───┬──────┬──────────────────┬─────────┬────────┬──────────┬───────── 
  3.  # │ pid  │ name             │ status  │ cpu    │ mem      │ virtual 
  4. ───┼──────┼──────────────────┼─────────┼────────┼──────────┼───────── 
  5.  0 │ 3971 │ Google Chrome He │ Running │ 5.1263 │  99.4 MB │  5.5 GB 
  6.  1 │  360 │ iTerm2           │ Running │ 6.6635 │ 218.6 MB │  6.0 GB 
  7. ───┴──────┴──────────────────┴─────────┴────────┴──────────┴───────── 

到目前為止,已經看到使用ls和ps列出文件和進程。Nu 還提供了其他可以創建有用信息表的命令。

接下來,讓我們繼續探索。

運行date將給出當前日期與時間的信息:

  1. date 
  2. ──────────┬──────── 
  3.  year     │ 2021 
  4.  month    │ 3 
  5.  day      │ 8 
  6.  hour     │ 09 
  7.  minute   │ 10 
  8.  second   │ 17 
  9.  timezone │ +08:00 
  10. ──────────┴──────── 

是不是比bash輸出的要清晰好多,對比下bash的輸出, 為了格式化,還需要查格式化命令

  1. Mon Mar  8 12:38:47 CST 2021 

運行sys將給出Nu所運行的系統的信息:

  1. > sys 
  2. ─────────┬───────────────────────────────────────── 
  3.  host    │ [row 7 columns] 
  4.  cpu     │ [row cores current ghz max ghz min ghz] 
  5.  disks   │ [table 2 rows
  6.  mem     │ [row free swap free swap total total] 
  7.  net     │ [table 11 rows
  8.  battery │ [table 1 rows
  9. ─────────┴───────────────────────────────────────── 

和之前的表有些不一樣, sys命令給出的表在單元格內包含了另一些結構化的表格,也就是表格嵌套了,而非簡單的數值。為了查看到這些數據,我們需要選擇要看的列:

  1. > sys | get host 
  2. ──────────┬───────────────────────────────────────────── 
  3.  name     │ Linux 
  4.  release  │ 5.3.0-1019-azure 
  5.  version  │ #20-Ubuntu SMP Fri Mar 27 23:54:23 UTC 2020 
  6.  hostname │ lifeless 
  7.  arch     │ x86_64 
  8.  uptime   │ 8:03:47:32 
  9.  sessions │ [table 2 rows
  10. ──────────┴───────────────────────────────────────────── 

get命令可以跳入表格中一列的內容。這樣,正在觀看 host 列,它包含了關于 Nu 所運行的主機的信息、操作系統的名字、主機名、CPU、架構等等。讓我們看看系統上的用戶名:

  1. > sys | get host.sessions 
  2. ───┬───────── 
  3.  # │ <value> 
  4. ───┼───────── 
  5.  0 │ jonathan 
  6. ───┴───────── 

目前,系統上只有一個用戶,名為 jonathan。你會注意到,我可以傳遞路徑( host.sessions 部分),而不僅僅是傳遞列名。Nu 將采用該路徑并轉到表中的相應數據位置。

你可能已經注意到其他的不同之處。這次查詢沒有一個數據表,而是只有一個元素:字符串 jonathan。Nu使用數據表和字符串。字符串是在Nu之外使用命令的重要組成部分。

讓我們看看字符串如何在Nu之外起作用。從前面的示例開始,并運行外部的 echo 命令( ^告訴nu不要使用內置的echo命令):

  1. > sys | get host.sessions | ^echo $it 
  2. jonathan 

如果這看起來與以前的傳統Shell非常相似,那么就說明你擁有敏銳的眼睛!相似,但是有一個重要的區別:對前面看到的值調用了 ^echo 。這允許我們將數據從Nu傳遞到echo(或 Nu 外部的任何命令,例如 git)。

注意:Nu 的內建命令的幫助文本可以用 help 來瀏覽:

  1. > help config 
  2. Configuration management. 
  3.  
  4. Usage: 
  5.   > config <subcommand> {flags} 
  6.  
  7. Subcommands: 
  8.   config get - Gets a value from the config 
  9.   config set - Sets a value in the config 
  10.   config set_into - Sets a value in the config 
  11.   config clear - clear the config 
  12.   config load - Loads the config from the path given 
  13.   config remove - Removes a value from the config 
  14.   config path - return the path to the config file 
  15.  
  16. Flags: 
  17.   -h, --help: Display this help message 

安裝Nu

方式1:從 crates.io 安裝

  1. cargo install nu 

方式2:使用 Homebrew,你需要安裝 openssl 和 cmake:

  1. brew install openssl cmake 
  2.  
  3. brew install nushell 

安裝完后,輸入

  1. > nu 

進入Shell,即可嘗試

本文轉載自微信公眾號「碼小菜」,可以通過以下二維碼關注。轉載本文請聯系碼小菜公眾號。

 

責任編輯:武曉燕 來源: 碼小菜
相關推薦

2021-06-30 09:20:18

NuShell工具Linux

2024-05-21 10:28:51

API設計架構

2022-05-22 21:16:46

TypeScriptOmit 工具

2023-02-07 06:55:26

Kafka消費消息

2012-07-11 09:34:39

微軟云計算

2024-07-04 11:33:33

2020-01-06 15:00:43

Linux電腦發行版

2020-07-06 15:13:16

安卓AirDrop無線傳輸

2021-09-18 08:52:45

人工智能

2016-03-17 09:45:17

react雙向綁定插件

2022-09-20 07:46:15

重試組件retrying

2022-11-07 09:25:02

Kafka存儲架構

2015-05-28 10:35:07

前端gulpdemo

2020-11-27 14:28:13

數據分析工具數據庫

2021-09-29 07:13:12

編程 Python Merge

2021-04-18 07:18:31

Chrome

2021-10-29 11:25:41

代碼編程語言Java

2022-12-27 17:56:40

ack機制RocketMQ

2012-12-17 09:54:08

2016-06-12 09:28:46

Ubuntu 16.0升級Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久aaaa九色 | 国产激情精品 | 国产精品久久久久久福利一牛影视 | 日韩亚洲视频 | 久久精品久久综合 | 日韩精品一区中文字幕 | 激情欧美一区二区三区中文字幕 | 欧美亚洲在线视频 | 天天看天天操 | 成人免费视频网站在线看 | 国产精品中文字幕在线播放 | 中文字幕一区二区三区四区五区 | 精品福利一区二区三区 | sese视频在线观看 | 久久99精品视频 | 久久精品国产免费 | 琪琪午夜伦伦电影福利片 | 免费精品一区 | 午夜在线 | 武道仙尊动漫在线观看 | 午夜精品一区二区三区在线观看 | 国产成人精品免费视频大全最热 | 国产成人aⅴ | 九九热精 | 日韩一区二区三区视频 | 欧美亚洲国产日韩 | 国产精品久久久久aaaa九色 | 中文字幕亚洲精品 | 午夜欧美日韩 | 国产成人精品一区二区三区视频 | 国产高清自拍视频在线观看 | 自拍偷拍亚洲欧美 | 久久久久国产一区二区三区 | 91精品久久久久久久久久 | 99精品国产一区二区青青牛奶 | 欧美成人h版在线观看 | 日本久久网站 | 黄色毛片在线观看 | 日韩插插| 成人在线小视频 | 欧美精品tv |