常用指令:与 Bash 比较
| bash | nushell | 任务 |
|---|
ls | ls | 列出当前目录中的文件 |
ls <dir> | ls <dir> | 列出给定目录中的文件 |
ls pattern* | ls pattern* | 列出与给定模式匹配的文件 |
ls -la | ls --long --all 或者 ls -la | 列出包含所有可用信息的文件,包括隐藏文件 |
ls -d */ | ls | where type == dir | 列出目录 |
find . -name *.rs | ls **/*.rs | 递归查找与给定模式匹配的所有文件 |
find . -name Makefile | xargs vim | ls **/Makefile | get name | vim ...$in | 将值作为命令参数传递 |
cd <directory> | cd <directory> | 更改到给定目录 |
cd | cd | 切换到主目录 |
cd - | cd - | 切换到上一个目录 |
mkdir <path> | mkdir <path> | 创建给定的路径 |
mkdir -p <path> | mkdir <path> | 创建给定路径,并根据需要创建父路径 |
touch test.txt | touch test.txt | 创建文件 |
> <path> | out> <path> 或者 o> <path> | 将命令输出保存到文件 |
| | save <path> | 将命令输出作为结构化数据保存到文件中 |
>> <path> | out>> <path> 或者 o>> <path> | 将命令输出附加到文件 |
| | save --append <path> | 将命令输出作为结构化数据附加到文件 |
> /dev/null | | ignore | 丢弃命令输出 |
> /dev/null 2>&1 | out+err>| ignore 或者 o+e>| ignore | 丢弃命令输出,包括 stderr |
command 2>&1 | less | command out+err>| less 或者 command o+e>| less | 将外部命令的 stdout 和 stderr 通过管道传输到 less 中(注意:使用 explore 对内部命令进行分页输出) |
cmd1 | tee log.txt | cmd2 | cmd1 | tee { save log.txt } | cmd2 | Tee 命令输出到日志文件 |
command | head -5 | command | first 5 | 将输出限制为内部命令的前 5 行(另请参阅 last 和 skip) |
cat <path> | open --raw <path> | 显示给定文件的内容 |
| open <path> | 将文件读取为结构化数据 |
mv <source> <dest> | mv <source> <dest> | 将文件移动到新位置 |
for f in *.md; do echo $f; done | ls *.md | each { $in.name } | 遍历列表并返回结果 |
for i in $(seq 1 10); do echo $i; done | for i in 1..10 { print $i } | 遍历列表并对结果运行命令 |
cp <source> <dest> | cp <source> <dest> | 将文件复制到新位置 |
cp -r <source> <dest> | cp -r <source> <dest> | 递归地将目录复制到新位置 |
rm <path> | rm <path> | 删除给定的文件 |
| rm -t <path> | 将给定文件移至系统垃圾 |
rm -rf <path> | rm -r <path> | 递归删除给定的路径 |
date -d <date> | "<date>" | into datetime -f <format> | 解析日期(格式文档) |
sed | str replace | 查找并替换字符串中的模式 |
grep <pattern> | where $it =~ <substring> 或者 find <substring> | 过滤包含子字符串的字符串 |
man <command> | help <command> | 获取给定命令的帮助 |
| help commands | 列出所有可用命令 |
| help --find <string> | 在所有可用命令中搜索匹配 |
command1 && command2 | command1; command2 | 运行一个命令,如果成功则运行第二个命令 |
stat $(which git) | stat ...(which git).path | 使用命令输出作为其他命令的参数 |
echo /tmp/$RANDOM | $"/tmp/(random int)" | 在字符串中使用命令输出 |
cargo b --jobs=$(nproc) | cargo b $"--jobs=(sys cpu | length)" | 在选项中使用命令输出 |
echo $PATH | $env.PATH(非 Windows)或 $env.Path(Windows) | 查看当前路径 |
echo $? | $env.LAST_EXIT_CODE | 查看最后执行的命令的退出状态 |
<update ~/.bashrc> | vim $nu.config-path | 永久更新 PATH |
export PATH = $PATH:/usr/other/bin | $env.PATH = ($env.PATH | append /usr/other/bin) | 临时更新 PATH |
export | $env | 列出当前环境变量 |
<update ~/.bashrc> | vim $nu.config-path | 永久更新环境变量 |
FOO=BAR ./bin | FOO=BAR ./bin | 暂时更新环境 |
export FOO=BAR | $env.FOO = BAR | 为当前会话设置环境变量 |
echo $FOO | $env.FOO | 使用环境变量 |
echo ${FOO:-fallback} | $env.FOO? | default "ABC" | 使用 fallback 代替未设置的变量 |
unset FOO | hide-env FOO | 取消设置当前会话的环境变量 |
alias s="git status -sb" | alias s = git status -sb | 临时定义别名 |
type FOO | which FOO | 显示有关命令(内置命令、别名命令或可执行命令)的信息 |
<update ~/.bashrc> | vim $nu.config-path | 永久添加和编辑别名(适用于新 shell) |
bash -c <commands> | nu -c <commands> | 运行命令管道 |
bash <script file> | nu <script file> | 运行脚本文件 |
\ | ( <command> ) | ( 使用 and 包裹时命令可以跨越多行 ) |
pwd 或者 echo $PWD | pwd 或者 $env.PWD | 显示当前目录 |
read var | let var = input | 获取用户输入 |
read -s secret | let secret = input -s | 从用户那里获取秘密值而不打印击键 |
nushell 使用实例
对 json 中列表排序后复制到剪切板
open C:\Users\zhang\AppData\Roaming\Code\User\keybindings.json | sort-by key | to json --indent 4 | clip