常用指令:与 Bash 比较

bashnushell任务
lsls列出当前目录中的文件
ls <dir>ls <dir>列出给定目录中的文件
ls pattern*ls pattern*列出与给定模式匹配的文件
ls -lals --long --all 或者 ls -la列出包含所有可用信息的文件,包括隐藏文件
ls -d */ls | where type == dir列出目录
find . -name *.rsls **/*.rs递归查找与给定模式匹配的所有文件
find . -name Makefile | xargs vimls **/Makefile | get name | vim ...$in将值作为命令参数传递
cd <directory>cd <directory>更改到给定目录
cdcd切换到主目录
cd -cd -切换到上一个目录
mkdir <path>mkdir <path>创建给定的路径
mkdir -p <path>mkdir <path>创建给定路径,并根据需要创建父路径
touch test.txttouch test.txt创建文件
> <path>out> <path> 或者 o> <path>将命令输出保存到文件
| save <path>将命令输出作为结构化数据保存到文件中
>> <path>out>> <path> 或者 o>> <path>将命令输出附加到文件
| save --append <path>将命令输出作为结构化数据附加到文件
> /dev/null| ignore丢弃命令输出
> /dev/null 2>&1out+err>| ignore 或者 o+e>| ignore丢弃命令输出,包括 stderr
command 2>&1 | lesscommand out+err>| less 或者 command o+e>| less将外部命令的 stdout 和 stderr 通过管道传输到 less 中(注意:使用 explore 对内部命令进行分页输出)
cmd1 | tee log.txt | cmd2cmd1 | tee { save log.txt } | cmd2Tee 命令输出到日志文件
command | head -5command | first 5将输出限制为内部命令的前 5 行(另请参阅 lastskip
cat <path>open --raw <path>显示给定文件的内容
open <path>将文件读取为结构化数据
mv <source> <dest>mv <source> <dest>将文件移动到新位置
for f in *.md; do echo $f; donels *.md | each { $in.name }遍历列表并返回结果
for i in $(seq 1 10); do echo $i; donefor 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>解析日期(格式文档
sedstr replace查找并替换字符串中的模式
grep <pattern>where $it =~ <substring> 或者 find <substring>过滤包含子字符串的字符串
man <command>help <command>获取给定命令的帮助
help commands列出所有可用命令
help --find <string>在所有可用命令中搜索匹配
command1 && command2command1; 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 ./binFOO=BAR ./bin暂时更新环境
export FOO=BAR$env.FOO = BAR为当前会话设置环境变量
echo $FOO$env.FOO使用环境变量
echo ${FOO:-fallback}$env.FOO? | default "ABC"使用 fallback 代替未设置的变量
unset FOOhide-env FOO取消设置当前会话的环境变量
alias s="git status -sb"alias s = git status -sb临时定义别名
type FOOwhich FOO显示有关命令(内置命令、别名命令或可执行命令)的信息
<update ~/.bashrc>vim $nu.config-path永久添加和编辑别名(适用于新 shell)
bash -c <commands>nu -c <commands>运行命令管道
bash <script file>nu <script file>运行脚本文件
\( <command> )( 使用 and 包裹时命令可以跨越多行 )
pwd 或者 echo $PWDpwd 或者 $env.PWD显示当前目录
read varlet var = input获取用户输入
read -s secretlet secret = input -s从用户那里获取秘密值而不打印击键

nushell 使用实例

对 json 中列表排序后复制到剪切板

open C:\Users\zhang\AppData\Roaming\Code\User\keybindings.json | sort-by key | to json --indent 4 | clip