Nushell
安装 Nu !
快速开始
  • Nushell 之书
  • 命令参考列表
  • 实战指南
  • 语言参考指南
  • 贡献指南
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
  • 한국어
GitHub
安装 Nu !
快速开始
  • Nushell 之书
  • 命令参考列表
  • 实战指南
  • 语言参考指南
  • 贡献指南
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
  • 한국어
GitHub
  • 简介
  • 安装
    • 默认 Shell
  • 快速入门
    • 快速入门
    • 在系统中四处移动
    • 用 Nu 的方式思考
    • Nushell 速查表
  • Nu 基础篇
    • 数据类型
    • 加载数据
    • 管道
    • 处理字符串
    • 处理列表
    • 处理记录(Records)
    • 处理表格
    • 导航和访问结构化数据
    • 特殊变量
  • Nushell 编程
    • 自定义命令
    • 别名
    • 运算符
    • 变量
    • 控制流
    • 脚本
    • 模块
      • 使用模块
      • 创建模块
    • 覆层
    • 排序
    • 测试你的 Nushell 代码
    • 脚本调试
    • 最佳实践
  • Nu 作为 Shell 使用
    • 配置
    • 环境
    • 标准输入、输出和退出码
    • 运行系统(外部)命令
    • 如何配置第三方提示
    • 目录栈
    • Reedline,Nu 的行编辑器
    • 自定义补全
    • 外部命令
    • Nu 的配色和主题
    • 钩子
    • 后台任务
  • 迁移到 Nu
    • 从 Bash 到 Nu
    • 从 CMD.EXE 到 Nu
    • 从 PowerShell 到 Nu
    • 从其他 Shell 或 DSL 到 Nu
    • 从命令式语言到 Nu
    • 从函数式语言到 Nu
    • Nushell 运算符
  • 设计说明
    • Nushell代码执行原理
  • (不怎么)高级篇
    • 标准库 (预览版)
    • Dataframes
    • 元数据
    • 创建你自己的错误
    • 并行
    • 插件
    • explore
    • 使用 tui 构建终端用户界面
    • MCP 服务器

从 PowerShell 到 Nu

提示

PowerShell 管道传递的是丰富的 .NET 对象,支持通过 $process.Name 等语法直接访问属性,或者直接将对象通过管道传递给支持该对象的 cmdlet。

相比之下,Nushell 管道传递的是表格、列表和值等结构化数据。
这意味着:

  • 不支持 .PropertyName 语法访问属性
  • 改用 get column、select、$it.column 或表格操作
  • 命令始终接收可预测的结构化输入,而非字符串或 .NET 类型 :::

等价命令参考:

PowerShellNu任务
Get-ChildItemls列出当前目录中的文件
Get-ChildItem <dir>ls <dir>列出指定目录中的文件
Get-ChildItem pattern*ls pattern*模式匹配文件
Get-ChildItem -Force -File -Hiddenls --long --all 或 ls -la详细列出文件(包含隐藏文件)
Get-ChildItem | Where-Object { $_.PSIsContainer }ls | where type == dir仅列出目录
Get-ChildItem -Recurse -Filter *.rsls **/*.rs递归搜索文件
Get-ChildItem -Recurse Makefile | Select-Object -Expand Namels **/Makefile | get name | vim ...$in将匹配的文件路径传递给命令
Set-Location <dir>cd <dir>切换目录
Set-Locationcd返回主目录
Set-Location -cd -返回上一个目录
New-Item -ItemType Directory <path>mkdir <path>创建目录
New-Item test.txttouch test.txt创建文件
command | Out-File <path>out> <path> 或 o> <path>保存输出到文件(原始文本)
command | Set-Content <path>| save <path>保存输出到文件(结构化)
command | Out-File -Append <path>out>> <path> 或 o>> <path>追加输出到文件
| save --append <path>追加结构化输出
command | Out-Null| ignore丢弃输出
cmd1 | Tee-Object -FilePath log.txt | cmd2cmd1 | tee { save log.txt } | cmd2将输出同时保存到文件
command | Select-Object -First 5command | first 5限制输出前 N 行
Get-Content <path>open --raw <path>显示文件内容
Move-Item <source> <dest>mv <source> <dest>移动文件
Get-ChildItem *.md | ForEach-Object { $_.Name }ls *.md | each { $in.name }遍历列表值
foreach ($i in 1..10) { $i }for i in 1..10 { print $i }遍历指定范围
Copy-Item <source> <dest>cp <source> <dest>复制文件
Copy-Item -Recurse <source> <dest>cp -r <source> <dest>递归复制目录
Remove-Item <path>rm <path>删除文件
rm -t <path>将文件移至回收站
Remove-Item -Recurse -Force <path>rm -r <path>递归删除目录
Get-Date "<date>""<date>" | into datetime -f <format>解析日期
"<str>" -replace 'a','b'str replace "a" "b"替换子字符串
Select-String <pattern>where $it =~ <pattern> 或 find <pattern>搜索文本
Get-Help <command>help <command>查看命令帮助
Get-Commandhelp commands列出所有命令
Get-Command "*<string>*"help --find <string>搜索命令
command1; if ($?) { command2 }command1; command2仅在第一个命令成功时运行第二个命令
/tmp/$((Get-Random))$"/tmp/(random int)"字符串插值
$env:Path$env.PATH 或 $env.Path显示 PATH
$LASTEXITCODE$env.LAST_EXIT_CODE上一个外部命令的退出码
$env:PATH += ":/usr/bin"$env.PATH = ($env.PATH | append /usr/bin)更新 PATH(临时生效)
Get-ChildItem Env:$env列出环境变量
$env:FOO$env.FOO访问环境变量
Remove-Item Env:FOOhide-env FOO取消设置环境变量
Set-Alias s "git status -sb"alias s = git status -sb临时别名
Get-Command FOOwhich FOO检查命令 / 别名 / 二进制文件
powershell -Command "<commands>"nu -c <commands>运行内联管道
.\script.ps1nu <script file>运行脚本文件
Get-Location 或 $PWDpwd 或 $env.PWD显示当前工作目录
Read-Hostlet var = input读取用户输入
Read-Host -AsSecureStringlet secret = input -s读取私密输入

按 ESC 键清空命令行缓冲区

在旧版本的 PowerShell 中,支持通过按 ESC 键清空命令行缓冲区。

虽然 Nu 默认并未提供完全一致的按键行为,但你可以在 config.nu 中添加快捷键绑定以实现类似的功能:

$env.config.keybindings ++= [{
    name: 'esc_clear'
    modifier: 'None'
    keycode: 'Esc'
    mode: ['Emacs', 'Vi_Normal']
    event: {edit: 'Clear'}
}]
在GitHub上编辑此页面
Contributors: Jianjun Wang, passionworkeer
Prev
从 CMD.EXE 到 Nu
Next
从其他 Shell 或 DSL 到 Nu