Nushell
书
Cookbook
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
书
Cookbook
博客
  • English
  • 中文
  • Deutsch
  • Français
  • Español
  • 日本語
  • Português do Brasil
  • Русский язык
GitHub
  • 入门篇

    • 介绍
    • 安装 Nu
    • 以 Nushell 的方式思考
    • 在系统中四处移动
  • Nu 基础篇

    • 数据类型
    • 加载数据
    • 处理字符串
    • 处理列表
    • 处理表格
    • 管道
    • 命令索引
  • Nushell 编程

    • 自定义命令
    • 别名
    • 运算符
    • 变量和子表达式
    • 脚本
    • 模块
    • 覆层
  • Nu 作为 Shell 使用

    • 配置
    • 环境
    • 标准输入、输出和退出码
    • 转移到系统
    • 配置第三方提示
    • Shell 中的 Shell
    • Reedline,Nu 的行编辑器
    • 外部命令
    • 自定义补全
    • Nu 的配色和主题
    • 钩子
  • 迁移到 Nu

    • 从 Bash 到 Nu
    • 从其他 Shell 或 DSL 到 Nu
    • 从命令式语言到 Nu
    • 从函数式语言到 Nu
    • Nushell 运算符
  • 高级篇

    • DataFrames
    • 元数据
    • 创建你自己的错误
    • 并行
    • 插件

在系统中四处移动

早期的 Shell 允许你在文件系统中进行目录跳转并运行命令,而现代的 Shell 如 Nu 也允许你这样做。让我们来看看你在与系统交互时可能会用到的一些常用命令。

查看目录内容

ls

正如我们在其他章节中所看到的,ls 是一个用于查看路径内容的命令。Nu 将以表格的形式返回内容并供我们使用。

ls 命令还需要一个可选的参数,以改变你想查看的内容。例如,我们可以列出以 .md 结尾的文件:

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

通配符

上述可选参数 *.md 中的星号(*)有时被称为通配符(wildcards)或 Glob,它让我们可以匹配任何东西。你可以把 glob *.md 理解为“匹配以 .md 结尾的任何文件名”。

最通用的通配符是 *,能够匹配所有路径。它经常和其他模式(pattern)组合使用,比如 *.bak 和 temp*。

Nu 也使用现代 Globs,它允许你访问更深的目录。比如,ls **/*.md 将递归地罗列当前目录下、所有后缀为 .md 的非隐藏文件:

 ls **/*.md
───┬───────────────────────────────────────────┬──────┬─────────┬───────────
 # │ name                                      │ type │ size    │ modified
───┼───────────────────────────────────────────┼──────┼─────────┼───────────
 0 │ CODE_OF_CONDUCT.md                        │ File │  3.4 KB │ 5 days ago
 1 │ CONTRIBUTING.md                           │ File │   886 B │ 5 days ago
 2 │ README.md                                 │ File │ 15.0 KB │ 5 days ago
 3 │ TODO.md                                   │ File │  1.6 KB │ 5 days ago
 4 │ crates/nu-source/README.md                │ File │  1.7 KB │ 5 days ago
 5 │ docker/packaging/README.md                │ File │  1.5 KB │ 5 days ago
 6 │ docs/commands/README.md                   │ File │   929 B │ 5 days ago
 7 │ docs/commands/alias.md                    │ File │  1.7 KB │ 5 days ago
 8 │ docs/commands/append.md                   │ File │  1.4 KB │ 5 days ago
  • ** 表示“从这里开始的任何目录中”;
  • *.md 表示“任意后缀为 .md 的文件名”(不包括隐藏文件,要额外添加 --all, -a 选项);
  • 除了 *,还有 ? 用来匹配单个字符。比如,可以使用 p??? 模式匹配 port 字符串。

结合 字符串的处理 能够写出更强大的模式。但是,请牢记 Nu 类似一种 编译型语言。

改变当前目录

cd new_directory

要从当前目录换到一个新目录,我们使用 cd 命令。就像在其他 Shells 中一样,我们可以使用目录的名称,或者如果我们想进入父目录,我们可以使用 .. 的快捷方式。

如果 cd 被省略,只给出一个路径本身,也可以改变当前工作目录:

./new_directory

注意

用 cd 改变目录会改变 PWD 环境变量。这意味着目录的改变会保留到当前代码块中,一旦你退出这个代码块,你就会返回到以前的目录。你可以在 环境篇 中了解更多关于这方面的信息。

文件系统命令

Nu 还提供了一些基本的文件系统命令,并且可以跨平台工作。

我们可以使用 mv 命令将一个目录或文件从一个地方移动到另一个地方:

mv item location

我们可以通过 cp 命令把一个目录或文件从一个地方复制到另一个地方:

cp item location

我们也可以通过 rm 命令删除一个目录或文件:

rm item

这三个命令也可以使用我们先前看到的 ls 的 Glob 功能。

最后,我们可以使用 mkdir 命令创建一个新目录:

mkdir new_directory
在GitHub上编辑此页面
Contributors: Ibraheem Ahmed, Justin Ma, Hofer-Julian, CAESIUS-TIM, NotTheDr01ds, Chen1Plus
Prev
以 Nushell 的方式思考