在系统中四处移动
早期的 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
文件系统命令
Nu 还提供了一些基本的文件系统命令,并且可以跨平台工作。
我们可以使用 mv
命令将一个目录或文件从一个地方移动到另一个地方:
> mv item location
我们可以通过 cp
命令把一个目录或文件从一个地方复制到另一个地方:
> cp item location
警告
cp
在 Windows 系统,即使目标文件存在,命令也没有附加 --force, -f
,目标文件仍会被覆盖!
我们也可以通过 rm
命令删除一个目录或文件:
> rm item
这三个命令也可以使用我们先前看到的 ls
的 Glob 功能。
最后,我们可以使用 mkdir
命令创建一个新目录:
> mkdir new_directory